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. [gelöst] JSON POST für Liquid-Check-Messung

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.8k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.2k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    3.2k

[gelöst] JSON POST für Liquid-Check-Messung

Geplant Angeheftet Gesperrt Verschoben JavaScript
12 Beiträge 4 Kommentatoren 1.4k 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.
  • Q Offline
    Q Offline
    qwertz
    schrieb am zuletzt editiert von qwertz
    #1

    Hi !

    Als Script-Kiddy komme ich nicht weiter;

    Folgendes soll ich laut der API-Beschreibung tun um bei meiner Zisternenfüllstandsanzeige LiquidCheck eine Messung auszulösen:

    Liquid-Check Messung direkt starten
    Zum Starten der Messung einen Post mit folgendem Json Inhalt im body an die Url des Liquid-Check senden: 
    
    http://liquid-check/command 
    
    {"header":{"namespace":"Device.Control","name":"StartMeasure","messageId":"1","payloadVersion":"1"},"payload":null}
    

    Folgendes Skript funktioniert aber nicht:

    '*/60 * * * *'
    
      var request = require('request');
    
    request.post({
    
        url:     'http://10.11.12.46/command',
    
        form:    {"header":{"namespace":"Device.Control","name":"StartMeasure","messageId":"1","payloadVersion":"1"},"payload":null}
    
    }, function(error, response, body) {
    
        if (error) log(error, 'error');
    
    });
    

    Was ist gemeint mit "im Body senden"

    Besten Dank und Gruß,
    Sebastian

    paul53P 3 Antworten Letzte Antwort
    0
    • Q qwertz

      Hi !

      Als Script-Kiddy komme ich nicht weiter;

      Folgendes soll ich laut der API-Beschreibung tun um bei meiner Zisternenfüllstandsanzeige LiquidCheck eine Messung auszulösen:

      Liquid-Check Messung direkt starten
      Zum Starten der Messung einen Post mit folgendem Json Inhalt im body an die Url des Liquid-Check senden: 
      
      http://liquid-check/command 
      
      {"header":{"namespace":"Device.Control","name":"StartMeasure","messageId":"1","payloadVersion":"1"},"payload":null}
      

      Folgendes Skript funktioniert aber nicht:

      '*/60 * * * *'
      
        var request = require('request');
      
      request.post({
      
          url:     'http://10.11.12.46/command',
      
          form:    {"header":{"namespace":"Device.Control","name":"StartMeasure","messageId":"1","payloadVersion":"1"},"payload":null}
      
      }, function(error, response, body) {
      
          if (error) log(error, 'error');
      
      });
      

      Was ist gemeint mit "im Body senden"

      Besten Dank und Gruß,
      Sebastian

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von paul53
      #2

      @qwertz sagte: Folgendes Skript funktioniert aber nicht:

      Was gibt dieses im Log aus?

      request('http://10.11.12.46/infos.json', function(error, response, body) {
          if (error) log(error, 'error');
          else log(body);
      });
      

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      1 Antwort Letzte Antwort
      0
      • Q qwertz

        Hi !

        Als Script-Kiddy komme ich nicht weiter;

        Folgendes soll ich laut der API-Beschreibung tun um bei meiner Zisternenfüllstandsanzeige LiquidCheck eine Messung auszulösen:

        Liquid-Check Messung direkt starten
        Zum Starten der Messung einen Post mit folgendem Json Inhalt im body an die Url des Liquid-Check senden: 
        
        http://liquid-check/command 
        
        {"header":{"namespace":"Device.Control","name":"StartMeasure","messageId":"1","payloadVersion":"1"},"payload":null}
        

        Folgendes Skript funktioniert aber nicht:

        '*/60 * * * *'
        
          var request = require('request');
        
        request.post({
        
            url:     'http://10.11.12.46/command',
        
            form:    {"header":{"namespace":"Device.Control","name":"StartMeasure","messageId":"1","payloadVersion":"1"},"payload":null}
        
        }, function(error, response, body) {
        
            if (error) log(error, 'error');
        
        });
        

        Was ist gemeint mit "im Body senden"

        Besten Dank und Gruß,
        Sebastian

        paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von paul53
        #3

        @qwertz
        Genügt es nicht, jede Stunde abzufragen? Etwa so

        const url = 'http://10.11.12.46/infos.json';
        const path = '0_userdata.0.Zisterne.Messung.';
        const idPegel = path + 'Pegel';
        const idVol = path + 'Volumen';
        
        schedule('7 * * * *', function() {
            request(url, function(error, response, body) {
                if(error) log(error, 'warn');
                else if(body) {
                    let werte = JSON.parse(body).payload.measure;
                    setState(idPegel, werte.level, true);
                    setState(idVol, werte.content, true);
                }
            });
        });
        

        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

        1 Antwort Letzte Antwort
        0
        • Q Offline
          Q Offline
          qwertz
          schrieb am zuletzt editiert von qwertz
          #4

          Hi !

          Danke für den Tip.

          Es geht aber nicht ums Auslesen der infos.json sondern um das Triggern einer neuen physischen Messung über die Command URL.

          Hintergrund: Das Gerät startet dann eine kleine Pumpe und drückt Luft in den Messschlauch.

          Das Auslesen der bestehenden Werte aus der letzten physischen Messung klappt schon mit einem anderen Skript ( s.anderer alter Beitrag https://forum.iobroker.net/post/579295)

          Besten Gruß,
          Sebastian

          1 Antwort Letzte Antwort
          0
          • Q qwertz

            Hi !

            Als Script-Kiddy komme ich nicht weiter;

            Folgendes soll ich laut der API-Beschreibung tun um bei meiner Zisternenfüllstandsanzeige LiquidCheck eine Messung auszulösen:

            Liquid-Check Messung direkt starten
            Zum Starten der Messung einen Post mit folgendem Json Inhalt im body an die Url des Liquid-Check senden: 
            
            http://liquid-check/command 
            
            {"header":{"namespace":"Device.Control","name":"StartMeasure","messageId":"1","payloadVersion":"1"},"payload":null}
            

            Folgendes Skript funktioniert aber nicht:

            '*/60 * * * *'
            
              var request = require('request');
            
            request.post({
            
                url:     'http://10.11.12.46/command',
            
                form:    {"header":{"namespace":"Device.Control","name":"StartMeasure","messageId":"1","payloadVersion":"1"},"payload":null}
            
            }, function(error, response, body) {
            
                if (error) log(error, 'error');
            
            });
            

            Was ist gemeint mit "im Body senden"

            Besten Dank und Gruß,
            Sebastian

            paul53P Offline
            paul53P Offline
            paul53
            schrieb am zuletzt editiert von paul53
            #5

            @qwertz sagte: Was ist gemeint mit "im Body senden"

            Ersetze mal form: durch body:

            Readme von request:

            • body - entity body for PATCH, POST and PUT requests. Must be a Buffer, String or ReadStream. If json is true, then body must be a JSON-serializable object.

            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
            Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

            Q 1 Antwort Letzte Antwort
            0
            • paul53P paul53

              @qwertz sagte: Was ist gemeint mit "im Body senden"

              Ersetze mal form: durch body:

              Readme von request:

              • body - entity body for PATCH, POST and PUT requests. Must be a Buffer, String or ReadStream. If json is true, then body must be a JSON-serializable object.
              Q Offline
              Q Offline
              qwertz
              schrieb am zuletzt editiert von
              #6

              @paul53
              Habe es so laufen lassen: Dabei crasht der komplette Adapter...

              '*/60 * * * *'
              
               
              
                var request = require('request');
              
               
              
              request.post({
              
               
              
                  url:     'http://10.11.12.46/command',
              
               
              
                  body:    {"header":{"namespace":"Device.Control","name":"StartMeasure","messageId":"1","payloadVersion":"1"},"payload":null}
              
               
              
              }, function(error, response, body) {
              
               
              
                  if (error) log(error, 'error');
              
               
              
              });
              
              2021-04-21 19:21:31.765 - error: javascript.0 (29353) script.js.Zisterne_auslesen_Trigger: {}
              2021-04-21 19:21:31.766 - info: javascript.0 (29353) script.js.Zisterne_auslesen_Trigger: registered 0 subscriptions and 0 schedules
              2021-04-21 19:21:31.840 - error: javascript.0 (29353) Request error: Error: Argument error, options.body.
              2021-04-21 19:21:31.851 - error: javascript.0 (29353) An error happened which is most likely from one of your scripts, but the originating script could not be detected.
              2021-04-21 19:21:31.852 - error: javascript.0 (29353) Error: The first argument must be of type string or an instance of Buffer. Received an instance of Object
              2021-04-21 19:21:31.853 - error: javascript.0 (29353) TypeError [ERR_INVALID_ARG_TYPE]: The first argument must be of type string or an instance of Buffer. Received an instance of Object
              at write_ (_http_outgoing.js:653:11)
              at ClientRequest.write (_http_outgoing.js:621:15)
              at Request.write (/opt/iobroker/node_modules/request/request.js:1494:27)
              at end (/opt/iobroker/node_modules/request/request.js:549:18)
              at Immediate._onImmediate (/opt/iobroker/node_modules/request/request.js:578:7)
              at processImmediate (internal/timers.js:456:21)
              2021-04-21 19:21:32.851 - info: javascript.0 (29353) Stop script script.js.Doorbird_Klingel_an_CCU1_aus
              2021-04-21 19:21:32.924 - error: host.iobroker Caught by controller[0]: TypeError [ERR_INVALID_ARG_TYPE]: The first argument must be of type string or an instance of Buffer. Received an instance of Object
              2021-04-21 19:21:32.926 - error: host.iobroker Caught by controller[0]: at write_ (_http_outgoing.js:653:11)
              2021-04-21 19:21:32.926 - error: host.iobroker Caught by controller[0]: at ClientRequest.write (_http_outgoing.js:621:15)
              2021-04-21 19:21:32.927 - error: host.iobroker Caught by controller[0]: at Request.write (/opt/iobroker/node_modules/request/request.js:1494:27)
              2021-04-21 19:21:32.927 - error: host.iobroker Caught by controller[0]: at end (/opt/iobroker/node_modules/request/request.js:549:18)
              2021-04-21 19:21:32.927 - error: host.iobroker Caught by controller[0]: at Immediate._onImmediate (/opt/iobroker/node_modules/request/request.js:578:7)
              2021-04-21 19:21:32.927 - error: host.iobroker Caught by controller[0]: at processImmediate (internal/timers.js:456:21)
              2021-04-21 19:21:32.928 - error: host.iobroker instance system.adapter.javascript.0 terminated with code 1 (JS_CONTROLLER_STOPPED)
              2021-04-21 19:21:32.928 - info: host.iobroker Restart adapter system.adapter.javascript.0 because enabled
              
              1 Antwort Letzte Antwort
              0
              • Q Offline
                Q Offline
                qwertz
                schrieb am zuletzt editiert von
                #7

                Zur Doku für andere Liquid-Check Nutzer: Habe es jetzt geschafft die Messung am zu starten mit folgendem Skript:

                on({id: '0_userdata.0.Zisterne_Messung_Trigger', val: true}, script1);
                
                function script1() {
                
                    console.log('Zisterne_Messung_gestartet_durch_Skript');
                
                    var request = require('request');
                    var myObj = {"header":{"namespace":"Device.Control","name":"StartMeasure","messageId":"1","payloadVersion":"1"},"payload":null}
                
                          var options = {
                          url: 'http://10.11.12.46/command',
                          method: 'POST',
                          body:JSON.stringify(myObj) 
                };
                
                request(options,function (error, response, body){
                });
                
                
                }
                  
                

                Mit einem Bool-Schalter-Objekt wird ich das Skript getriggert.

                M 1 Antwort Letzte Antwort
                0
                • Q qwertz

                  Zur Doku für andere Liquid-Check Nutzer: Habe es jetzt geschafft die Messung am zu starten mit folgendem Skript:

                  on({id: '0_userdata.0.Zisterne_Messung_Trigger', val: true}, script1);
                  
                  function script1() {
                  
                      console.log('Zisterne_Messung_gestartet_durch_Skript');
                  
                      var request = require('request');
                      var myObj = {"header":{"namespace":"Device.Control","name":"StartMeasure","messageId":"1","payloadVersion":"1"},"payload":null}
                  
                            var options = {
                            url: 'http://10.11.12.46/command',
                            method: 'POST',
                            body:JSON.stringify(myObj) 
                  };
                  
                  request(options,function (error, response, body){
                  });
                  
                  
                  }
                    
                  

                  Mit einem Bool-Schalter-Objekt wird ich das Skript getriggert.

                  M Offline
                  M Offline
                  Matthias I
                  schrieb am zuletzt editiert von
                  #8

                  @qwertz Hallo zusammen,
                  Ich bin auf der Suche nach einem verlässlichen Füllstandssensor, der nach Möglichkeit an 230V anliegt (und daher außerhalb meines Flachwassertanks zu montierten ist) und zuverlässig Änderungen des Füllstandes (am liebsten in Prozent) an den iobroker übermittelt.
                  Ist das mit dem Liquid Check so möglich?
                  Welche Lösungen verwendet ihr?
                  Um die Gartenbewässerung wirklich smart zu gestalten benötige ich hier einen zuverlässigen Sensor auf den man sich verlassen kann...
                  LG

                  Q 1 Antwort Letzte Antwort
                  0
                  • M Matthias I

                    @qwertz Hallo zusammen,
                    Ich bin auf der Suche nach einem verlässlichen Füllstandssensor, der nach Möglichkeit an 230V anliegt (und daher außerhalb meines Flachwassertanks zu montierten ist) und zuverlässig Änderungen des Füllstandes (am liebsten in Prozent) an den iobroker übermittelt.
                    Ist das mit dem Liquid Check so möglich?
                    Welche Lösungen verwendet ihr?
                    Um die Gartenbewässerung wirklich smart zu gestalten benötige ich hier einen zuverlässigen Sensor auf den man sich verlassen kann...
                    LG

                    Q Offline
                    Q Offline
                    qwertz
                    schrieb am zuletzt editiert von
                    #9

                    @matthias-i
                    Hi
                    Bei LiquidCheck geht nur ein dünner Plastikschlauch in den Tank. Pneumatische Messung. Kein Strom !
                    Der Schlauch geht dann in das Messgerät, welches irgendwo in der Nähe von einer Steckdose platziert werden kann. Das Messgerät wird über USB 5V DC versorgt. WLAN-Webserver mit API.
                    Läuft seit ca. einem Jahr zuverlässig.

                    1 Antwort Letzte Antwort
                    0
                    • O Offline
                      O Offline
                      odysseus
                      schrieb am zuletzt editiert von odysseus
                      #10

                      Hallo erstmal
                      Ich nutze das LiquidCheck Script von qwertz und es klappt auch super! Herzlichen Dank dafür!!!!
                      Jetz kommt aber inzwischen die Warnung von der JS Engine:
                      "request package is deprecated - please use httpGet (or a stable lib like axios) instead!"

                      Daher hier in Ergänzung der entsprechende httpPost Aufruf :

                      on({id: '0_userdata.0.Zisterne_Messung_Trigger', val: true}, script1);
                      
                      function script1() {
                      console.log('Zisterne_Messung_gestartet_durch_Skript');
                       
                       httpPost('http://10.11.12.46/command', {"header":{ "namespace" : "Device.Control" , "name" : "StartMeasure" , "messageId" : "1" , "payloadVersion" : "1" } , "payload" : null }, (error, response) => {
                           if (error) console.error('Unerwarteter Fehler - ' + error);
                       
                      });
                      } 
                      

                      LG

                      O 1 Antwort Letzte Antwort
                      0
                      • O odysseus

                        Hallo erstmal
                        Ich nutze das LiquidCheck Script von qwertz und es klappt auch super! Herzlichen Dank dafür!!!!
                        Jetz kommt aber inzwischen die Warnung von der JS Engine:
                        "request package is deprecated - please use httpGet (or a stable lib like axios) instead!"

                        Daher hier in Ergänzung der entsprechende httpPost Aufruf :

                        on({id: '0_userdata.0.Zisterne_Messung_Trigger', val: true}, script1);
                        
                        function script1() {
                        console.log('Zisterne_Messung_gestartet_durch_Skript');
                         
                         httpPost('http://10.11.12.46/command', {"header":{ "namespace" : "Device.Control" , "name" : "StartMeasure" , "messageId" : "1" , "payloadVersion" : "1" } , "payload" : null }, (error, response) => {
                             if (error) console.error('Unerwarteter Fehler - ' + error);
                         
                        });
                        } 
                        

                        LG

                        O Offline
                        O Offline
                        odysseus
                        schrieb am zuletzt editiert von
                        #11

                        @odysseus said in [gelöst] JSON POST für Liquid-Check-Messung:

                        Hallo erstmal
                        Ich nutze das LiquidCheck Script von qwertz und es klappt auch super! Herzlichen Dank dafür!!!!
                        Jetzt kommt aber inzwischen die Warnung von der JS Engine:
                        "request package is deprecated - please use httpGet (or a stable lib like axios) instead!"

                        Daher hier in Ergänzung der entsprechende httpPost Aufruf :

                        on({id: '0_userdata.0.Zisterne_Messung_Trigger', val: true}, script1);
                        
                        function script1() {
                        console.log('Zisterne_Messung_gestartet_durch_Skript');
                         
                         httpPost('http://10.11.12.46/command', {"header":{ "namespace" : "Device.Control" , "name" : "StartMeasure" , "messageId" : "1" , "payloadVersion" : "1" } , "payload" : null }, (error, response) => {
                             if (error) console.error('Unerwarteter Fehler - ' + error);
                         
                        });
                        } 
                        

                        LG

                        Q 1 Antwort Letzte Antwort
                        0
                        • O odysseus

                          @odysseus said in [gelöst] JSON POST für Liquid-Check-Messung:

                          Hallo erstmal
                          Ich nutze das LiquidCheck Script von qwertz und es klappt auch super! Herzlichen Dank dafür!!!!
                          Jetzt kommt aber inzwischen die Warnung von der JS Engine:
                          "request package is deprecated - please use httpGet (or a stable lib like axios) instead!"

                          Daher hier in Ergänzung der entsprechende httpPost Aufruf :

                          on({id: '0_userdata.0.Zisterne_Messung_Trigger', val: true}, script1);
                          
                          function script1() {
                          console.log('Zisterne_Messung_gestartet_durch_Skript');
                           
                           httpPost('http://10.11.12.46/command', {"header":{ "namespace" : "Device.Control" , "name" : "StartMeasure" , "messageId" : "1" , "payloadVersion" : "1" } , "payload" : null }, (error, response) => {
                               if (error) console.error('Unerwarteter Fehler - ' + error);
                           
                          });
                          } 
                          

                          LG

                          Q Offline
                          Q Offline
                          qwertz
                          schrieb am zuletzt editiert von
                          #12

                          @odysseus Danke dir ! Hatte die Meldung im Log auch schon gesehen, aber bisher verdrängt.

                          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

                          817

                          Online

                          32.4k

                          Benutzer

                          81.5k

                          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