NEWS
Extraktion der MQTT Sensorwerte / Tasmota
-
Hmm, habe den Code angepasst, geht aber leider noch nicht. Was mache ich falsch?
var json = "mqtt.0.tele.Sensor_Garten.SENSOR"; var Temp = "javascript.0.Garten.BME280.Values.Temperatur"; var Druck = "javascript.0.Garten.BME280.Values.Luftdruck"; var Luft = "javascript.0.Garten.BME280.Values.Luftfeuchtigkeit"; on(json, function(dp) { var obj = JSON.parse(dp.state.val); setState(Temp(obj.Temperature)); setState(Druck, parseFloat(obj.Humidity)); setState(Luft, parseFloat(obj.Pressure)); }); -
Super, danke. Funktioniert jetzt.
Ich habe allerdings einen zweiten String, den ich nicht zerlegen kann (wegen Daten mehrerer Sensoren).
{"Time":"2018-10-22T11:30:05","ANALOG":{"A0":3},"DS18B20-1":{"Id":"02099177E423","Temperature":55.9},"DS18B20-2":{"Id":"02099177E689","Temperature":30.8},"DS18B20-3":{"Id":"020A91771717","Temperature":52.8},"DS18B20-4":{"Id":"020A9177F712","Temperature":29.4},"TempUnit":"C"}
Kann mir jemand bitte den letzten Codeschnipsel so anpassen, das das auch funktioniert?
Im Log finde ich immer nur folgenden Eintrag:
Script.js.Scripts.Skript3: Temperatur: undefined
Vielen Dank vorab.
on(json, function(dp) { var obj = JSON.parse(dp.state.val).D18B20-1; setState(Wasser_mitte, obj.Temperature); log('Temperatur: ' + obj.Temperature); }); -
Hallo Ingo,
ich kann dir dazu leider keinen Script bieten, aber vor diesem Problem stand ich vor einiger Zeit auch.
Hab dann anstelle von Tasmota EasyESP genommen und kriege damit für jeden Sensor einen einzelnen Datenpunkt.
Sieht dann so aus:

-
Gelöst habe ich das Probelm mit dem unzulässige Zeichen (-) in dem ich im JSON string das Minus Zeichen (-) durch ein Unterstrich (_) ersetzt habe.
var idJSON = 'mqtt.0.tele.wasser.SENSOR'; // Datenpunkt-ID mit JSON-String var Temp1; var Temp2; var Temp3; var Temp4; var Zeit; var idTemp1 = 'mqtt.0.tele.wasser.Temperature1'; var idTemp2 = 'mqtt.0.tele.wasser.Temperature2'; var idTemp3 = 'mqtt.0.tele.wasser.Temperature3'; var idTemp4 = 'mqtt.0.tele.wasser.Temperature4'; function JSONtoTemp(json) { json = json.replace(/DS18B20-/g, "DS18B20_" ); var obj = JSON.parse(json); // log('Wasser-json: ' + json); Zeit = obj.Time; Temp1 = obj.DS18B20_1.Temperature; Temp2 = obj.DS18B20_2.Temperature; Temp3 = obj.DS18B20_3.Temperature; Temp4 = obj.DS18B20_4.Temperature; // log('Temp1: ' + Temp1 + ' °C, Temp2: ' + Temp2 + '°C, Temp3: ' + Temp3 + ' °C, Temp4: ' + Temp4 + '°C'); setState(idTemp1, Temp1); setState(idTemp2, Temp2); setState(idTemp3, Temp3); setState(idTemp4, Temp4); } JSONtoTemp(getState(idJSON).val); // Script start on(idJSON, function(dp) { // triggern bei Wertänderung JSONtoTemp(dp.state.val); }); -
Hallo,
ich brauche eure Hilfe.
Per MQTT bekomme ich von meinem ESP8266, auf dem die Tasmota Firmware installiert ist, folgende Sensordaten an IOBRoker geliefert:
Baum: mqtt.0.tele.Sensor_Garten.SENSOR
Wert: {"Time":"2018-10-21T12:54:27","BME280":{"Temperature":18.5,"Humidity":34.6,"Pressure":992.2},"TempUnit":"C"}
Wie bekomme ich die Werte nun relativ einfach extrahiert, und zwar als eigene States, die ich dann widerum weiterverarbeiten kann?
Danke und Grüße, Ingo
@ingo1977 said in Extraktion der MQTT Sensorwerte / Tasmota:
Hallo,
ich brauche eure Hilfe.
Per MQTT bekomme ich von meinem ESP8266, auf dem die Tasmota Firmware installiert ist, folgende Sensordaten an IOBRoker geliefert:
Baum: mqtt.0.tele.Sensor_Garten.SENSOR
Wert: {"Time":"2018-10-21T12:54:27","BME280":{"Temperature":18.5,"Humidity":34.6,"Pressure":992.2},"TempUnit":"C"}
Wie bekomme ich die Werte nun relativ einfach extrahiert, und zwar als eigene States, die ich dann widerum weiterverarbeiten kann?
Danke und Grüße, Ingo
Ich stehe exakt vor der gleichen Hürde.
Ich bin allerdings noch so neu, ich weiß garnicht wie ihr an diese json Datei kommt,um dann die Bindestriche mit Unterstrichen zu ersetzen. -
@ingo1977 said in Extraktion der MQTT Sensorwerte / Tasmota:
Hallo,
ich brauche eure Hilfe.
Per MQTT bekomme ich von meinem ESP8266, auf dem die Tasmota Firmware installiert ist, folgende Sensordaten an IOBRoker geliefert:
Baum: mqtt.0.tele.Sensor_Garten.SENSOR
Wert: {"Time":"2018-10-21T12:54:27","BME280":{"Temperature":18.5,"Humidity":34.6,"Pressure":992.2},"TempUnit":"C"}
Wie bekomme ich die Werte nun relativ einfach extrahiert, und zwar als eigene States, die ich dann widerum weiterverarbeiten kann?
Danke und Grüße, Ingo
Ich stehe exakt vor der gleichen Hürde.
Ich bin allerdings noch so neu, ich weiß garnicht wie ihr an diese json Datei kommt,um dann die Bindestriche mit Unterstrichen zu ersetzen.