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? -
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? -
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 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}"
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden