NEWS
Addition in Blockly ist ein Takt verpätet
-
@meckii Könntest du das auch als Blockly posten ?
-
Ich habs gerade mal importiert. Hier der Screenshot
Der Grund ist, dass die HTTP-Requests asynchron laufen und der restliche Code in der Zeit weiter läuft. Du müsstest die Request Blöcke also schachteln und am Ende (nach dem zweiten) dann addieren. Die Pausen dazwischen sind viel kurz. Selbst wenn sie länger wären, basiert das ja alles auf Zufall (ob der Request in der Zeit antwortet).
Oder halt direkt den Shelly-Adapter dafür nutzen und sich die Ganze Arbeit sparen
-
Das wäre mein Vorschlag. Nach wie vor unschön das über den HTTP-Aufruf zu machen und nicht über den Shelly-Adapter / MQTT.
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="5~z~#Wiey6Wm+:k-(y;)">powerDach</variable> <variable id="?t`soW~ls~_ZNU7NtEJ/">powerWand</variable> <variable id="pHhGY(Q7*~o%Dd37|tWd">result</variable> </variables> <block type="schedule" id="k8}]c#R$J#k4)~j3iE/]" x="38" y="-112"> <field name="SCHEDULE">*/5 * * * * *</field> <statement name="STATEMENT"> <block type="request" id="rk2/ba#iAcz{o.1Q/7a$"> <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="true"></mutation> <field name="WITH_STATEMENT">TRUE</field> <field name="LOG">log</field> <value name="URL"> <shadow type="text" id="pO18(QsS98Vfw5L]vEhf"> <field name="TEXT">http://</field> </shadow> <block type="text" id="}?YTa6cQ^5}}%:]9+Jq4"> <field name="TEXT">http://192.168.42.82/emeter/0/em_data</field> </block> </value> <statement name="STATEMENT"> <block type="variables_set" id="nN0NOsiK3NItgy`[i?h:"> <field name="VAR" id="5~z~#Wiey6Wm+:k-(y;)">powerDach</field> <value name="VALUE"> <block type="get_attr" id="W;B#3}b+`UbFL|^$j4pB"> <value name="PATH"> <shadow type="text" id="b!YJsu*sjfmsO8-5P5-a"> <field name="TEXT">power</field> </shadow> </value> <value name="OBJECT"> <block type="convert_json2object" id="emW/+YWf|iqNRZ8r4IZr"> <value name="VALUE"> <block type="variables_get" id="bsJ8~?bfvi5w}Tm|Y6/Q"> <field name="VAR" id="pHhGY(Q7*~o%Dd37|tWd">result</field> </block> </value> </block> </value> </block> </value> <next> <block type="request" id="EJiI.Mt]-t@/!+x.EVO]"> <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="pO18(QsS98Vfw5L]vEhf"> <field name="TEXT">http://</field> </shadow> <block type="text" id="R=eVdGpEtS2l0$5lSvtU"> <field name="TEXT">http://192.168.42.82/emeter/1/em_data</field> </block> </value> <statement name="STATEMENT"> <block type="variables_set" id="Z6sVuRB@UNS=5#w=7IX;"> <field name="VAR" id="?t`soW~ls~_ZNU7NtEJ/">powerWand</field> <value name="VALUE"> <block type="get_attr" id="y/o-vXfo@{$L$kvE~sN]"> <value name="PATH"> <shadow type="text" id="{LCKb-*Fj%3.F!?I/0z="> <field name="TEXT">power</field> </shadow> </value> <value name="OBJECT"> <block type="convert_json2object" id="cgwUFo(vLF[~F[7t3##E"> <value name="VALUE"> <block type="variables_get" id="ydNn}:!UQtd6de.j5Ns;"> <field name="VAR" id="pHhGY(Q7*~o%Dd37|tWd">result</field> </block> </value> </block> </value> </block> </value> <next> <block type="create_ex" id="qN0qvmtbx3~Ews`Zjv~s"> <field name="NAME">Geislingen.Solar.Dach</field> <field name="TYPE">number</field> <field name="READABLE">TRUE</field> <field name="WRITEABLE">FALSE</field> <value name="VALUE"> <block type="math_number" id="DA;REE-cDiZGFJWFqJ}Q"> <field name="NUM">0</field> </block> </value> <statement name="STATEMENT"> <block type="update" id="+/O`77Zs[D]`1PXebcv+"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.Geislingen.Solar.Dach</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="CrY;Lp^hcpYdojEKOQzD"> <field name="VAR" id="5~z~#Wiey6Wm+:k-(y;)">powerDach</field> </block> </value> </block> </statement> <next> <block type="create_ex" id="A)W1wsT6SPZW3lv-l4P%"> <field name="NAME">Geislingen.Solar.Wand</field> <field name="TYPE">number</field> <field name="READABLE">TRUE</field> <field name="WRITEABLE">FALSE</field> <value name="VALUE"> <block type="math_number" id="s@:ZK()u1VJnh#+/Eo~;"> <field name="NUM">0</field> </block> </value> <statement name="STATEMENT"> <block type="update" id="G{ymt}c@ru:p%9IAFkd4"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.Geislingen.Solar.Wand</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="variables_get" id="RMn.aVm(y05[|02h-dq;"> <field name="VAR" id="?t`soW~ls~_ZNU7NtEJ/">powerWand</field> </block> </value> </block> </statement> <next> <block type="create_ex" id="-YA!ln})F0;*,VaK*N#8"> <field name="NAME">Geislingen.Solar.gesamt</field> <field name="TYPE">number</field> <field name="READABLE">TRUE</field> <field name="WRITEABLE">FALSE</field> <value name="VALUE"> <block type="math_number" id=",i/x4Z6a5S1T#B0!W64F"> <field name="NUM">0</field> </block> </value> <statement name="STATEMENT"> <block type="update" id="A~Ab*1ZA[B,$CL,K-kDS"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.Geislingen.Solar.gesamt</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_arithmetic" id=":iPP{?/N96a3rD@FYLZ7" inline="false"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="XF0@Xf|:)@!W9EI^a|jO"> <field name="NUM">1</field> </shadow> <block type="variables_get" id=")btF}XTf/=(Krzb_#yHW"> <field name="VAR" id="5~z~#Wiey6Wm+:k-(y;)">powerDach</field> </block> </value> <value name="B"> <shadow type="math_number" id="lXM:`u0kd.-A3`r!OU4J"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="VAarkCZ;_q,;OHg/_zn!"> <field name="VAR" id="?t`soW~ls~_ZNU7NtEJ/">powerWand</field> </block> </value> </block> </value> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </statement> </block> </statement> </block> </xml>
-
@haus-automatisierung
Vielen Dank.
Du magst recht haben dass das so nicht sehr schön ist, aber ich möchte ja was dabei lernen und wollte mich so in Blockly reinarbeiten... -
@meckii Naja das kannst Du ja auch mit den Datenpunkten des Shelly-Adapters. Das Problem ist hier ja auch das Polling. Du "verpasst" ja viele Werte und nervst die Geräte per HTTP. Und kannst die Geräte auch nicht mit einem Passwort schützen. Also insgesamt viele Nachteile.
-
@haus-automatisierung
Die Frage ist ob man bei einem Balkonkraftwerk wirklich jenden Messwert braucht
Ich hätte den Cron später auf 5min oder so gestellt...Dennoch vielen Dank
-
Habe jetzt mit dem Shelly Adapter experimentiert.
Der hat ein Problem - oder ich bin zu doof.Die Shellys laufen nicht hier bei mir zu Hause sondern in einem anderen Subnet welches über VPN (zwei Fritzboxen) gekoppelt ist.
Das angeben der IP hat leider nicht funktioniert... -
@meckii sagte in Addition in Blockly ist ein Takt verpätet:
Der hat ein Problem - oder ich bin zu doof.
Dann wäre die Frage, was Du alles konfiguriert hast und welche Infos Dir in der Dokumentation des Adapters fehlen. Dort probiere ich ja eigentlich jeden Fall genau zu erklären und welche Infos wofür sind.
Mit "der Adapter hat ein Problem" kann ich nichts anfangen.
-
@haus-automatisierung ich nutze keine Shellys.
Aver war da nicht was, dass (je nach Konfiguration??) es nicht über verschiedene Subnetze geht? -
@homoran sagte in Addition in Blockly ist ein Takt verpätet:
Aver war da nicht was, dass (je nach Konfiguration??) es nicht über verschiedene Subnetze geht?
Das ist sehr allgemein gefragt. Kommt drauf an, was man vor hat. Wenn das Routing konfiguriert ist, klappt das natürlich auch. Meistens ist mDNS ein Problem (für CoAP und multicast - sollte man eh nicht nutzen).
Aber wenn man MQTT nutzt, dann gibt es ja kein Auto-Discovery oder Multicast.
Im Thread klappt ja schon der Zugriff von ioBroker zu den Shellies per HTTP. Die Frage ist, ob es auch andersrum klappt: Also dass die Shellies eine MQTT-Verbindung (Port 1882 ist Standard) zum ioBroker im anderen Netz aufbauen dürfen.
-
MQTT kann ich leider nicht nutzen, da mein Vater die Sellyapp (cloud) beibehalten möchte.
Daher der Versuch über CoAP...
Vielleicht hab ich Morgen nochmals Zeit da ein bisschen dran rumzuprobieren... -
@meckii sagte in Addition in Blockly ist ein Takt verpätet:
Daher der Versuch über CoAP...
Wenn auf dem Shelly unicast konfiguriert ist, sollte das aber klappen?
-
Ok. Shelly-Adapter läuft und bekommt die Daten per unicast.
Leider funktioniert mein Script welches die Addition der zwei Leistungen ausführt nicht.<xml xmlns="https://developers.google.com/blockly/xml"> <block type="on_ext" id="9obsf4j}+ALRCYj:v`c/" x="-87" y="-363"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="7e5~BJi;f-iX;[`VnrY6"> <field name="oid">default</field> </shadow> <block type="logic_operation" id="{LJ$h2Gd6wix3:h}x,`f"> <field name="OP">OR</field> <value name="A"> <block type="get_object" id="=9teI6aWLh4}0TGbHAl,"> <field name="OID">shelly.0.SHEM#12345678EAB9#1.Emeter0.Power</field> </block> </value> <value name="B"> <block type="get_object" id="V6/drw_7odA%65gvXNC*"> <field name="OID">shelly.0.SHEM#12345678EAB9#1.Emeter1.Power</field> </block> </value> </block> </value> <statement name="STATEMENT"> <block type="create" id="iEx}%$]rU!v!?!Q09:r9"> <field name="NAME">Solar.gesamt</field> <value name="VALUE"> <block type="math_number" id="O5_F]Wk}$nsVd?O{t5qK"> <field name="NUM">0</field> </block> </value> <value name="COMMON"> <block type="text" id="0Bxa?7/i#HAO?)(*BI=|"> <field name="TEXT">{"type": "number", "unit": "W"}</field> </block> </value> <statement name="STATEMENT"> <block type="update" id="A~Ab*1ZA[B,$CL,K-kDS"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.Solar.gesamt</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_arithmetic" id=":iPP{?/N96a3rD@FYLZ7"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="XF0@Xf|:)@!W9EI^a|jO"> <field name="NUM">1</field> </shadow> <block type="get_value" id="~~[==`uxt.EW0RQ#y|.^"> <field name="ATTR">val</field> <field name="OID">shelly.0.SHEM#12345678EAB9#1.Emeter0.Power</field> </block> </value> <value name="B"> <shadow type="math_number" id="lXM:`u0kd.-A3`r!OU4J"> <field name="NUM">1</field> </shadow> <block type="get_value" id=",PE~URIbDSC{Jh4J{hy5"> <field name="ATTR">val</field> <field name="OID">shelly.0.SHEM#12345678EAB9#1.Emeter1.Power</field> </block> </value> </block> </value> </block> </statement> </block> </statement> </block> </xml>![Screenshot 2023-11-26 112931.png](/assets/uploads/files/1700994592072-screenshot-2023-11-26-112931.png)
-
@meckii Das liegt nicht am Adapter, sondern an deinem falschen Script. Wenn Du mehrere Objekt-IDs überwachen willst musst Du links auf das Zahnrad klicken und diese dann untereinander angeben. Und bitte auf die Objekt ID registrieren, nicht auf ein komplettes Objekt.
Grunlagen anschauen. Der Oder-Block gehört da auf keinen Fall hin
-
@haus-automatisierung
Jetzt Funktioniert es
Vielen lieben Dank!