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);
});
Schreibe einen Kommentar