NEWS
Abfrage Wiffi Pump
-
Hallo zusammen,
ich versuche krampfhaft die Json Ausgabe von Wiffi Pump (https://www.stall.biz/project/wiffi-pum … berwachung) in den ioBroker zu bekommen, aber scheitere jämmerlich.
Mit http://192.168.178.43/json: bekomme ich eine Ausgabe im Browser.
Aber dieses script
var request = require('request'); request('http://192.168.178.43/json:', function (error, response, body) { console.log('error:', error); // Print the error if one occurred console.log('statusCode:', response && response.statusCode); // Print the response status code if a response was received console.log('body:', body); // Print the HTML });
liefert nichts.
Was mache ich falsch?
Danke und Gruß
Jens
-
Hallo,
poste die JSON Ausgabe des Wiffi hier, dann kann man helfen, auch wenn man selbst keinen Wiffi Pump hat.
Gruß
Pix
-
Ich dachte, daß es mit dem Inhalt weniger zu tun hat, als generell mit der Vorgehensweise.
modultyp "wiffi-pump" vars 0 name "0" homematic_name "wiffi_pump_ip" desc "ip des wiffi-pump" type "string" unit "" value "192.168.178.43" 1 name "4" homematic_name "wiffi_ntc" desc "Temperatur_NTC" type "number" unit "%" value 26.57 2 name "2" homematic_name "wiffi_ww_temp" desc "Temperatur_A" type "number" unit "gradC" value 24 3 name "3" homematic_name "wiffi_vorlauftemp" desc "Temperatur_B" type "number" unit "gradC" value 24 4 name "1" homematic_name "wiffi_pump" desc "Zirkulationspumpe" type "boolean" unit "" value false Systeminfo MAC-Adresse "ea:c8:37:94:1:60" Homematic_CCU_ip "my_ccuip" WLAN_ssid "WLAN-JN" WLAN_Signal_dBm -50 sec_seit_reset 1786 zeitpunkt " 7 16:06" firmware "wiffi_pump2_88"
-
Das ist kein gültiges JSON. Ist das aus dem Browser heraus kopiert?
-
Ja, direkt aus dem Browser.
Wobei ich gesehen habe, daß einige Doppelpunkte fehlen.
Ich habe versucht, irgendwas mit einem abgewandelten Script aus dem Forum (Pegelstände) zu bekommen, da klappt nichts.
Mit dem Parser Adapter bekomme ich mittlerweile einen Datenpunkt mit folgendem Inhalt:
{"modultyp":"wiffi-pump","vars":[{"name":"0","homematic_name":"wiffi_pump_ip","desc":"ip des wiffi-pump","type":"string","unit":"","value":"192.168.178.43"},{"name":"4","homematic_name":"wiffi_ntc","desc":"Temperatur_NTC","type":"number","unit":"%","value":25.90},{"name":"2","homematic_name":"wiffi_ww_temp","desc":"Temperatur_A","type":"number","unit":"gradC","value":23.6},{"name":"3","homematic_name":"wiffi_vorlauftemp","desc":"Temperatur_B","type":"number","unit":"gradC","value":23.4},{"name":"1","homematic_name":"wiffi_pump","desc":"Zirkulationspumpe","type":"boolean","unit":"","value":false}],"Systeminfo":{"MAC-Adresse":"ea:c8:37:94:1:60","Homematic_CCU_ip":"my_ccuip","WLAN_ssid":"WLAN-JN","WLAN_Signal_dBm":-49,"sec_seit_reset":46,"zeitpunkt":" 5 08:28","firmware":"wiffi_pump2_88"}}
Aber was mache ich jetzt damit?
-
probiere mal bitte nur log und nicht console.log
var request = require('request'); request('http://192.168.178.43/json:', function (error, response, body) { log('error:', error); // Print the error if one occurred log('statusCode:', response && response.statusCode); // Print the response status code if a response was received log('body:', body); // Print the HTML });
-
Ja, direkt aus dem Browser.
Wobei ich gesehen habe, daß einige Doppelpunkte fehlen.
Ich habe versucht, irgendwas mit einem abgewandelten Script aus dem Forum (Pegelstände) zu bekommen, da klappt nichts.
Mit dem Parser Adapter bekomme ich mittlerweile einen Datenpunkt mit folgendem Inhalt:
{"modultyp":"wiffi-pump","vars":[{"name":"0","homematic_name":"wiffi_pump_ip","desc":"ip des wiffi-pump","type":"string","unit":"","value":"192.168.178.43"},{"name":"4","homematic_name":"wiffi_ntc","desc":"Temperatur_NTC","type":"number","unit":"%","value":25.90},{"name":"2","homematic_name":"wiffi_ww_temp","desc":"Temperatur_A","type":"number","unit":"gradC","value":23.6},{"name":"3","homematic_name":"wiffi_vorlauftemp","desc":"Temperatur_B","type":"number","unit":"gradC","value":23.4},{"name":"1","homematic_name":"wiffi_pump","desc":"Zirkulationspumpe","type":"boolean","unit":"","value":false}],"Systeminfo":{"MAC-Adresse":"ea:c8:37:94:1:60","Homematic_CCU_ip":"my_ccuip","WLAN_ssid":"WLAN-JN","WLAN_Signal_dBm":-49,"sec_seit_reset":46,"zeitpunkt":" 5 08:28","firmware":"wiffi_pump2_88"}}
Aber was mache ich jetzt damit? `
Der Datenpunkt enthält ein sauberes JSON, welches Du nun wunderbar mit einem Skript verarbeiten und in einzelne Datenpunkte die gewünschten Werte schreiben kannst.
Dann würde ich an Deiner Stelle auf dieser Basis weitermachen.
-
War zu langsam
-
Also die Sache mit request klappt nicht, egal ob Console.Log oder nur Log.
Ich werde mich jetzt mit dem Inhalt des Datenpunktes beschäftigen.
Gibt's da vielleicht noch Beispiele irgendwo?
Allen Danke für die Hilfe
Gruß Jens
-
Also die Sache mit request klappt nicht, egal ob Console.Log oder nur Log.
Ich werde mich jetzt mit dem Inhalt des Datenpunktes beschäftigen.
Gibt's da vielleicht noch Beispiele irgendwo? `
probier mal bitte:
var idJson ="parser.o.deinJson"; function werteAuslesen(jsonStr) { var myJson = JSON.parse(jsonStr); log("wiffi_vorlauftemp: ",myJson.vars[3].value + "°C"); } on({id:idJson,change:'ne'}, function (obj) { werteAuslesen(obj.state.val); }); werteAuslesen(getState(idJson).val);
In der Zeile:
var idJson ="parser.o.deinJson";
Muss die ID Deines Datenpunkts vom Parseradapter rein.
-
Prima, danke, damit kann ich arbeiten.
-
So sieht mein derzeitiges script aus. Damit lassen sich die relevanten Daten des WiffiPump abfragen.
Das Aktualisierungsintervall entspricht im Moment dem, was im Parser Adapter eingestellt ist.
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); });
-
So sieht mein derzeitiges script aus. Damit lassen sich die relevanten Daten des WiffiPump abfragen.
Das Aktualisierungsintervall entspricht im Moment dem, was im Parser Adapter eingestellt ist.
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); }); ```` `
danke fürs teilen!
Gesendet von iPhone mit Tapatalk
-
Und hier dann gleich noch für Wiffi WZ, vom gleichen Anbieter.
Auch eine interessante Sensorplatine.
var idJson = "parser.1.WiffiWZ"; var state01 = "javascript.0.WiffiWZ.CO2"; var state02 = "javascript.0.WiffiWZ.Temp"; var state03 = "javascript.0.WiffiWZ.Feuchte"; var state04 = "javascript.0.WiffiWZ.Taupunkt"; var state05 = "javascript.0.WiffiWZ.Absolutfeuchte"; var state06 = "javascript.0.WiffiWZ.Luftdruck"; var state07 = "javascript.0.WiffiWZ.Helligkeit"; var state08 = "javascript.0.WiffiWZ.MotionLinks"; var state09 = "javascript.0.WiffiWZ.MotionRechts"; var state10 = "javascript.0.WiffiWZ.Noise"; var state11 = "javascript.0.WiffiWZ.SecSinceReset"; createState(state01, {name: "CO2", unit: "%"}); createState(state02, {name: "Temp", unit: "°C"}); createState(state03, {name: "Feuchte", unit: "%rH"}); createState(state04, {name: "Taupunkt", unit: "°C"}); createState(state05, {name: "Absolutfeuchte", unit: "g/m3"}); createState(state06, {name: "Luftdruck", unit: "mB"}); createState(state07, {name: "Helligkeit", unit: "lux"}); createState(state08, {name: "MotionLinks"}); createState(state09, {name: "MotionRechts"}); createState(state10, {name: "Noise"}); createState(state11, {name: "SecSinceReset", unit: "sec"}); function werteAuslesen(jsonStr) { var myJson = JSON.parse(jsonStr); var v01 = myJson.vars[1].value; var v02 = myJson.vars[2].value; var v03 = myJson.vars[3].value; var v04 = myJson.vars[4].value; var v05 = myJson.vars[5].value; var v06 = myJson.vars[6].value; var v07 = myJson.vars[8].value; var v08 = myJson.vars[9].value; var v09 = myJson.vars[10].value; var v10 = myJson.vars[12].value; var v11 = myJson.Systeminfo.millis_seit_reset/1000; setState(state01, v01); setState(state02, v02); setState(state03, v03); setState(state04, v04); setState(state05, v05); setState(state06, v06); setState(state07, v07); setState(state08, v08); setState(state09, v09); setState(state10, v10); setState(state11, v11); log("WiffiWZ CO2: " + v01 + "%"); } on({id:idJson,change:'ne'}, function (obj) { werteAuslesen(obj.state.val); });
-
-
Sorry wenn ich den Thread noch mal auskrame.
Mir ist nicht so ganz klar, was ich denn beim Parser machen muss.
Derzeit habe ich den Parser installiert und den Endpunkt eingegeben:
~~https://cdn.pbrd.co/images/HXC8ypPf.png" />
als Script habe ich das letzte aus dem Thread genutzt:
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); });
in den Objekten sehe ich nun auch unter javascript.0.WiffiPump die Objekte "ON", T1, T2 und T3
aber ein Update der Variablen findet nicht statt.
Ich denke mal ich habe hier im Parser noch was falsch, habe mich aber noch null damit beschäftigt.
Danke~~
-
Hallo,
so wirklich kann ich nicht helfen, wundere mich fast über mich selbst, wenn ich die Beiträge durchscrolle, daß die von mir sind.
Aber schau' mal, weiter oben sind solche Log Zeilen mit drin, vielleicht kommst du damit dem Problem auf die Schliche?
Gruß Jens
-
Hallo Jens
Kannst du mir mal einen Screenshot von deinen Parser Einstellungen schicken?
Gesendet von iPhone mit Tapatalk