NEWS
Wie Werte mit Parser auslesen?
-
@c1olli said in Wie Werte mit Parser auslesen?:
PGrid
die werte stehen nicht direkt in der html seite drin sondern
werden dynamisch abgerufen.- öffne bitte die developer tools mit F12 (bei chrome oder edge)
- dann gehe in den Reiter Network
- dann drücke F5 (die Seite wird neu abgerufen)
- dann schaue bei den einzelnen requests, da müsste einer vorkommen der am Ende das folgende enthält (ggfs. den filter verwenden)
/?topic=GetPerf&
- denn dann anklicken und den text aus einem der rechts erscheinenden reiter "payload" "response" oder preview kopieren
da müsste das json enthalten, aus welchen man die daten extrahieren kann
-
@oliverio sagte in Wie Werte mit Parser auslesen?:
/?topic=GetPerf&
Das sieht dann so aus:
Bzw. nach Doppelklick so:
http://192.168.178.108/?topic=GetPerf&{"SoC":80,"PGrid":-717,"PPV":3330,"PBat":-2525,"BMSStatus":0,"SysStatus":2097152,"ComStatus":0,"InternetStatus":0}
-
dann so als javascript im skript adapter
du musst nur noch die Datenpunkte anlegen, am besten alle als nummer
und die komplette URL bei xyz eintragen und prüfen ob es per http oder https abgerufen werden kann.
aktuell wird kein login berücksichtigt.const axios = require("axios"); var dp_pgrid="0_userdata.0.pgrid"; var dp_ppv="0_userdata.0.ppv"; var dp_pbat="0_userdata.0.pbat"; var dp_soc="0_userdata.0.soc"; var url = "http://xyz/?topic=GetPerf&" axios.get(url).then(({ data })=> { setState(dp_pgrid,data.PGrid); setState(dp_ppv,data.PPV); setState(dp_pbat,data.PBat); setState(dp_soc,data.SoC); })
-
@oliverio
Das ist natürlich viel eleganter. Login gibt es nicht, da das Gerät nur lokal verfügbar ist. -
@c1olli
Die Punkte werden gefunden und gelesen, jetzt müsste das ganze nur noch sekündlich ausgelesen werden.Wie mache ich das am besten?
-
const axios = require("axios"); var dp_pgrid="0_userdata.0.pgrid"; var dp_ppv="0_userdata.0.ppv"; var dp_pbat="0_userdata.0.pbat"; var dp_soc="0_userdata.0.soc"; var url = "http://xyz/?topic=GetPerf&" function getData() axios.get(url).then(({ data })=> { setState(dp_pgrid,data.PGrid); setState(dp_ppv,data.PPV); setState(dp_pbat,data.PBat); setState(dp_soc,data.SoC); }); setTimeout(getData(),1000); } getData();
-
@OliverIO
Die Zeile 8
meldet compile faild -
meist schreib ich die blind ohne einen editor.
2 fehler haben sich eingeschlichenconst axios = require("axios"); var dp_pgrid="0_userdata.0.pgrid"; var dp_ppv="0_userdata.0.ppv"; var dp_pbat="0_userdata.0.pbat"; var dp_soc="0_userdata.0.soc"; var url = "http://xyz/?topic=GetPerf&" function getData() { axios.get(url).then(({ data })=> { setState(dp_pgrid,data.PGrid); setState(dp_ppv,data.PPV); setState(dp_pbat,data.PBat); setState(dp_soc,data.SoC); }); setTimeout(getData,1000); } getData();
-
Granatenstark -
läuft jetzt genau wie geplant.Ich würde das auch gerne so aus dem Ärmel schütteln können.
Besten Dank
Gruß
Olli -
@c1olli
immer schön üben.
javascript hat so seine kleinen Fallstricke. wenn man die kennt gehts ganz gut.