Variable per JSON einlesen und auf Plausibilität überprüfen

Homematic-, TCL- und Shell-Script, Toolchain, C, etc.

Moderator: Co-Administratoren

Antworten
nuiler
Beiträge: 147
Registriert: 15.04.2012, 11:07
Wohnort: Ostalbkreis / Deutschland

Variable per JSON einlesen und auf Plausibilität überprüfen

Beitrag von nuiler » 03.05.2019, 13:15

Ich möchte eine Variable per JSON befüllen.

Anbei die JSON-Ausgabe der Seite

{"modultyp":"PULSECOUNTER","vars":[{"name":"0","homematic_name":"w_counter_ip","desc":"ip des pulsecounters","type":"string","unit":"","value":"192.168.178.56"},{"name":"11","homematic_name":"w_counter_1","desc":"w_counter_1","type":"number","unit":"KWh","value":0.00},{"name":"12","homematic_name":"w_power_1","desc":"w_power_1","type":"number","unit":"KW","value":0.001},{"name":"13","homematic_name":"w_counter_2","desc":"w_counter_2","type":"number","unit":"KWh","value":0.00},{"name":"14","homematic_name":"w_power_2","desc":"w_power_2","type":"number","unit":"KW","value":0.001},{"name":"15","homematic_name":"w_counter_3","desc":"w_counter_3","type":"number","unit":"KWh","value":0.00},{"name":"16","homematic_name":"w_power_3","desc":"w_power_3","type":"number","unit":"KW","value":0.006},{"name":"17","homematic_name":"w_counter_4","desc":"w_counter_4","type":"number","unit":"m3","value":1.92},{"name":"18","homematic_name":"w_power_4","desc":"w_power_4","type":"number","unit":"m3/h","value":0.000}],"Systeminfo":{"MAC-Adresse":"5c:cf:7f:c5:f5:e8","Homematic_CCU_ip":"192.168.178.55","WLAN_ssid":"www.nuiler.de","WLAN_Signal_dBm":-46,"sec_seit_reset":180739,"zeitpunkt":"2019.05.08/12:10:28","firmware":"wiffi_counter_30"}}


Anbei mein bisheriger Script, den ich aus verschieden zusammenkopiert. Die Variablen sind bisher noch kunterbunt, da ich bisher och teste.


var temp = dom.GetObject('w_counter_4').Value();
WriteLine(temp);

var url = "http://192.168.178.56/?json:";


!hier ist die Abfrage mit system.Exec
string stdout;
string stderr;
system.Exec("wget -q -O - '"#url#"'", &stdout, &stderr);
!WriteLine(stdout);
string wetter_xml = stdout;
WriteLine(wetter_xml);

integer pm10_position = wetter_xml.Find("w_counter_4");
WriteLine(pm10_position);
string pm10_value = wetter_xml.Substr((pm10_position+70), 4);
WriteLine(pm10_value);


Das Problem ist wenn sich der Wert nun in der Anzahl der Stellen ändert wird ja dieser abgeschnitten.
Kann ich auch filtern zwischen value + }


Kann ich später diese Variable auf Plausibilität überprüfen, d.h. sie darf sich nur einen bestimmten Wert ändern?
www.nuiler.de
Raspberrymatic 3.43.15.20190223

Antworten

Zurück zu „Softwareentwicklung für die HomeMatic CCU“