NEWS
Ausführen von aktualisierendem JavaScript Code
-
ja danke läuft jetzt
-
Hallo, vielen Dank für diese Anleitung. Ich habe auch 2 LS120 jedoch am s0 Bus angeschlossen. Leider liefert mir das Skript immer nur den Wert 0. Was müsste ich denn ändern, damit die Daten vom s0 ausgelesen werden?
Hier die Ausgabe, wenn ich den Link im Browser eingebe ip\a
86577,100 kWh
0 Watt
0%
2090,968 kWh
713 Watt
0
Es wird wohl der obere und nicht der untere Wert geloggt.
viele Grüße
Andreas
-
Hallo,
hat keiner eine Idee?
vg
Andreas
-
Hallo,
Kann man auch den Zählerstand abfragen?
Gruss
Mx-driver
-
Hallo, auch wenn schon etwas älter - habe ich die gleich Fragestellung. Wie kann ich den Zählerstand abfragen ?
Gefunden hab ich nur das als php Code
<?
$IP = GetValue(42120 /[ System\IP-Adressen\Youless LS110]/);
$url = "http://$IP/a?f=j";$handle=fopen($url, "r");
$json="";
$json=fgets($handle, 10000 /[Objekt #10000 existiert nicht]/);
fclose($handle);
$Meter= json_decode($json);SetValue(54104 /[ Versorgung\Strommessung\EVN\Zählerstand]/, 1str_replace(",",".",$Meter->cnt));
SetValue(24466 /[ Versorgung\Strommessung\EVN\aktuelle Leistung]/, 1str_replace(",",".",$Meter->pwr));
SetValue(33148 /[ Versorgung\Strommessung\EVN\Signalstärke]/, 1*str_replace(",",".",$Meter->lvl));?>
Jemand eine Idee ?
-
Hallo,
bin gerade bei meinen Versuchen, die Daten des youless für Vis zu nutzen auf folgendes Wiki gestoßen:
https://wiki.td-er.nl/index.php?title=YouLess
Hilft vielleicht irgendwann irgendwem ...
Gruß
Frank -
Ich hatte auch eine Zeit nach einer Anleitung gesucht um den youless auszuwerten. Parser und JS fand ich aber eher kompliziert im Vergleich zu Blockly und JSON. Ich hab es wie folgt umgesetzt. Ggf hilft das noch jmd anders?! Man brauch dazu nur 3 Datenpunkte. Gesamtverbrauch als string und Rest als number. Oder man konvertiert im Blockly den ersten Wert als Number. Geht auch. Funktioniert einwandfrei bei mir.
Es basiert auf dieser Anleitung: https://www.machs-smart.de/json-blockly-einlesen-parsen-verarbeiten/
-
@eierfeile Klasse!
nachgebaut und hat direkt funktioniert.Hier mal das Blockly falls es jemand braucht
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="U`X2r)s~:#1daPU6#C5S">result</variable> </variables> <block type="schedule" id="h)sr[UqjCX4r`J0y,NOU" x="213" y="38"> <field name="SCHEDULE">*/5 * * * *</field> <statement name="STATEMENT"> <block type="request" id="C@^EhcbOp4pfjda+@DS$"> <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="true"></mutation> <field name="WITH_STATEMENT">TRUE</field> <field name="LOG"></field> <value name="URL"> <shadow type="text" id="?F;%q5pb.vNj3_(|nAbj"> <field name="TEXT">http://192.168.178.130/a?f=j</field> </shadow> </value> <statement name="STATEMENT"> <block type="control" id="#qP~WDbEXNtX-^w0YWmo"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">Meine_Geraete.0.Youless_Gesamtverbrauch</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_attr" id="DT:+-IH`~S/_~:^(cIe1"> <value name="PATH"> <shadow type="text" id="pP)C9-DV_0PgX]OX,E)w"> <field name="TEXT">cnt</field> </shadow> </value> <value name="OBJECT"> <block type="convert_json2object" id="V=JUWD*B8!qW2PGQOo@F"> <value name="VALUE"> <block type="variables_get" id=":V0ok#UMRzhU+v6M6F1~"> <field name="VAR" id="U`X2r)s~:#1daPU6#C5S">result</field> </block> </value> </block> </value> </block> </value> <next> <block type="control" id="~0Y4#HidzaQ3;PM6H(0C" disabled="true"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">Meine_Geraete.0.Youless_Momentanverbrauch</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_attr" id="Jo.jGs.yi=0(1_[;BcO|"> <value name="PATH"> <shadow type="text" id="#DOA[Vtj?9bhe2KGAZ6k"> <field name="TEXT">pwr</field> </shadow> </value> <value name="OBJECT"> <block type="convert_json2object" id="`}J3R/ZvCZ}_HFvs,7r6"> <value name="VALUE"> <block type="variables_get" id="2[,~KAOhOS3:D++8VL4f"> <field name="VAR" id="U`X2r)s~:#1daPU6#C5S">result</field> </block> </value> </block> </value> </block> </value> <next> <block type="control" id="V7qiF1[#4B%UF[;H.N~D" disabled="true"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">Meine_Geraete.0.Youless_Signalstaerke</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="get_attr" id="c4B1sGnP32M@w(0kpy/g"> <value name="PATH"> <shadow type="text" id="koHP)70[DX91M@B@P0hX"> <field name="TEXT">lvl</field> </shadow> </value> <value name="OBJECT"> <block type="convert_json2object" id="{20BTmI`~|{2m)?A)u:6"> <value name="VALUE"> <block type="variables_get" id="9%rHN^Uwq8X#m]qsQY?F"> <field name="VAR" id="U`X2r)s~:#1daPU6#C5S">result</field> </block> </value> </block> </value> </block> </value> </block> </next> </block> </next> </block> </statement> </block> </statement> </block> </xml>
-
@eierfeile Hallo zusammen,
vielen Dank für das Skript! Tolle Arbeit. Ich habe jedoch noch Einträge im Log, die ich nicht fixen kann:javascript.0 2021-09-02 10:37:40.159 warn You are assigning a string to the state "alias.0.Youless_Zählerstand" which expects a number. Please fix your code to use a number or change the state type to string. This warning might become an error in future versions. javascript.0 2021-09-02 10:37:40.088 info State value to set for "0_userdata.0.Youless_Gesamtverbrauch" has to be type "number" but received type "string"
Könnt ihr mir verraten, wie euer Datenpunkt "Gesamtverbrauch" definiert ist?
-
@deejaydave said in Ausführen von aktualisierendem JavaScript Code:
@eierfeile Hallo zusammen,
vielen Dank für das Skript! Tolle Arbeit. Ich habe jedoch noch Einträge im Log, die ich nicht fixen kann:javascript.0 2021-09-02 10:37:40.159 warn You are assigning a string to the state "alias.0.Youless_Zählerstand" which expects a number. Please fix your code to use a number or change the state type to string. This warning might become an error in future versions. javascript.0 2021-09-02 10:37:40.088 info State value to set for "0_userdata.0.Youless_Gesamtverbrauch" has to be type "number" but received type "string"
Könnt ihr mir verraten, wie euer Datenpunkt "Gesamtverbrauch" definiert ist?
Das würde mich auch interessieren.
23457,066 ist mein Wert und bekomme die selber Meldung.
... createState('Aktuelle_Leistung', {type: 'number', unit: 'W', role: 'value.power'}); createState('Zählerstand', {type: 'number' , unit: 'kWh', role: 'value.power'}); ... setState('Zählerstand', obj.cnt, true); setState('Aktuelle_Leistung', obj.pwr, true);
Aktuelle_Leistung wird ohne Fehler übernohmen.
-
Keiner ne Idee dazu?
-
@deejaydave said in Ausführen von aktualisierendem JavaScript Code:
Keiner ne Idee dazu?
Sieht so aus. Schade.
-
http://192.168.*.*/a?f=j
Mit diesem Befehl lese ich die Daten aus und bekomme:
cnt " 23559,653"
pwr 661
lvl 24
dev "(±0%)"
det ""
con ""
sts ""
cs0 " 0,000"
ps0 0
raw 221Evtl liegt es ja an " "
Nur wie bekomme ich das weg? -
So wie es aussieht, werden wir mit diesem Fehler leben müssen
-
@deejaydave sagte in Ausführen von aktualisierendem JavaScript Code:
So wie es aussieht, werden wir mit diesem Fehler leben müssen
Nein, müsst ihr nicht. Die Lösung ist aber extrem einfach:
An Stelle von
setState('Zählerstand', obj.cnt, true); setState('Aktuelle_Leistung', obj.pwr, true);
setState('Zählerstand',parseFloat( obj.cnt), true); setState('Aktuelle_Leistung', parseFloat(obj.pwr), true);
-
@asgothian Danke dir für die Rückmeldung. Ich hab das Blockly-Skript von "eierfeile" nachgebaut und so sieht mein javaskript aus:
var result;
schedule("*/5 * * * * *", async function () { try { require("request")('http://192.168.178.73/a?f=j', async function (error, response, result) { setState("0_userdata.0.Youless_Gesamtverbrauch"/*Youless_Gesamtverbrauch*/, getAttr((function () { try {return JSON.parse(result);} catch(e) {return {};}})(), 'cnt')); setState("0_userdata.0.Youless_Momentanverbrauch"/*Youless_Momentanverbrauch*/, getAttr((function () { try {return JSON.parse(result);} catch(e) {return {};}})(), 'pwr')); setState("0_userdata.0.Youless_Signalstaerke"/*Youless_Signalstaerke*/, getAttr((function () { try {return JSON.parse(result);} catch(e) {return {};}})(), 'lvl')); }).on("error", function (e) {console.error(e);}); } catch (e) { console.error(e); } });
Könntest du mir verraten wo und wie ich das in dieses Skript einbauen soll? Danke im Voraus
-
-
@asgothian Verstehe, danke. Aber in meinem Fall (ich nutze Blockly) kann ich es gar nicht einfügen. Also müsste ich das Blockly-Skript löschen und stattdessen ein Javaskript aufsetzen? Oder gibt es eine Möglichkeit den parsefloat im Blockly einzusetzen?
-
@deejaydave Es gibt einen Konvertierungsbaustein (bei mir im englischen toNumber) den du da vor einhängen kannst.
A.
-
@asgothian Manchmal sieht man den Wald vor lauter Bäumen nicht. Danke!