NEWS
Werte von JSONDATA in IoBroker nutzen Heizungssteuerung
-
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)
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 -
@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); } }); });
-
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:
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
-
@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); } }); });
-
-
@paul53
Hallo,vielleicht kannst du mir ja noch bei einer hoffentlich Kleinigkeit helfen.
Meine Werte sehen bis jetzt so aus:
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:
Diese Abfrage funktioniert schon mal..
Jetzt muss ich nur noch alle Zustände abfangen / ÜbersetzenFunktioniert 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.