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. JavaScript
  5. Datenpunktwert per JSON als HTTP Post versenden

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Datenpunktwert per JSON als HTTP Post versenden

Geplant Angeheftet Gesperrt Verschoben JavaScript
6 Beiträge 2 Kommentatoren 232 Aufrufe 4 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.
  • Dominic HaußmannD Offline
    Dominic HaußmannD Offline
    Dominic Haußmann
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,
    ich würde gerne bei Änderung eines Wertes von einem Datenpunkt diese Änderung gerne an ein externes System per JSON versenden.

    Per CURL wäre das einfach, ich würde es aber gerne automatisieren per JSON und JSSkript.

    curl $YOUR_HUMIO_URL/api/v1/ingest/humio-structured
    -X POST
    -H "Content-Type: application/json"
    -H "Authorization: Bearer $INGEST_TOKEN"
    -d '[{"tags": {"host":"iobroler"}, "events" : [{"timestamp": "2021-06-06T12:00:00+02:00", "attributes": {"key1":"value1"}}]}]'

    Leider bin ich in JavaScript nicht wirklich sattelfest und hoffe das mir hier jemand helfen kann, oder mir ein paar Tips geben könnte.

    Wäre klasse wenn ich ein Feedback bekommen würde.

    Besten Dank vorab.

    mickymM 1 Antwort Letzte Antwort
    0
    • Dominic HaußmannD Dominic Haußmann

      Hallo zusammen,
      ich würde gerne bei Änderung eines Wertes von einem Datenpunkt diese Änderung gerne an ein externes System per JSON versenden.

      Per CURL wäre das einfach, ich würde es aber gerne automatisieren per JSON und JSSkript.

      curl $YOUR_HUMIO_URL/api/v1/ingest/humio-structured
      -X POST
      -H "Content-Type: application/json"
      -H "Authorization: Bearer $INGEST_TOKEN"
      -d '[{"tags": {"host":"iobroler"}, "events" : [{"timestamp": "2021-06-06T12:00:00+02:00", "attributes": {"key1":"value1"}}]}]'

      Leider bin ich in JavaScript nicht wirklich sattelfest und hoffe das mir hier jemand helfen kann, oder mir ein paar Tips geben könnte.

      Wäre klasse wenn ich ein Feedback bekommen würde.

      Besten Dank vorab.

      mickymM Online
      mickymM Online
      mickym
      Most Active
      schrieb am zuletzt editiert von mickym
      #2

      So das dürfte funktionieren - allerdings musst Du die Variable $YOUR_HUMINO_URL noch durch eine richtige URL ersetzen:

      const request = require('axios');
      
      var url=$YOUR_HUMIO_URL/api/v1/ingest/humio-structured;
      var data = '[{"tags": {"host":"iobroler"}, "events" : [{"timestamp": "2021-06-06T12:00:00+02:00", "attributes": {"key1":"value1"}}]}]';
      var config = { headers: {
          "Content-Type": "application/json",
          "Authorization": "Bearer $INGEST_TOKEN"
                      }
      }
      request.post(url,data,config);
      

      Wenn ich als URL meinen Node-RED Test Server verwende, wird Dein JSON String in jedem Fall richtig interpretiert:

      405a8047-d8c1-407c-98a7-6f6f2b6c190e-image.png

      auch die Header scheinen richtig durchgereicht zu werden:

      d55c879f-8050-48eb-85e2-f625cc613360-image.png

      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

      Dominic HaußmannD 1 Antwort Letzte Antwort
      0
      • Dominic HaußmannD Offline
        Dominic HaußmannD Offline
        Dominic Haußmann
        schrieb am zuletzt editiert von
        #3

        Hi,
        werde es direkt mal testen. Danke schonmal vorab.

        1 Antwort Letzte Antwort
        0
        • mickymM mickym

          So das dürfte funktionieren - allerdings musst Du die Variable $YOUR_HUMINO_URL noch durch eine richtige URL ersetzen:

          const request = require('axios');
          
          var url=$YOUR_HUMIO_URL/api/v1/ingest/humio-structured;
          var data = '[{"tags": {"host":"iobroler"}, "events" : [{"timestamp": "2021-06-06T12:00:00+02:00", "attributes": {"key1":"value1"}}]}]';
          var config = { headers: {
              "Content-Type": "application/json",
              "Authorization": "Bearer $INGEST_TOKEN"
                          }
          }
          request.post(url,data,config);
          

          Wenn ich als URL meinen Node-RED Test Server verwende, wird Dein JSON String in jedem Fall richtig interpretiert:

          405a8047-d8c1-407c-98a7-6f6f2b6c190e-image.png

          auch die Header scheinen richtig durchgereicht zu werden:

          d55c879f-8050-48eb-85e2-f625cc613360-image.png

          Dominic HaußmannD Offline
          Dominic HaußmannD Offline
          Dominic Haußmann
          schrieb am zuletzt editiert von
          #4

          @mickym Eine Frage noch: Das Ziel ist es ja wenn sich ein Datenpunkt ändert drei Werte per JSON an die Url zu versenden: Timestamp, Datenpunktname, Wert. Den Datenpunkt setzt ich wahrscheinlich über eine Variable. Wie würde ich den Timestamp setzen ?

          Danke nochmal vorab für die Hilfe.

          mickymM 2 Antworten Letzte Antwort
          0
          • Dominic HaußmannD Dominic Haußmann

            @mickym Eine Frage noch: Das Ziel ist es ja wenn sich ein Datenpunkt ändert drei Werte per JSON an die Url zu versenden: Timestamp, Datenpunktname, Wert. Den Datenpunkt setzt ich wahrscheinlich über eine Variable. Wie würde ich den Timestamp setzen ?

            Danke nochmal vorab für die Hilfe.

            mickymM Online
            mickymM Online
            mickym
            Most Active
            schrieb am zuletzt editiert von mickym
            #5

            siehe nächsten Post - da ist die optimierte Version drin.

            Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

            1 Antwort Letzte Antwort
            0
            • Dominic HaußmannD Dominic Haußmann

              @mickym Eine Frage noch: Das Ziel ist es ja wenn sich ein Datenpunkt ändert drei Werte per JSON an die Url zu versenden: Timestamp, Datenpunktname, Wert. Den Datenpunkt setzt ich wahrscheinlich über eine Variable. Wie würde ich den Timestamp setzen ?

              Danke nochmal vorab für die Hilfe.

              mickymM Online
              mickymM Online
              mickym
              Most Active
              schrieb am zuletzt editiert von mickym
              #6

              @dominic-haußmann

              Wenn Du halt mehrere Datenpuntkte überwachen willst musst halt quasi ein regex nehmen oder einzelne Datenpunkte und die events als globales Array definieren. Hier mal das Bespiel mit 2 Datenpunkten.

              const request = require('axios');
              
              var events = [];
              
              // Überwachen des Datenpunktes oder Wildcards
              // on({id: /0_userdata.0.*/, change: 'any'}, function (obj) { 
              on({id: '0_userdata.0.doorStatus', change: 'any'}, sendObj);
              on({id: '0_userdata.0.target', change: 'any'}, sendObj);
              
              
              // Versenden des JSON Strings
              function sendObj(obj){
                  
              var state = getState(obj.id)
              var date = new Date(state.ts); 
              var event = {"timestamp": date};
              
              event[obj.id] =state.val;
              events.push(event);
              
              var data = JSON.stringify([{"tags": {"host":"iobroker"}, "events" : events}]);
              
              var url='$YOUR_HUMIO_URL/api/v1/ingest/humio-structured';
              //var data = '[{"tags": {"host":"iobroler"}, "events" : [{"timestamp": "2021-06-06T12:00:00+02:00", "attributes": {"key1":"value1"}}]}]';
              
              var config = { headers: {
                  "Content-Type": "application/json",
                  "Authorization": "Bearer $INGEST_TOKEN"
                              }
              }
              request.post(url,data,config);
              }
              
              
              

              Das Ergebnis ist dann halt ein immer weiter wachsendes Array mit jeder Aktualisierung als Event:

              {"tags":{"host":"iobroker"},"events":[{"timestamp":"2022-01-22T16:20:46.811Z","0_userdata.0.target":5},{"timestamp":"2022-01-22T16:20:52.947Z","0_userdata.0.doorStatus":"40 %"},{"timestamp":"2022-01-22T16:22:44.935Z","0_userdata.0.doorStatus":"12.5 %"}]}
              

              a4e60f86-69d2-492c-b9a0-8730f0cddcc3-image.png

              EDIT: Die ID des Selectors über eine Variable zu setzen geht natürlich auch. Du musst halt bedenken, dass Du jedes Mal einen neuen Selector generierst. Also müsstest Du mit unsubscribe den erst wieder löschen Mit Wildcards habe ich es auch getestet, aber da ist mein Array im Nu sehr lang. ;). Aber ich bin kein JS Fachmann, arbeite lieber mit NR - aber für weitere Fragen ist Dir @paul53 sicher behilflich.

              Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

              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

              788

              Online

              32.6k

              Benutzer

              82.2k

              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