Ein einfaches kleines Script im JSON zu splitten und in Java Vars abzulegen
/*
+------------------------------------------------------------------------------------------------+
| DIESES SCRIPT IST FÜR DIE VERWENDUNG VON EINEM SONOFF MIT DEM TEMPERATURFÜHLER SI7021 GEDAC
| Besten Dank an Paul53 der indirekt und an kmxak der direkt zur Lösung beigetragen hatte:
| https://forum.iobroker.net/viewtopic.php?f=21&t=17737#p185518
| https://forum.iobroker.net/viewtopic.php?t=7204
| http://jsonviewer.stack.hu/
+------------------------------------------------------------------------------------------------+
*/
// Source - hier wird der Pfad zum JSON Wert notiert:
const varSourceJSON = "mqtt.0.ICS_Sonoff.Terasse.SENSOR" /*Platzhalter für Notizen*/;
// Destination - hier wird der Pfad zu den Werten als Java VAR notiert:
const varDestHelligKeit = "Terasse.Analog_in_Digit" /*Platzhalter für Notizen*/;
const varDestTEMP = "Terasse.Temperatur_in_C" /*Platzhalter für Notizen*/;
const varDestTEMPo = "Outside.Temperatur /*Platzhalter für Notizen*/;
const varDestHUMI = "Terasse.Luftfeuchtigkeit_in_Proz" /*Platzhalter für Notizen*/;
const varDestDRUC = "Terasse.Luftdruck_in_mBar" /*Platzhalter für Notizen*/;
// ------------------------------------------------------------------------------------------------- //
// Create States (möglicherweise Schreibzugriff in Objekte??? - keine Ahnung warum ich das angeben muss)
createState(varDestHelligKeit, 0,{type: 'number',name: 'Aktuelle Helligkeit', read: true,write: true,role: 'value'});
createState(varDestTEMP, 0,{type: 'number',name: 'Aktuelle Temperatur', read: true,write: true,role: 'value'});
createState(varDestTEMPo, 0,{type: 'number',name: 'Aktuelle Temperatur', read: true,write: true,role: 'value'});
createState(varDestHUMI, 0,{type: 'number',name: 'Aktuelle Luftfeuchtigkeit', read: true,write: true,role: 'value'});
createState(varDestDRUC, 0,{type: 'number',name: 'Aktuelle Luftdruck', read: true,write: true,role: 'value'});
// Triggere auf jede Änderung vom SourceWert
on({id: varSourceJSON , change: "any"},
function (obj) {
try {obj = JSON.parse(getState(varSourceJSON).val);
} catch (e) {
console.error('Cannot parse: ' + getState(varSourceJSON).val);
return;
}
//Variablen für – diesen Schritt könnte man sich sparen, ich korrigiere hier aber Ungenauigkeiten
varHELLIG = obj.ANALOG.A0;
varTemperatur = obj.BME280.Temperature-6;
varLuftfeuchtigkeit = obj.BME280.Humidity;
varLuftdruck = obj.BME280.Pressure;
// Schreibe die passenden Werte in DESTINATION
setState(varDestHelligKeit, varHELLIG);
setState(varDestTEMP, varTemperatur);
setState(varDestTEMPo, varTemperatur);
setState(varDestHUMI, varLuftfeuchtigkeit);
setState(varDestDRUC, varLuftdruck);
});