Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. HttpPost Block korrekt aufbauen

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.6k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    848

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

HttpPost Block korrekt aufbauen

Geplant Angeheftet Gesperrt Verschoben Blockly
13 Beiträge 2 Kommentatoren 72 Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • David G.D Online
    David G.D Online
    David G.
    schrieb am zuletzt editiert von
    #1

    Hallo,

    Ich habe einen HttpPist Befehl den ich mit curl am laufen habe.
    Würde das nun gerne mit Blockly erledigen.

    Wie muss ich das aufbauen? Meine versuche scheitern bisher....

    curl -s -X POST http://192.168.99.199/zabbix/api_jsonrpc.php \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer 12345" \
    -d '{
      "jsonrpc":"2.0",
      "method":"host.get",
      "params":{
        "output":["host"],
        "selectItems":["name","lastvalue","units","value_type"]
      },
      "id":1
    }' | jq '
    .result
    | map({
        (.host):
          ( .items
            | map({
                (.name): {
                  value: .lastvalue,
                  unit: .units,
                  value_type: ( 
                    if .value_type=="0" then "number"
                    elif .value_type=="3" then "number"
                    else "string"
                    end
                  )
                }
              })
            | add
          )
      })
    | add
    '
    

    Zeigt eure Lovelace-Visualisierung klick
    (Auch ideal um sich Anregungen zu holen)

    Meine Tabellen für eure Visualisierung klick

    CodierknechtC 1 Antwort Letzte Antwort
    0
    • David G.D David G.

      Hallo,

      Ich habe einen HttpPist Befehl den ich mit curl am laufen habe.
      Würde das nun gerne mit Blockly erledigen.

      Wie muss ich das aufbauen? Meine versuche scheitern bisher....

      curl -s -X POST http://192.168.99.199/zabbix/api_jsonrpc.php \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer 12345" \
      -d '{
        "jsonrpc":"2.0",
        "method":"host.get",
        "params":{
          "output":["host"],
          "selectItems":["name","lastvalue","units","value_type"]
        },
        "id":1
      }' | jq '
      .result
      | map({
          (.host):
            ( .items
              | map({
                  (.name): {
                    value: .lastvalue,
                    unit: .units,
                    value_type: ( 
                      if .value_type=="0" then "number"
                      elif .value_type=="3" then "number"
                      else "string"
                      end
                    )
                  }
                })
              | add
            )
        })
      | add
      '
      
      CodierknechtC Offline
      CodierknechtC Offline
      Codierknecht
      Developer Most Active
      schrieb am zuletzt editiert von
      #2

      @David-G. sagte in HttpPost Block korrekt aufbauen:

      Würde das nun gerne mit Blockly erledigen.

      Geht nicht mit Blockly alleine.

      Mit JS kein Problem:

      function sendZabbix(itemId, content) {
          const payload = {
              "jsonrpc": "2.0",     
              "method": "history.push",     
              "params": [{
                  "itemid": itemId,
                  "value": content
                  }],
              "id": 1
          };
          
          const options = { headers: { 
                  'Content-Type': 'application/json-rpc', 
                  'Authorization': `Bearer ${apiKey}`
              },
              'timeout': 10000
          };
      
          httpPost(zabbixUrl, payload, options, function(error) {
              if (error) console.error(error);
          });
      };
      
      

      "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

      Proxmox 9.1.1 LXC|8 GB|Core i7-6700
      HmIP|ZigBee|Tasmota|Unifi
      Zabbix Certified Specialist
      Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

      1 Antwort Letzte Antwort
      0
      • David G.D Online
        David G.D Online
        David G.
        schrieb am zuletzt editiert von
        #3

        Danke, werde ich testen.
        So eine Post Anfrage ist ja nichts ungewöhnliches.
        Auch wenn ich mittlerweile zu einem Shell Script gewechselt bin, da es für einen Aufruf zu viel wurde.

        Da mache ich jetzt auch ein Topic zu auf ^^.

        Zeigt eure Lovelace-Visualisierung klick
        (Auch ideal um sich Anregungen zu holen)

        Meine Tabellen für eure Visualisierung klick

        CodierknechtC 1 Antwort Letzte Antwort
        0
        • David G.D David G.

          Danke, werde ich testen.
          So eine Post Anfrage ist ja nichts ungewöhnliches.
          Auch wenn ich mittlerweile zu einem Shell Script gewechselt bin, da es für einen Aufruf zu viel wurde.

          Da mache ich jetzt auch ein Topic zu auf ^^.

          CodierknechtC Offline
          CodierknechtC Offline
          Codierknecht
          Developer Most Active
          schrieb am zuletzt editiert von
          #4

          @David-G. sagte in HttpPost Block korrekt aufbauen:

          Auch wenn ich mittlerweile zu einem Shell Script gewechselt bin, da es für einen Aufruf zu viel wurde.

          Das kann man prima in eine JS-Funktion packen und die dann im Blockly aufrufen.

          Was willst Du denn damit machen?
          Du liest Werte aus Zabbix. Warum nicht andersrum? Werte kann man auch aus Zabbix an ioBroker senden.
          Wenn die Werte in Zabbix erhoben werden, wäre dieser Weg logischer.

          "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

          Proxmox 9.1.1 LXC|8 GB|Core i7-6700
          HmIP|ZigBee|Tasmota|Unifi
          Zabbix Certified Specialist
          Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

          1 Antwort Letzte Antwort
          0
          • David G.D Online
            David G.D Online
            David G.
            schrieb am zuletzt editiert von David G.
            #5

            Was ich mit den Daten machen möchte weiß ich noch nicht genau.
            Erstmal in den iobroker bekommen.
            Werden vermutlich in die Visu landen.

            Die json aus meinem Befehl hab ich noch erweitert.
            Im Moment die avg Werte der cpu.

            Wenn ich das result im iobroker habe, mal sehen wie ich die DPs ordentlich anlege.

            #!/bin/bash
            
            ZABBIX_URL="http://192.168.99.199/zabbix/api_jsonrpc.php"
            TOKEN="abc"
            
            # Hosts abrufen (nur aktive Hosts)
            hosts_json=$(curl -s -X POST "$ZABBIX_URL" \
              -H "Content-Type: application/json" \
              -H "Authorization: Bearer $TOKEN" \
              -d '{
                    "jsonrpc":"2.0",
                    "method":"host.get",
                    "params":{
                        "output":["hostid","host"],
                        "filter":{"status":0}
                    },
                    "id":1
                  }')
            
            curl -s -X POST "$ZABBIX_URL" \
              -H "Content-Type: application/json" \
              -H "Authorization: Bearer $TOKEN" \
              -d '{
                    "jsonrpc":"2.0",
                    "method":"item.get",
                    "params":{
                      "output":["hostid","name","key_","lastvalue","units","value_type"],
                      "filter":{
                        "key_":[
                          "system.cpu.load[all,avg1]",
                          "system.cpu.load[all,avg5]",
                          "system.cpu.load[all,avg15]"
                        ]
                      }
                    },
                    "id":1
                  }' \
            | jq --argjson hosts "$hosts_json" '
              ($hosts.result | map({(.hostid): .host}) | add) as $hostnames
              | .result
              | group_by(.hostid)
              | map(select($hostnames[.[0].hostid] != null)       
                  | {
                      ($hostnames[.[0].hostid]): (
                        map({
                          (.name): {
                            value: .lastvalue,
                            unit: .units,
                            value_type: (if .value_type=="0" or .value_type=="3" then "number"
                                         elif .value_type=="1" then "string" else "unknown" end)
                          }
                        }) | add
                      )
                    }
                )
              | add
            ' > zabbix.json
            

            Ergibt

            {
              "Zabbix server": {
                "Load average (1m avg)": {
                  "value": "0.897461",
                  "unit": "",
                  "value_type": "number"
                },
                "Load average (5m avg)": {
                  "value": "0.961426",
                  "unit": "",
                  "value_type": "number"
                },
                "Load average (15m avg)": {
                  "value": "1.078125",
                  "unit": "",
                  "value_type": "number"
                }
              },
              "Taiscale": {
                "Load average (1m avg)": {
                  "value": "0.70459",
                  "unit": "",
                  "value_type": "number"
                },
                "Load average (5m avg)": {
                  "value": "0.916504",
                  "unit": "",
                  "value_type": "number"
                },
                "Load average (15m avg)": {
                  "value": "1.06543",
                  "unit": "",
                  "value_type": "number"
                }
              },
              "MariaDB": {
                "Load average (1m avg)": {
                  "value": "0.976074",
                  "unit": "",
                  "value_type": "number"
                },
                "Load average (5m avg)": {
                  "value": "0.961426",
                  "unit": "",
                  "value_type": "number"
                },
                "Load average (15m avg)": {
                  "value": "1.083984",
                  "unit": "",
                  "value_type": "number"
                }
              },
              "Proxmox_Home": {
                "Load average (1m avg)": {
                  "value": "0.805664",
                  "unit": "",
                  "value_type": "number"
                },
                "Load average (5m avg)": {
                  "value": "0.993652",
                  "unit": "",
                  "value_type": "number"
                },
                "Load average (15m avg)": {
                  "value": "1.090332",
                  "unit": "",
                  "value_type": "number"
                }
              },
              "PBS": {
                "Load average (1m avg)": {
                  "value": "0.033691",
                  "unit": "",
                  "value_type": "number"
                },
                "Load average (5m avg)": {
                  "value": "0.05957",
                  "unit": "",
                  "value_type": "number"
                },
                "Load average (15m avg)": {
                  "value": "0.077637",
                  "unit": "",
                  "value_type": "number"
                }
              },
              "Docker": {
                "Load average (1m avg)": {
                  "value": "0.131836",
                  "unit": "",
                  "value_type": "number"
                },
                "Load average (5m avg)": {
                  "value": "0.342285",
                  "unit": "",
                  "value_type": "number"
                },
                "Load average (15m avg)": {
                  "value": "0.470703",
                  "unit": "",
                  "value_type": "number"
                }
              }
            }
            
            

            Zeigt eure Lovelace-Visualisierung klick
            (Auch ideal um sich Anregungen zu holen)

            Meine Tabellen für eure Visualisierung klick

            CodierknechtC 1 Antwort Letzte Antwort
            0
            • David G.D David G.

              Was ich mit den Daten machen möchte weiß ich noch nicht genau.
              Erstmal in den iobroker bekommen.
              Werden vermutlich in die Visu landen.

              Die json aus meinem Befehl hab ich noch erweitert.
              Im Moment die avg Werte der cpu.

              Wenn ich das result im iobroker habe, mal sehen wie ich die DPs ordentlich anlege.

              #!/bin/bash
              
              ZABBIX_URL="http://192.168.99.199/zabbix/api_jsonrpc.php"
              TOKEN="abc"
              
              # Hosts abrufen (nur aktive Hosts)
              hosts_json=$(curl -s -X POST "$ZABBIX_URL" \
                -H "Content-Type: application/json" \
                -H "Authorization: Bearer $TOKEN" \
                -d '{
                      "jsonrpc":"2.0",
                      "method":"host.get",
                      "params":{
                          "output":["hostid","host"],
                          "filter":{"status":0}
                      },
                      "id":1
                    }')
              
              curl -s -X POST "$ZABBIX_URL" \
                -H "Content-Type: application/json" \
                -H "Authorization: Bearer $TOKEN" \
                -d '{
                      "jsonrpc":"2.0",
                      "method":"item.get",
                      "params":{
                        "output":["hostid","name","key_","lastvalue","units","value_type"],
                        "filter":{
                          "key_":[
                            "system.cpu.load[all,avg1]",
                            "system.cpu.load[all,avg5]",
                            "system.cpu.load[all,avg15]"
                          ]
                        }
                      },
                      "id":1
                    }' \
              | jq --argjson hosts "$hosts_json" '
                ($hosts.result | map({(.hostid): .host}) | add) as $hostnames
                | .result
                | group_by(.hostid)
                | map(select($hostnames[.[0].hostid] != null)       
                    | {
                        ($hostnames[.[0].hostid]): (
                          map({
                            (.name): {
                              value: .lastvalue,
                              unit: .units,
                              value_type: (if .value_type=="0" or .value_type=="3" then "number"
                                           elif .value_type=="1" then "string" else "unknown" end)
                            }
                          }) | add
                        )
                      }
                  )
                | add
              ' > zabbix.json
              

              Ergibt

              {
                "Zabbix server": {
                  "Load average (1m avg)": {
                    "value": "0.897461",
                    "unit": "",
                    "value_type": "number"
                  },
                  "Load average (5m avg)": {
                    "value": "0.961426",
                    "unit": "",
                    "value_type": "number"
                  },
                  "Load average (15m avg)": {
                    "value": "1.078125",
                    "unit": "",
                    "value_type": "number"
                  }
                },
                "Taiscale": {
                  "Load average (1m avg)": {
                    "value": "0.70459",
                    "unit": "",
                    "value_type": "number"
                  },
                  "Load average (5m avg)": {
                    "value": "0.916504",
                    "unit": "",
                    "value_type": "number"
                  },
                  "Load average (15m avg)": {
                    "value": "1.06543",
                    "unit": "",
                    "value_type": "number"
                  }
                },
                "MariaDB": {
                  "Load average (1m avg)": {
                    "value": "0.976074",
                    "unit": "",
                    "value_type": "number"
                  },
                  "Load average (5m avg)": {
                    "value": "0.961426",
                    "unit": "",
                    "value_type": "number"
                  },
                  "Load average (15m avg)": {
                    "value": "1.083984",
                    "unit": "",
                    "value_type": "number"
                  }
                },
                "Proxmox_Home": {
                  "Load average (1m avg)": {
                    "value": "0.805664",
                    "unit": "",
                    "value_type": "number"
                  },
                  "Load average (5m avg)": {
                    "value": "0.993652",
                    "unit": "",
                    "value_type": "number"
                  },
                  "Load average (15m avg)": {
                    "value": "1.090332",
                    "unit": "",
                    "value_type": "number"
                  }
                },
                "PBS": {
                  "Load average (1m avg)": {
                    "value": "0.033691",
                    "unit": "",
                    "value_type": "number"
                  },
                  "Load average (5m avg)": {
                    "value": "0.05957",
                    "unit": "",
                    "value_type": "number"
                  },
                  "Load average (15m avg)": {
                    "value": "0.077637",
                    "unit": "",
                    "value_type": "number"
                  }
                },
                "Docker": {
                  "Load average (1m avg)": {
                    "value": "0.131836",
                    "unit": "",
                    "value_type": "number"
                  },
                  "Load average (5m avg)": {
                    "value": "0.342285",
                    "unit": "",
                    "value_type": "number"
                  },
                  "Load average (15m avg)": {
                    "value": "0.470703",
                    "unit": "",
                    "value_type": "number"
                  }
                }
              }
              
              
              CodierknechtC Offline
              CodierknechtC Offline
              Codierknecht
              Developer Most Active
              schrieb am zuletzt editiert von
              #6

              @David-G. sagte in HttpPost Block korrekt aufbauen:

              Was ich mit den Daten machen möchte weiß ich noch nicht genau.

              Welche Daten willst Du denn im ioBroker haben?
              Dein API-Aufruf liefert alle Hosts mit allen Items.
              Willst Du da einzelne Werte visualisieren? Dann würde es ja Sinn machen, nur diese (und zwar nur bei Änderung) an ioBroker zu übertragen. Sonst müsste man ja in ioBroker zyklisch (alle x Sekunden?) lesen ... sowas ist in der Regel ziemlicher Käse.
              Man könnte z.B. in Zabbix einen Trigger auf "Change" setzen und den Wert dann per Trigger-Action übertragen.
              Oder auch ohne Trigger. Im Preprocessing ein Script aufrufen und den Wert an ioBroker senden.
              Da gibt's viele mögliche Wege.

              "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

              Proxmox 9.1.1 LXC|8 GB|Core i7-6700
              HmIP|ZigBee|Tasmota|Unifi
              Zabbix Certified Specialist
              Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

              David G.D 1 Antwort Letzte Antwort
              0
              • CodierknechtC Codierknecht

                @David-G. sagte in HttpPost Block korrekt aufbauen:

                Was ich mit den Daten machen möchte weiß ich noch nicht genau.

                Welche Daten willst Du denn im ioBroker haben?
                Dein API-Aufruf liefert alle Hosts mit allen Items.
                Willst Du da einzelne Werte visualisieren? Dann würde es ja Sinn machen, nur diese (und zwar nur bei Änderung) an ioBroker zu übertragen. Sonst müsste man ja in ioBroker zyklisch (alle x Sekunden?) lesen ... sowas ist in der Regel ziemlicher Käse.
                Man könnte z.B. in Zabbix einen Trigger auf "Change" setzen und den Wert dann per Trigger-Action übertragen.
                Oder auch ohne Trigger. Im Preprocessing ein Script aufrufen und den Wert an ioBroker senden.
                Da gibt's viele mögliche Wege.

                David G.D Online
                David G.D Online
                David G.
                schrieb am zuletzt editiert von David G.
                #7

                @Codierknecht

                Im Post hier drüber ist meine überarbeitete Version.
                Da kommt nur was ich brauche.
                Mal mit 3 avg Testwerten.

                Mit nur einer api Abfrage hab ich die Hostnamen nicht hinbekommen.

                Zeigt eure Lovelace-Visualisierung klick
                (Auch ideal um sich Anregungen zu holen)

                Meine Tabellen für eure Visualisierung klick

                1 Antwort Letzte Antwort
                0
                • CodierknechtC Offline
                  CodierknechtC Offline
                  Codierknecht
                  Developer Most Active
                  schrieb am zuletzt editiert von
                  #8

                  Hier mal ein Beispiel:
                  Das Item liefert "CPU Utilization" eines bestimmten Host.
                  Bei jeder Ausführung wird im Preprocessing der gelesene Wert auch an ioBroker übertragen.

                  grafik.png

                  54112036-3a24-4715-b3ff-4f5443e14175-grafik.png

                  "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                  Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                  HmIP|ZigBee|Tasmota|Unifi
                  Zabbix Certified Specialist
                  Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                  David G.D 1 Antwort Letzte Antwort
                  0
                  • CodierknechtC Codierknecht

                    Hier mal ein Beispiel:
                    Das Item liefert "CPU Utilization" eines bestimmten Host.
                    Bei jeder Ausführung wird im Preprocessing der gelesene Wert auch an ioBroker übertragen.

                    grafik.png

                    54112036-3a24-4715-b3ff-4f5443e14175-grafik.png

                    David G.D Online
                    David G.D Online
                    David G.
                    schrieb am zuletzt editiert von
                    #9

                    @Codierknecht

                    Das bedarf natürlich einiges an "Pflege" und Ersteinrichtung.

                    Die überwachten Rechner steigen doch langsam an, auch die überwachten Docker Container.

                    Hatte/hab die Hoffnung das etwas automatisiert hinzubekommen wenn neue Rechner überwacht werden.

                    Die Tabellen lassen sich dann ja recht easy mit den DPs generieren wenn sie wie in der json Strukturiert sind.

                    Zeigt eure Lovelace-Visualisierung klick
                    (Auch ideal um sich Anregungen zu holen)

                    Meine Tabellen für eure Visualisierung klick

                    CodierknechtC 1 Antwort Letzte Antwort
                    0
                    • David G.D David G.

                      @Codierknecht

                      Das bedarf natürlich einiges an "Pflege" und Ersteinrichtung.

                      Die überwachten Rechner steigen doch langsam an, auch die überwachten Docker Container.

                      Hatte/hab die Hoffnung das etwas automatisiert hinzubekommen wenn neue Rechner überwacht werden.

                      Die Tabellen lassen sich dann ja recht easy mit den DPs generieren wenn sie wie in der json Strukturiert sind.

                      CodierknechtC Offline
                      CodierknechtC Offline
                      Codierknecht
                      Developer Most Active
                      schrieb am zuletzt editiert von
                      #10

                      @David-G. sagte in HttpPost Block korrekt aufbauen:

                      Hatte/hab die Hoffnung das etwas automatisiert hinzubekommen wenn neue Rechner überwacht werden.

                      Stichworte "Dicovery" und "Templates".
                      "Discovery" entdeckt - wie der Name es vermuten lässt - automatisch neue Hosts.
                      Mit passenden "Discovery-Actions" werden daraus automatisch Hosts im Sinne von Zabbix.
                      Denen verpasst man dann passende Templates, die dann schon die entsprechenden Items inkl. Preprocessing enthalten.
                      Oder man lässt sich von Zabbix informieren - z.B. per Pushover - dass da ein neuer Host aufgetaucht ist und macht den Rest "von Hand". Im einfachsten Fall nur noch ein passendes Template zuordnen. Mit ein bisschen mehr Aufwand ließe sich der korrespondierende DP im ioBroker auch gleich automatisch anlegen.

                      "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                      Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                      HmIP|ZigBee|Tasmota|Unifi
                      Zabbix Certified Specialist
                      Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                      David G.D 1 Antwort Letzte Antwort
                      0
                      • CodierknechtC Codierknecht

                        @David-G. sagte in HttpPost Block korrekt aufbauen:

                        Hatte/hab die Hoffnung das etwas automatisiert hinzubekommen wenn neue Rechner überwacht werden.

                        Stichworte "Dicovery" und "Templates".
                        "Discovery" entdeckt - wie der Name es vermuten lässt - automatisch neue Hosts.
                        Mit passenden "Discovery-Actions" werden daraus automatisch Hosts im Sinne von Zabbix.
                        Denen verpasst man dann passende Templates, die dann schon die entsprechenden Items inkl. Preprocessing enthalten.
                        Oder man lässt sich von Zabbix informieren - z.B. per Pushover - dass da ein neuer Host aufgetaucht ist und macht den Rest "von Hand". Im einfachsten Fall nur noch ein passendes Template zuordnen. Mit ein bisschen mehr Aufwand ließe sich der korrespondierende DP im ioBroker auch gleich automatisch anlegen.

                        David G.D Online
                        David G.D Online
                        David G.
                        schrieb am zuletzt editiert von
                        #11

                        @Codierknecht sagte in HttpPost Block korrekt aufbauen:

                        Stichworte "Dicovery" und "Templates".
                        "Discovery" entdeckt - wie der Name es vermuten lässt - automatisch neue Hosts.

                        Die Pflege ich mal noch manuell ein und weise das Standart Linux Template (ggf noch andere) zu (und ggf noch manuell anderes)

                        @Codierknecht sagte in HttpPost Block korrekt aufbauen:

                        Denen verpasst man dann passende Templates, die dann schon die entsprechenden Items inkl. Preprocessing enthalten.

                        Da habe ich mich noch nicht so mit beschäftigt. Hab das gtad eine Woche am laufen und bin täglich überrascht was man noch findet......

                        Mal überlegen, ob ich weiter mit der json im iobroker arbeite (hab sie mittlerweile in den iob bekommen) oder deinen Ansatz über zabbix.

                        Zeigt eure Lovelace-Visualisierung klick
                        (Auch ideal um sich Anregungen zu holen)

                        Meine Tabellen für eure Visualisierung klick

                        CodierknechtC 1 Antwort Letzte Antwort
                        0
                        • David G.D David G.

                          @Codierknecht sagte in HttpPost Block korrekt aufbauen:

                          Stichworte "Dicovery" und "Templates".
                          "Discovery" entdeckt - wie der Name es vermuten lässt - automatisch neue Hosts.

                          Die Pflege ich mal noch manuell ein und weise das Standart Linux Template (ggf noch andere) zu (und ggf noch manuell anderes)

                          @Codierknecht sagte in HttpPost Block korrekt aufbauen:

                          Denen verpasst man dann passende Templates, die dann schon die entsprechenden Items inkl. Preprocessing enthalten.

                          Da habe ich mich noch nicht so mit beschäftigt. Hab das gtad eine Woche am laufen und bin täglich überrascht was man noch findet......

                          Mal überlegen, ob ich weiter mit der json im iobroker arbeite (hab sie mittlerweile in den iob bekommen) oder deinen Ansatz über zabbix.

                          CodierknechtC Offline
                          CodierknechtC Offline
                          Codierknecht
                          Developer Most Active
                          schrieb am zuletzt editiert von
                          #12

                          @David-G. sagte in HttpPost Block korrekt aufbauen:

                          Da habe ich mich noch nicht so mit beschäftigt. Hab das gtad eine Woche am laufen und bin täglich überrascht was man noch findet......

                          Ist fast eine eierlegende Wollmilchsau.
                          Wer einen Hammer hat, sieht eine Welt voller Nägel :-D :-D

                          "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                          Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                          HmIP|ZigBee|Tasmota|Unifi
                          Zabbix Certified Specialist
                          Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                          David G.D 1 Antwort Letzte Antwort
                          0
                          • CodierknechtC Codierknecht

                            @David-G. sagte in HttpPost Block korrekt aufbauen:

                            Da habe ich mich noch nicht so mit beschäftigt. Hab das gtad eine Woche am laufen und bin täglich überrascht was man noch findet......

                            Ist fast eine eierlegende Wollmilchsau.
                            Wer einen Hammer hat, sieht eine Welt voller Nägel :-D :-D

                            David G.D Online
                            David G.D Online
                            David G.
                            schrieb am zuletzt editiert von David G.
                            #13

                            @Codierknecht

                            Hab es jetzt fast.
                            Am JS muss mir jmd helfen.
                            Da komme ich nicht weiter.
                            Die Ordner bekommen null Werte und beim Namen sämtlicher Ordner und DOs hätte ich gerne das selbe wie beim Pfad vom DP die kurze Variante ohne den Pfad vorher.

                            1000058373.jpg

                            const SOURCE_DP = '0_userdata.0.zabbix.json';
                            const TARGET_ROOT = '0_userdata.0.zabbix.hosts';
                            
                            // Hilfsfunktion: sichere ID
                            function normalize(name) {
                                return name
                                    .toString()
                                    .replace(/[^\w]/g, '_')
                                    .replace(/_+/g, '_')
                                    .replace(/^_|_$/g, '');
                            }
                            
                            // JSON einlesen
                            const raw = getState(SOURCE_DP)?.val;
                            if (!raw) {
                                log('Zabbix JSON ist leer oder nicht vorhanden', 'warn');
                                return;
                            }
                            
                            let data;
                            try {
                                data = JSON.parse(raw);
                            } catch (e) {
                                log('JSON Parsing fehlgeschlagen: ' + e, 'error');
                                return;
                            }
                            
                            // Hosts durchlaufen
                            Object.keys(data).forEach(host => {
                                const hostId = `${TARGET_ROOT}.${normalize(host)}`;
                            
                                // Host-Ordner anlegen (falls nicht vorhanden)
                                if (!existsObject(hostId)) {
                                    createState(hostId, null, {
                                        type: 'folder',
                                        common: { name: host },
                                        native: {}
                                    });
                                }
                            
                                const metrics = data[host];
                            
                                Object.keys(metrics).forEach(metric => {
                                    const m = metrics[metric];
                                    const dpId = `${hostId}.${normalize(metric)}`;
                            
                                    const valueType = m.value_type === 'number' ? 'number' : 'string';
                                    const value = valueType === 'number' ? Number(m.value) : String(m.value);
                            
                                    // Datenpunkt neu anlegen
                                    if (!existsObject(dpId)) {
                                        createState(dpId, value, {
                                            type: valueType,
                                            common: {
                                                name: metric,
                                                role: 'value',
                                                unit: m.unit || '',
                                                read: true,
                                                write: false
                                            },
                                            native: {}
                                        });
                                        log(`DP angelegt: ${dpId}`);
                                    } 
                                    // oder nur aktualisieren
                                    else {
                                        setState(dpId, value, true);
                                    }
                                });
                            });
                            

                            Zeigt eure Lovelace-Visualisierung klick
                            (Auch ideal um sich Anregungen zu holen)

                            Meine Tabellen für eure Visualisierung klick

                            1 Antwort Letzte Antwort
                            0
                            Antworten
                            • In einem neuen Thema antworten
                            Anmelden zum Antworten
                            • Älteste zuerst
                            • Neuste zuerst
                            • Meiste Stimmen


                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            606

                            Online

                            32.6k

                            Benutzer

                            82.1k

                            Themen

                            1.3m

                            Beiträge
                            Community
                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                            ioBroker Community 2014-2025
                            logo
                            • Anmelden

                            • Du hast noch kein Konto? Registrieren

                            • Anmelden oder registrieren, um zu suchen
                            • Erster Beitrag
                              Letzter Beitrag
                            0
                            • Home
                            • Aktuell
                            • Tags
                            • Ungelesen 0
                            • Kategorien
                            • Unreplied
                            • Beliebt
                            • GitHub
                            • Docu
                            • Hilfe