NEWS
Datenpunkt auslesen & Objekt wahr setzen
-
@uli977 sagte in Datenpunkt auslesen & Objekt wahr setzen:
Meine Herausforderung ist
Nicht nur Deine - auch unsere
dass je nach Wert im Objekt 257
Was genau kann dieser DP enthalten?
Und wie sehen die DP z.B. unterhalb von "Cotton_Cotton_Cotton" aus.
Die Kunst wird sein, den Wert von "Object 257" in die passende ID zu übersetzen.
-
@uli977 sagte: Wenn Objekt 257 = 29188, dann steuere 29188 auf wahr
"29188" ist der Wert des DP "257"?
Wenn "29188" der Name des Start-DP ist, muss die ID in einer Schleife ermittelt werden. -
Tur mir leid und ich weiß eure Hilfe wirklich zu schätzen!
"Die Kunst wird sein, den Wert von "Object 257" in die passende ID zu übersetzen.!"--> genau
Datenpunkt 257 (Selected Programm) - der wird über den Cloudless HomeConnect Adapter beschrieben, wenn ich an der WM das Prgramm wähle.
{ "type": "state", "common": { "name": "257", "type": "string", "role": "text", "write": true, "read": true, "def": "" }, "native": {}, "from": "system.adapter.cloudless-homeconnect.0", "user": "system.user.admin", "ts": 1745141264392, "_id": "cloudless-homeconnect.0.484010393060000406.SelectedProgram", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
Das ist der Start Datenpunkt, in diesem Fall vom Ordner=Programm Cotton (cloudless homeconnect adapter)
{ "type": "state", "common": { "name": "29188", "type": "boolean", "role": "button", "write": true, "read": false, "def": false }, "native": {}, "from": "system.adapter.cloudless-homeconnect.0", "user": "system.user.admin", "ts": 1745141264779, "_id": "cloudless-homeconnect.0.484010393060000406.Program.Cotton_Cotton_Cotton.Start", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
Das Skipt mit jetzigem Stand
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable type="interval" id="Intervall">Intervall</variable> <variable id="}[h?ZBXS`OiSusXv!)#S">Datenpunkt xy</variable> </variables> <block type="comment" id="aT?LBQImYhka_pPTHi+3" x="-37" y="-237"> <field name="COMMENT">Fernstart an WM aktiviert</field> <next> <block type="on_ext" id="=d1,hn$0N38VTMQBdP4H"> <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="cLVMX6yPJK6@vf#a(N]?"> <field name="oid">cloudless-homeconnect.0.484010393060000406.Status.RemoteControlStartAllowed</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="nl8e+#mL_T^d*=*@G.3{"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_compare" id="I?BC@;=H;/sH+1^:.f+t"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="S9Ybz[asb+#1MdTjbi-}"> <field name="ATTR">val</field> <field name="OID">cloudless-homeconnect.0.484010393060000406.Status.RemoteControlStartAllowed</field> </block> </value> <value name="B"> <block type="logic_boolean" id="?WOh@M)GYy5Qa/4vK]H*"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="*WOsve)YYCvE.99k(v@9"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.haushalt.Waschmaschine_PV-Start</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id=";Waj*[3zxKlEmYx+.JC3"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <value name="IF1"> <block type="logic_compare" id=".``vK-x2gKIry6ar*9)s"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="J0(_~*YZSRu81-YkhYJl"> <field name="ATTR">val</field> <field name="OID">cloudless-homeconnect.0.484010393060000406.Status.RemoteControlStartAllowed</field> </block> </value> <value name="B"> <block type="logic_boolean" id="a:(yG,@_}JlIV:%^eL#{"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <statement name="DO1"> <block type="timeouts_clearinterval" id="zJqizpA/f-`bF/ctW~Xi"> <field name="NAME">Intervall</field> <next> <block type="control" id="mFJ5*t$h5vT~WL+@E2%6"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.haushalt.Waschmaschine_PV-Start</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="Zz[};mcW.RD81t*9:uCA"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </statement> </block> </statement> <next> <block type="on_ext" id="`sIq-5c.4u6z]?|ryMR]"> <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="sz)0L*k.7ap_Aj%dpps["> <field name="oid">javascript.0.haushalt.Waschmaschine_PV-Start</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="6|-A$bqbc[#_`#$WJ}Ya"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_compare" id="ngBg#(_ByB3W~M(]uI=^"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="Bi*B,?rC3u}25=k[1#Z{"> <field name="ATTR">val</field> <field name="OID">javascript.0.haushalt.Waschmaschine_PV-Start</field> </block> </value> <value name="B"> <block type="logic_boolean" id="ZLP?iEu]$jy[yTRgow-:"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="Uw:Rc[HDgMRqxaC3El%R"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.sonstige.Pushover_Text</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="(8*0M4J:/*vQ!gc-PkvC"> <field name="TEXT">PV-Start Waschmaschine aktiviert</field> </block> </value> </block> </statement> <value name="IF1"> <block type="logic_compare" id="]~lZ#AJjBVcep[0]Nt;Z"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="C;LmtCMvvc.S:`}.{H*+"> <field name="ATTR">val</field> <field name="OID">javascript.0.haushalt.Waschmaschine_PV-Start</field> </block> </value> <value name="B"> <block type="logic_boolean" id="xh$f,UK%(3|eo*=0NqzU"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <statement name="DO1"> <block type="control" id="QH=nY4G?AFK*y:TGE?~z"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.sonstige.Pushover_Text</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="%8Ef)8@=twCfm_n~=7d9"> <field name="TEXT">PV-Start Waschmaschine deaktiviert</field> </block> </value> </block> </statement> </block> </statement> <next> <block type="comment" id="qJLQ[N+048v:Sgixp$YJ"> <field name="COMMENT">PV-Start Waschmaschine</field> <next> <block type="on_ext" id="#dD3}u+jYOm?lB-QoI!G"> <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="%1b`.:?T48Y;+:[N#+d_"> <field name="oid">javascript.0.haushalt.Waschmaschine_PV-Start</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="9LY*jyu_Fl;C:,`lBXM|"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_compare" id="1YizWU_vPe~tN?p+I`5W"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="^$3um]{tNDWMif(P#K2("> <field name="ATTR">val</field> <field name="OID">javascript.0.haushalt.Waschmaschine_PV-Start</field> </block> </value> <value name="B"> <block type="logic_boolean" id="];[A)+|Wg1(KnTczt|Bt"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="timeouts_clearinterval" id="JXyBI}_mv+vpsTq)oFuI"> <field name="NAME">Intervall</field> <next> <block type="timeouts_setinterval" id=")M]w7F@bE]T;,fQ|L:3G"> <field name="NAME">Intervall</field> <field name="INTERVAL">10</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="controls_if" id="r2MD_{L[nibERueRM(GG"> <value name="IF0"> <block type="logic_operation" id="jgI%p_AN}s/,_Zroun^/" inline="false"> <field name="OP">OR</field> <value name="A"> <block type="logic_compare" id="`:gKZ;7jfe0E0/rmI`#N"> <field name="OP">GT</field> <value name="A"> <block type="get_value" id="V.e]@5;[w+vpdl+^F-dk"> <field name="ATTR">val</field> <field name="OID">modbus.0.holdingRegisters.2_Aktuelle_Einspeisung</field> </block> </value> <value name="B"> <block type="math_number" id="Ux:Rc/2qYvC;Fa=tGUUH"> <field name="NUM">1200</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="EDW^Ka2!IFpX^!#rJ.eA"> <field name="OP">GT</field> <value name="A"> <block type="get_value" id="qvu(fR:h[^xsjs?Drbm-"> <field name="ATTR">val</field> <field name="OID">evcc.0.loadpoint.1.status.chargePower</field> </block> </value> <value name="B"> <block type="math_number" id="L5u/3-G2ht{xZxe({4Z{"> <field name="NUM">0</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="comment" id="J-./yVsOFr*Ra1HW7;Fm"> <field name="COMMENT">Programm Baumwolle</field> <next> <block type="controls_if" id="k?bn-;]ASn/Sl|Q/`g6N"> <value name="IF0"> <block type="logic_compare" id=".gy{+E^_BpHY*xUYagdc"> <field name="OP">NEQ</field> <value name="A"> <block type="get_value" id="{6!|3tO/fWX4nStU,mCr"> <field name="ATTR">val</field> <field name="OID">cloudless-homeconnect.0.484010393060000406.SelectedProgram</field> </block> </value> <value name="B"> <block type="math_number" id=":X15o@#f.E^zW,$TW^8|"> <field name="NUM">0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="XTm5WDCYAcR8QV%3tndP"> <field name="VAR" id="}[h?ZBXS`OiSusXv!)#S">Datenpunkt xy</field> <value name="VALUE"> <block type="text_join" id="Y:y`[)#U8ca8$9yC5GL#"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id=".kU#E:f|z`xLo}KQh?j|"> <field name="TEXT">cloudless-homeconnect.0.484010393060000406.SelectedProgram</field> </block> </value> <value name="ADD1"> <block type="on_source" id="G3F1c{Ow2r76`?#i+o%V"> <field name="ATTR">state.val</field> </block> </value> </block> </value> <next> <block type="control_ex" id="~7V95FXLGn-Ar%v.S.Sr"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid" id="pv(jPVF|8[?Dvb9@`Cm+"> <field name="oid">ID auswählen</field> </shadow> <block type="variables_get" id="HHlnu;|j}JY)LO$SN9nY"> <field name="VAR" id="}[h?ZBXS`OiSusXv!)#S">Datenpunkt xy</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="a=4CNtQ.]Bd+e99LYC^R"> <field name="BOOL">TRUE</field> </shadow> </value> <value name="DELAY_MS"> <shadow type="math_number" id=".H0CBJ1gE]u*dM/Ce^aH"> <field name="NUM">0</field> </shadow> </value> <value name="EXPIRE"> <shadow type="math_number" id="tc.mK$^q?+jA1fgx^xOK"> <field name="NUM">0</field> </shadow> </value> </block> </next> </block> </statement> </block> </next> </block> </statement> </block> </statement> </block> </next> </block> </statement> <value name="IF1"> <block type="logic_compare" id="KB2L4|XFy/j]V7]m2)7:"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="{8}7;:np)]B},5?a/S[b"> <field name="ATTR">val</field> <field name="OID">javascript.0.haushalt.Waschmaschine_PV-Start</field> </block> </value> <value name="B"> <block type="logic_boolean" id="cTj6$s:}rtolQ5(-(}hS"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <statement name="DO1"> <block type="timeouts_clearinterval" id=";8dz|gF4A!04TgeZp_n!"> <field name="NAME">Intervall</field> </block> </statement> </block> </statement> <next> <block type="comment" id="Jc.wW;4EJ9L8EGL9JSHP"> <field name="COMMENT">PV-Start wieder ausschalten</field> <next> <block type="on_ext" id="^S=)N:SQ+qXS~g|`u{*J"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="jH`Rz^h?=ciy0VwTg-DS"> <field name="oid">cloudless-homeconnect.0.484010393060000406.ActiveProgram</field> </shadow> </value> <statement name="STATEMENT"> <block type="control" id="A~PnEa-;$}lzVoytgY*A"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.haushalt.Waschmaschine_PV-Start</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="u:A!7v*~zBU@23uFC3%H"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="timeouts_clearinterval" id="5y8HpuICR0)zD@O57/I)"> <field name="NAME">Intervall</field> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </xml>
Jedes Programm hat so einen Ordner und entsprechend einen Datenpunkt "Start", welcher dann gesetzt werden muss. -
@uli977 sagte: was ich zusammengebaut habe.
Was enthält "Active power"?
-
Der Zusammenhang zwischen einer
29188
in "Object257" und dem passenden Programm erfolgt über den Namen des Ordners (Kanals) - nicht über dessen ID.Da muss dann noch deutlich mehr Aufwand getrieben werden
-
@paul53 sagte in Datenpunkt auslesen & Objekt wahr setzen:
@uli977 sagte: was ich zusammengebaut habe.
Was enthält "Active power"?
PV-Überschuss
ChargePower = Ladestrom Auto -
Oh je, vielleicht laufe ich lieber wieder mit dem Waschbrett zum Fluß.....
-
@uli977 sagte in Datenpunkt auslesen & Objekt wahr setzen:
Oh je, vielleicht laufe ich lieber wieder mit dem Waschbrett zum Fluß
Nö - aufgeben ist keine Option
-
-
Da braucht mein Gehirn etwas....
Aber eine Sache ist, sobald das Auto laden früher aktiv ist, habe ich keinen Überschuss mehr, weil dieser ins Auto geht. Springt dann im Nachhinein die Waschmaschine an, dann wird der Ladestrom vom Auto reduziert.
Deshalb habe ich auch abgefragt, ob der Ladestrom größer 0 ist.
Würde ich das nicht tun, würde die Waschmaschine aufgrund des fehlenden Ladestrom nicht anspringen. -
@uli977 sagte: auch abgefragt, ob der Ladestrom größer 0 ist.
-
@uli977 sagte in Datenpunkt auslesen & Objekt wahr setzen:
Deshalb habe ich auch abgefragt, ob der Ladestrom größer 0 ist.
das heißt, die WM springt nur an, wenn auch gleichzeitig das Auto geladen wird?
Müsste da nicht heißen "und ChargePower = 0" ??? -
@codierknecht sagte in Datenpunkt auslesen & Objekt wahr setzen:
@uli977 sagte in Datenpunkt auslesen & Objekt wahr setzen:
Deshalb habe ich auch abgefragt, ob der Ladestrom größer 0 ist.
das heißt, die WM springt nur an, wenn auch gleichzeitig das Auto geladen wird?
Müsste da nicht heißen "und ChargePower = 0" ???Die Logik ist
Entweder habe ich PV-Überschuss oder
Das Auto wird geladen (das passiert auch nur wenn PV-Überschuss vorhanden ist)
dann soll die WM starten -
@paul53 sagte in Datenpunkt auslesen & Objekt wahr setzen:
@uli977 sagte: auch abgefragt, ob der Ladestrom größer 0 ist.
Ab hier hört es auf mit meinem Verständnis
-
@uli977 sagte: Ab hier hört es auf mit meinem Verständnis
Die Sperre "nicht Verzögerung timeout" verhindert, dass mehrere Timeouts gestartet werden, die sich nicht mehr stoppen lassen.
Zum Verständnis der Schleife starte mal eine Test-Schleife:
-
@uli977 sagte in Datenpunkt auslesen & Objekt wahr setzen:
Ab hier hört es auf mit meinem Verständnis
Liegt vielleicht daran, dass @paul53 das Ganze anders aufgezogen hat.
Er triggert auf den Überschuss. Ist der 10 Minuten lang vorhanden, startet die WM (wenn gewünscht).
Fällt der Überschuss innerhalb der 10 Minuten unter den Grenzwert, wird der Start abgebrochen. -
Sollte passen, oder?
Das heißt aber, dass sobald sich Active Power (PV Überschuss Wert) ändert und dieser kleiner ist als 1200 und gleichzeitig der Ladestrom kleiner 2000 ist, wird ein "Stop Timeout" gemacht.
Das ist dann aber sehr oft, oder? Geht das nicht auf die Systemlast?Zur Info 257 gibt die ID des gewählten Programms aus.
Das verstehe ich nicht....
Variabel "Name" enthält Programm ID aus dem Datenpunkt 257 und diese Variable soll gleich der Variable "id" sein?
-
@uli977 sagte: Zur Info 257 gibt die ID des gewählten Programms aus.
Oben hast du geschrieben, dass der Wert von "257" den Namen ("29188") ausgibt.
-
wie soll ich das erklären...
Dieses Objekt, mit dem "name" 257, gibt die 29188 aus
29188 ist wiederum der "name" für den Datenpunkt Start, des Programs Cotton
Sorry, es ist nicht so einfach das alles zu umschreiben
-
@uli977 bitte keine Screenshot von Code!
@uli977 sagte in Datenpunkt auslesen & Objekt wahr setzen:
29188 ist wiederum der "name" für den Datenpunkt Start, des Programs Cotton
das nutzt dir überhaupt nichts
Wir waren bisher davon ausgegangen, dass die 29188 die ID, oder wenigstens ein Teil davon ist.
Die kannst du AufrufenAllerdings würde es mich nicht wundern, wenn @paul53 es schafft aus dem Namen zur ID zu kommen und dann diese aufruft
Sind diese "Namen" eindeutig?
Ist der Pfad dahin unterschiedlich?
Hat der Pfad ein System?BTW: Auch 257 ist keine ID!