NEWS
Verständnis parser Adapter und Script
-
Hi
Ich habe hier glaube ich ein Verständnis Problem in Bezug auf den Parser Adapter und ein dazu passenden Script.
Ich kann hier eine Pumpensteuerung per json auslesen. Ergebnis:
{"modultyp":"wiffi-pump","vars":[{"name":"0","homematic_name":"wiffi_pump_ip","desc":"ip des wiffi-pump","type":"string","unit":"","value":"192.168.119.28"},{"name":"4","homematic_name":"wiffi_ntc","desc":"Temperatur_NTC","type":"number","unit":"%","value":22.54},{"name":"2","homematic_name":"wiffi_ww_temp","desc":"Temperatur_A","type":"number","unit":"gradC","value":21.3},{"name":"3","homematic_name":"wiffi_vorlauftemp","desc":"Temperatur_B","type":"number","unit":"gradC","value":21.6},{"name":"1","homematic_name":"wiffi_pump","desc":"Zirkulationspumpe","type":"boolean","unit":"","value":false}],"Systeminfo":{"MAC-Adresse":"91:b:47:e3:50:cc","Homematic_CCU_ip":"192.168.119.27","WLAN_ssid":"LAN-Solo","WLAN_Signal_dBm":-37,"sec_seit_reset":1610,"zeitpunkt":"2019-01-23 15:22:55","firmware":"wiffi_pump2_90"}}
Dazu habe ich viewtopic.php?f=21&t=13812&hilit=wiffipump auch ein passendes Script gefunden, welches bei mir nun so aussieht:
var idJson = "parser.0.WiffiPump"; var state1 = "javascript.0.WiffiPump.T1"; var state2 = "javascript.0.WiffiPump.T2"; var state3 = "javascript.0.WiffiPump.T3"; var state4 = "javascript.0.WiffiPump.On"; createState(state1, {name: "T1", unit: "°C"}); createState(state2, {name: "T2", unit: "°C"}); createState(state3, {name: "T3", unit: "°C"}); createState(state4, {name: "On",}); function werteAuslesen(jsonStr) { var myJson = JSON.parse(jsonStr); var T1 = myJson.vars[1].value; var T2 = myJson.vars[2].value; var T3 = myJson.vars[3].value; var On = myJson.vars[4].value; log("wiffiPumpT1: " + T1 + "°C"); log("wiffiPumpT2: " + T2 + "°C"); log("wiffiPumpT3: " + T3 + "°C"); log("wiffiPumpOn: " + On); setState(state1, T1); setState(state2, T2); setState(state3, T3); setState(state4, On); } on({id:idJson,change:'ne'}, function (obj) { werteAuslesen(obj.state.val); });
Soweit, so gut. Jedoch bin ich mir ziemlich sicher, dass ich dazu im Parser auch noch etwas konfigurieren muss , einfach nur den Adapter installieren reicht ja nicht …..
Kann mir da jemand von Euch auf die Sprünge helfen? Ich habe die Frage auch im o.g. Thread schon gepostet, aber man weiss ja, wie das ist mit den alten Threads .....
PS: Die Variablen werden in den Objekten unter javascript.0.WiffiPump auch angelegt (macht ja das script), aber nicht mit "Leben" gefüllt.
-
{"modultyp":"wiffi-pump","vars":[{"name":"0","homematic_name":"wiffi_pump_ip","desc":"ip des wiffi-pump","type":"string","unit":"","value":"192.168.119.28"},{"name":"4","homematic_name":"wiffi_ntc","desc":"Temperatur_NTC","type":"number","unit":"%","value":22.54},{"name":"2","homematic_name":"wiffi_ww_temp","desc":"Temperatur_A","type":"number","unit":"gradC","value":21.3},{"name":"3","homematic_name":"wiffi_vorlauftemp","desc":"Temperatur_B","type":"number","unit":"gradC","value":21.6},{"name":"1","homematic_name":"wiffi_pump","desc":"Zirkulationspumpe","type":"boolean","unit":"","value":false}],"Systeminfo":{"MAC-Adresse":"91:b:47:e3:50:cc","Homematic_CCU_ip":"192.168.119.27","WLAN_ssid":"LAN-Solo","WLAN_Signal_dBm":-37,"sec_seit_reset":1610,"zeitpunkt":"2019-01-23 15:22:55","firmware":"wiffi_pump2_90"}} ```` `
wo liegt dein JSON?
sollte hier sein:
"parser.0.WiffiPump"
probier mal:
`var idJson = getState("parser.0.WiffiPump").val; function werteAuslesen() { var myJson = JSON.parse(idJson); for (i=0; i<(myJson.vars.length); i++){ log(myJson.vars[i].homematic_name + ": " + myJson.vars[i].value); } } on({id: 'javascript.0.WiffiPump.json', change: "ne"}, function (obj) { werteAuslesen(); });`[/i][/i]
-
Hi Lenny
ja, liegt da, aber was genau konfiguriere ich im Parser.0.WiffiPump?
~~![](</s><URL url=)https://cdn.pbrd.co/images/HXNgDYW.png" />
bin mir ziemlich sicher, dass meine Konfiguration falsch ist und dort einiges fehlt …...~~
-
Ich arbeite nicht mit dem parse-Adapter. Aber müsste da nicht nen Intervall angegeben werden? Der Typ müsste auch "string" sein, denke ich.
-
Ich arbeite nicht mit dem parse-Adapter. Aber müsste da nicht nen Intervall angegeben werden? Der Typ müsste auch "string" sein, denke ich. `
Das war es … Typ String ..... mal wieder zu kompliziert gedacht, ich dachte ich müsste für jeden Wert eine RegEx anlegen ....
Danke
-
Ich arbeite nicht mit dem parse-Adapter. Aber müsste da nicht nen Intervall angegeben werden? Der Typ müsste auch "string" sein, denke ich. `
Das war es … Typ String ..... mal wieder zu kompliziert gedacht, ich dachte ich müsste für jeden Wert eine RegEx anlegen ....
Danke `
super, du kannst die Daten auch im Script holen. Den Parser brauchst dann nicht. Sind 2 Zeilen mehr im Script.Im Grunde fragt der Parser-Adapter im eingestellten Intervall die eingestellte IP ab und speichert das json. Mit dem Script triggertst du auf Änderung des Datenpunkt.
Das hier sollte das Gleiche tun, ohne Parse-Adapter (kanns leider nicht testen):```
`var request = require('request');
var url = 'http://192.168.119.28/json';function abfrage() {
request(url, function (error, response, body) {
myJson = JSON.parse(body);
});
for (i=0; i<(myJson.vars.length); i++){
log(myJson.vars[i].homematic_name + ": " + myJson.vars[i].value);
// hier noch die setState Sachen rein...
// setState('javascript.0.WiffiPump.' + myJson.vars[i].homematic_name, myJson.vars[i].value, true);
}
}
schedule("*/1 * * * *", abfrage);
abfrage();` Im Grunde fragt der Parser-Adapter im eingestellten Intervall die eingestellte IP ab und speichert das json. Mit dem Script triggertst du auf Änderung des Datenpunkt.Das kannst auch in dem Script zusammen machen.[/i][/i][/i][/i]
-
cool, danke!