NEWS
Datenpunkt auslesen & Objekt wahr setzen
-
@uli977 sagte in Datenpunkt auslesen & Objekt wahr setzen:
Wenn ich Waschmaschine PV-Start manuell gesetzt habe
Das soll dann in etwa bedeuten: Starte die WM, sobald genug Leistung vorhanden?
- Variablen nach Möglichkeit ohne Leer- oder Sonderzeichen
Leerzeichen werden zwar im Code durch Unterstriche ersetzt, aber man sollte die trotzdem vermeiden. - Was soll passieren, wenn während des Programms die Leistung unter Deine Grenze fällt?
Weiter waschen, pausieren, stoppen? - Wenn der Start einmal ausgelöst wurde: Kann dann das Intervall nicht beendet werden?
Vorschlag:
Sobald der "AutoStart" auftrue
gesetzt wurde (manuell?), wird alle 10 Minuten geprüft und im Fall der Fälle das entsprechende Programm gesetzt.
Ist das passiert, wird der "AutoStart" auffalse
gesetzt.
Sobald "AutoStart" auffalse
geändert wurde (entweder manuell oder weil das Programm gestartet wurde) wird das Intervall verlassen.Nach meinem Verständnis - meine WM ist nicht so "schlau"
- Variablen nach Möglichkeit ohne Leer- oder Sonderzeichen
-
Ok, sorry ihr zwei, dann habe ich mich da falsch ausgedrückt bzw. gedacht es würde ausreichen euch weniger Informationen zu geben, um die Sache nicht unnötig kompliziert zu machen.
zu 1) ok, verstanden
zu 2) die Waschmaschine soll dann starten und durchlaufen
zu 3) so ist es auch, sobald die Maschine startet, wird der Intervall gestoppt (steht weiter unten im Blockly)Meine Herausforderung ist, dass je nach Wert im Objekt 257 (Selected Programm), muss ein anderer Datenpunkt auf wahr gesetzt werden. Es handelt sich um den Datenpunkt "Start" innerhalb des jeweiligen Ordners, siehe unten
Jeder dieser Ordner (=das jeweilige eingestellte Programm der WM), hat einen eigenen "Start" Datenpunkt. Von dem des Programms Cotton, habe ich in meinem Post davor ein Foto gemacht.
-
@uli977 sagte in Datenpunkt auslesen & Objekt wahr setzen:
zu 3) so ist es auch, sobald die Maschine startet, wird der Intervall gestoppt (steht weiter unten im Blockly)
Wenn Dein Intervall das Programm gestartet hat, läuft es aber weiter.
Du setzt den Wert nicht beim Start des Programms auffalse
. Das Intervall läuft also weiter, bis der DP (manuell) auffalse
gesetzt wird.Da auf den "AutoStart" getriggert wird, muss man dessen Wert nicht nochmal (2x) lesen. Der Trigger kennt bereits "seinen" Wert.
-
@uli977 sagte in Datenpunkt auslesen & Objekt wahr setzen:
Es handelt sich um den Datenpunkt "Start" innerhalb des jeweiligen Ordners, siehe unten
wer immer 4840103930.... ist!
das scheint dann doch ein Geräteadapter Datenpunkt zu sein.
Dann doch steuere, aber den Pfad korrekt angeben.und nicht den Triggerblock WERT, sondern unter System, den Datenpunkt Wert von.... nehmen und da die ID vom 257 eingeben.
@uli977 sagte in Datenpunkt auslesen & Objekt wahr setzen:
es würde ausreichen euch weniger Informationen zu geben, um die Sache nicht unnötig kompliziert zu machen.
immer alles zeigen!!
-
@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.