Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Werte von JSONDATA in IoBroker nutzen Heizungssteuerung

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Werte von JSONDATA in IoBroker nutzen Heizungssteuerung

    This topic has been deleted. Only users with topic management privileges can see it.
    • B
      blackst225 last edited by blackst225

      Hallo Zusammen,

      ich habe die Suche bereits bemüht, aber leider nicht das Passende gefunden.
      Ich versuche Daten von meiner Heizungssteuerung an IOBroker zu übermitteln.

      Dazu habe ich einen HTTP GET Command herausgefunden, der mir über die Steuerungswebsite die Daten meines Kessels zur verfügung stellt. (Der Kessel ist mit dem Internet Verbunden)

      Leider blicke ich bei dem Format nicht durch und es sind nur Werte ohne Beschreibung.
      Die meißten kann ich gut entschlüsseln.

      Aber wie bekomme ich die Daten in IOBroker? Sodass ich diese auch weitergeben kann.

      Die Abfrage der Website ist kein Geheimnis (http://stokercloud.dk/dev/getdriftjson.php?mac=certus)

      e37daaf9-ca54-4c2a-9653-e3b01ff11ca5-grafik.png

      Die Daten die dann erscheinen muss ich irgendwie in IOBroker bekommen und dann ggf aufschlüsseln. Das am besten per Script. Bzw das sich die Daten immer automatisch aktualisieren.

      Hat da jemand eine Idee?

      Beste Grüße
      Simon

      paul53 1 Reply Last reply Reply Quote 0
      • paul53
        paul53 @blackst225 last edited by

        @blackst225 sagte: Hat da jemand eine Idee?

        Beispiel unter der Annahme, dass der Wert 52.4 die Vorlauftemperatur ist:

        const url = 'http://stokercloud.dk/dev/getdriftjson.php?mac=certus';
        const idVL = '0_userdata.0.Heizung.Vorlauf_Temperatur';
        // usw. 
        
        schedule('* * * * *', function() {
            request(url, function(err, response, json) {
                if(!err && json) {
                    let arr = JSON.parse(json).jsondata;
                    let vl = parseFloat(arr[1]['2'][0]['0']);
        //            log(vl);
                    setState(idVL, vl, true);
                }
            });
        });
        
        B 1 Reply Last reply Reply Quote 0
        • B
          blackst225 @paul53 last edited by blackst225

          @paul53

          vielen vielen Dank für deine Arbeit!

          Leider läuft es noch nicht rund 🙂

          Ich habe das als JavaScript unter Scripte angelegt. Das war korrekt oder?

          Danach habe ich das Objekt: 0_userdata.0.Heizung.Vorlauf_Temperatur angelegt und das Script gestartet..

          Leider kommt kein Wert.

          Im log steht:

          59d097a2-a34b-413c-90b9-913085d7eb29-grafik.png

          2021-02-22 19:27:47.429 - info: javascript.0 (1655) Stop script script.js.Kessel
          2021-02-22 19:27:50.873 - info: javascript.0 (1655) Start javascript script.js.Kessel
          2021-02-22 19:27:50.902 - info: javascript.0 (1655) script.js.Kessel: registered 0 subscriptions and 1 schedule
          2021-02-22 19:28:00.130 - warn: javascript.0 (1655) You are assigning a number to the state "0_userdata.0.Heizung.Vorlauf_Temperatur" which expects a string. Please fix your code to use a string or change the state type to number. This warning might become an error in future versions.
          2021-02-22 19:28:00.137 - warn: javascript.0 (1655) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1358:20)
          2021-02-22 19:28:00.137 - warn: javascript.0 (1655) at script.js.Kessel:23:13
          2021-02-22 19:28:00.138 - warn: javascript.0 (1655) at Request._callback (/opt/iobroker/node_modules/iobroker.javascript/lib/request.js:27:17)
          2021-02-22 19:28:00.138 - warn: javascript.0 (1655) at Request.self.callback (/opt/iobroker/node_modules/request/request.js:185:22)
          2021-02-22 19:28:00.139 - warn: javascript.0 (1655) at Request.emit (events.js:314:20)
          2021-02-22 19:28:00.139 - warn: javascript.0 (1655) at Request.EventEmitter.emit (domain.js:483:12)
          2021-02-22 19:28:00.140 - warn: javascript.0 (1655) at Request. (/opt/iobroker/node_modules/request/request.js:1154:10)
          2021-02-22 19:28:00.140 - warn: javascript.0 (1655) at Request.emit (events.js:314:20)
          2021-02-22 19:28:00.141 - warn: javascript.0 (1655) at Request.EventEmitter.emit (domain.js:483:12)
          2021-02-22 19:28:00.141 - warn: javascript.0 (1655) at IncomingMessage. (/opt/iobroker/node_modules/request/request.js:1076:12)
          2021-02-22 19:28:00.141 - warn: javascript.0 (1655) at Object.onceWrapper (events.js:420:28)
          2021-02-22 19:28:00.142 - warn: javascript.0 (1655) at IncomingMessage.emit (events.js:326:22)
          2021-02-22 19:28:00.142 - warn: javascript.0 (1655) at IncomingMessage.EventEmitter.emit (domain.js:483:12)
          2021-02-22 19:28:00.143 - warn: javascript.0 (1655) at endReadableNT (_stream_readable.js:1241:12)
          2021-02-22 19:28:00.143 - warn: javascript.0 (1655) at processTicksAndRejections (internal/process/task_queues.js:84:21)
          

          Kann man da was mit anfangen?

          Ich bin mir sicher dass ich einfach nur zu blöde bin das korrekt auszuführen.

          Ich habe den Fehler gefunden!
          Das objekt war falsch angelegt!

          Ich depp 🙂

          Ich habe mir nun noch ein Paar Werte raus gesucht:

          et vl = parseFloat(arr[1]['2'][5]['5']); Puffer_Temperatur

          let vl = parseFloat(arr[1]['2'][2]['2']); Rauch_Temperatur

          let vl = parseFloat(arr[2]['4'][7]['11']); Gestoppt durch externen Kontakt

          wie bekomme ich die nun wieder in das Script?

          Sorry aber ich bin komplett neu Darin

          paul53 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @blackst225 last edited by paul53

            @blackst225 sagte: Ich habe mir nun noch ein Paar Werte raus gesucht:

            const url = 'http://stokercloud.dk/dev/getdriftjson.php?mac=certus';
            const idVL = '0_userdata.0.Heizung.Vorlauf_Temperatur';
            const idPuffer = '0_userdata.0.Heizung.Puffer_Temperatur';
            const idRauch = '0_userdata.0.Heizung.Abgas_Temperatur';
            const idMode = '0_userdata.0.Heizung.Modus';
             
            schedule('* * * * *', function() {
                request(url, function(err, response, json) {
                    if(!err && json) {
                        let arr = JSON.parse(json).jsondata;
                        let vl = parseFloat(arr[1]['2'][0]['0']);
                        let puffer = parseFloat(arr[1]['2'][5]['5']);
                        let rauch = parseFloat(arr[1]['2'][2]['2']);
                        let mode = arr[2]['4'][7]['11']; // string
                        setState(idVL, vl, true);
                        setState(idPuffer, puffer, true);
                        setState(idRauch, rauch, true);
                        setState(idMode, mode, true);
                    }
                });
            });
            
            B 1 Reply Last reply Reply Quote 0
            • B
              blackst225 @paul53 last edited by

              @paul53

              du bist der HAMMER!

              Es klappt!

              vielen vielen Dank!

              B 1 Reply Last reply Reply Quote 0
              • B
                blackst225 @blackst225 last edited by blackst225

                @paul53
                Hallo,

                vielleicht kannst du mir ja noch bei einer hoffentlich Kleinigkeit helfen.

                Meine Werte sehen bis jetzt so aus:

                53036d7c-611c-4553-a899-99cef33a75e1-grafik.png

                Man sieht bei Modus "Slukket" was "OFF" bedeutet.
                es gibt auch den Zustand: "Alarm ingen brændsel" Fehler Keine Flamme und ja dieser Wortsalat steht so im Output.

                Gibt es nun die Möglichkeit zb. über Blockly eine Art übersetzungstabelle zu bauen?

                Zb wenn in Objekt '0_userdata.0.Heizung.Modus' der Wert "Slukket*" auftaucht, dann überschreibe diesen mit "OFF"

                und wenn "Alarm ingen brændsel" evtl mit Wildcard arbeiten "Alarm*" autaucht ersetze mit Alarm

                Schon mal vorab vielen Dank für deine Hilfe!

                Soweit bin ich bis jetzt:

                65b2fe97-ea1b-412b-858e-2dec7cc8f6fd-grafik.png

                Diese Abfrage funktioniert schon mal..
                Jetzt muss ich nur noch alle Zustände abfangen / Übersetzen

                Funktioniert das so mit einem Wildcard in der Zweiten Abfrage?
                Ok Wildcard bekomme ich nicht hin..Es ist immer der == Operator. Gibt es da keinen Like oder Contain?
                Ich habe nichts gefunden.

                1 Reply Last reply Reply Quote 0
                • First post
                  Last post

                Support us

                ioBroker
                Community Adapters
                Donate

                809
                Online

                31.9k
                Users

                80.1k
                Topics

                1.3m
                Posts

                2
                6
                379
                Loading More Posts
                • Oldest to Newest
                • Newest to Oldest
                • Most Votes
                Reply
                • Reply as topic
                Log in to reply
                Community
                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                The ioBroker Community 2014-2023
                logo