NEWS
Zerlegen eines JSON mit bestätigen Werten?
-
Hallo zusammen,
ich habe hier eigentlich ein Blockly, welches eine Funktion aufruft und zwar folgende:
//Datenpunkt mit MQTT-Informationen im json-Format auslesen json = (function () { try {return JSON.parse(getState("mqtt.0.home.OpenMQTTGateway_ESP32_BLE.BTtoMQTT.3F59C86390D1").val);} catch(e) {return {};}})(); //json auslesen und Datenpunkte für Temperatur, Luftfeuchte und Batterie setState("0_userdata.0.OpenMQTTGateway_BLE.3F59C86390D1.Temperature", getAttr(json, 'tempc')); setState("0_userdata.0.OpenMQTTGateway_BLE.3F59C86390D1.Humidity", getAttr(json, 'hum')); setState("0_userdata.0.OpenMQTTGateway_BLE.3F59C86390D1.Battery", getAttr(json, 'batt')); setState("0_userdata.0.OpenMQTTGateway_BLE.3F59C86390D1.RSSI", getAttr(json, 'rssi')); //Log Ausgabe als return der Funktion return "MQTT MI_3F59C86390D1 aktualisiert";
Das Ganze funktioniert zwar, jedoch brauche ich die Werte als bestätigt, da sonst der Statistik Adapter nicht funktioniert. Der wertet nur bestätigte Wert aus.
Wie kann man die Funktion umschreiben? -
@hg6806 setState ergänzen
setState(..,..,true)
-
@hg6806 sagte in Zerlegen eines JSON mit bestätigen Werten?:
Wie kann man die Funktion umschreiben?
So wie von @MCU beschrieben.
Die Doku dazu:
https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#setstate -
Danke euch.
Hier funktioniert es:
//Datenpunkt mit MQTT-Informationen im json-Format auslesen json = (function () { try {return JSON.parse(getState("mqtt.0.home.OpenMQTTGateway_ESP32_BLE.BTtoMQTT.A4C1381BD71A").val);} catch(e) {return {};}})(); //json auslesen und Datenpunkte für Temperatur, Luftfeuchte und Batterie setState("0_userdata.0.OpenMQTTGateway_BLE.A4C1381BD71A.Temperature", getAttr(json, 'tempc'),true); setState("0_userdata.0.OpenMQTTGateway_BLE.A4C1381BD71A.Humidity", getAttr(json, 'hum'),true); setState("0_userdata.0.OpenMQTTGateway_BLE.A4C1381BD71A.Battery", getAttr(json, 'batt')); setState("0_userdata.0.OpenMQTTGateway_BLE.A4C1381BD71A.RSSI", getAttr(json, 'rssi')); setState("0_userdata.0.OpenMQTTGateway_BLE.A4C1381BD71A.Volt", getAttr(json, 'volt')); //Log Ausgabe als return der Funktion return "MQTT MI_A4C1381BD71A aktualisiert";
Aber hier leider nicht:
//Datenpunkt mit MQTT-Informationen im json-Format auslesen json = (function () { try {return JSON.parse(getState("mqtt.0.home.OpenMQTTGateway_ESP32_BLE.BTtoMQTT.3F59C86390D1").val);} catch(e) {return {};}})(); //json auslesen und Datenpunkte für Temperatur, Luftfeuchte und Batterie setState("0_userdata.0.OpenMQTTGateway_BLE.3F59C86390D1.Temperature", getAttr(json, 'tempc'),true); setState("0_userdata.0.OpenMQTTGateway_BLE.3F59C86390D1.Humidity", getAttr(json, 'hum'),true); setState("0_userdata.0.OpenMQTTGateway_BLE.3F59C86390D1.Battery", getAttr(json, 'batt')); setState("0_userdata.0.OpenMQTTGateway_BLE.3F59C86390D1.RSSI", getAttr(json, 'rssi')); //Log Ausgabe als return der Funktion return "MQTT MI_3F59C86390D1 aktualisiert";
da kommt dann jeweils ein
{"ack":true}
EDIT: Manchmal kommt beim letzteren ein Wert, manchmal das "{"ack":true}"