NEWS
[VORLAGE] Blockly Meldung wenn Waschmaschine fertig
-
@rantanplan Sagmal, ist das Blockly oben im 1. Beitrag die aktuellste Version...? Bei den vielen Einträgen...
Ansonsten wäre ich an der aktuellen Version für einen Import sehr interessiert...
-
@lobito sagte in [VORLAGE] Blockly Meldung wenn Waschmaschine fertig:
Der Wert kommt aus einer Systemvariablen in der Homematic. Hat den Charme das ich die Schwellwerte an einer übersichtlichen Stelle anpassen kann. Okay hab es nicht mit Telegram sondern lasse meine Alexas plappern. Die Systemvariable wird auch nur in der Zeit von 08:00 bis 22:30 Uhr gesetzt, unschön wenn in der Nacht um 3 Alexa losplappert.
genau so möchte das auch gerne umsetzen. Würdest du deine CCU Lösung beispielhaft zur Verfügung stellen ?
LG Klaus
-
Moin,
ich habe die Vorlage importiert, Schwellwert gesetzt und das richtige Objekt bzgl. Stromverbrauch referenziert. Der Datenpunkt "WaschamschineAN" wurde unter javascript0 erstellt.Leider wird bei Start der Datenpunkt nicht auf "true" gesetzt. Somit funktioniert das natürlich nicht mit der Info. Was habe ich vergessen?
<xml xmlns="http://www.w3.org/1999/xhtml"> <variables> <variable type="" id="l:Y4Wu$zk=pxq~)`eSab">Meldetext</variable> <variable type="" id="O$Nwc}L.I]v/BZDamc+w">parameter</variable> <variable type="" id="(3|XM/BjSJF7AX9g?(ks">VerzoegerungAktiv</variable> <variable type="" id="v6cFCCp{BQlt0(2QH3:%">GrenzWertInWatt</variable> <variable type="undefined" id="timeout">timeout</variable> <variable type="undefined" id="Einschaltverzoegerung">Einschaltverzoegerung</variable> </variables> <block type="create" id=":XvakORUFJ^_I1/^;0qD" x="13" y="13"> <field name="NAME">WaschmaschineAN</field> <next> <block type="comment" id="@`s,ARMz+*DZ*ns;z2m_"> <field name="COMMENT">Initialisierung bei Scriptstart</field> <next> <block type="comment" id="Ov|lJMd@PV!y.oUN9Boj"> <field name="COMMENT">VerzögerungAktiv NICHT ändern</field> <next> <block type="variables_set" id="T+;|Db@bx|T]wkX[e.xT"> <field name="VAR" id="(3|XM/BjSJF7AX9g?(ks" variabletype="">VerzoegerungAktiv</field> <value name="VALUE"> <block type="logic_boolean" id="FimMeG{k6LBu0{7UjBJ4"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="comment" id="6q4+KcF6/q*eh;RCmGKL"> <field name="COMMENT">Entscheidungswert festlegen</field> <next> <block type="variables_set" id="pE;t15K()B2=@=,RY5D_"> <field name="VAR" id="v6cFCCp{BQlt0(2QH3:%" variabletype="">GrenzWertInWatt</field> <value name="VALUE"> <block type="math_number" id="OB=)nO2pXH:1HNwm(JpG"> <field name="NUM">3</field> </block> </value> <next> <block type="comment" id="|2tm%?,yK/o3_AA)J{ah"> <field name="COMMENT">Steckdose überwachen</field> <next> <block type="on_ext" id="n)UklDS{=z!-#^HfL@Ly"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="@Uda~stBc8L/=2DFzrvo"> <field name="oid">shelly.0.SHSW-PM#76E648#1.Relay0.Power</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="=n/Jfc]x(Ib[NRPJZ%7X"> <value name="IF0"> <block type="logic_compare" id="?m1STicTe5=N-/f:Ji2s"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="QjKQBx`PdHENcy)eGM,5"> <field name="ATTR">oldState.val</field> </block> </value> <value name="B"> <block type="math_number" id=":(p2PWPzD2(~R-q9upeS"> <field name="NUM">0</field> </block> </value> </block> </value> <statement name="DO0"> <block type="debug" id="F,}Yd!eQ$Zp~ADr^_R8~"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="K.p%=7kRU|IUX?X2bgJv"> <field name="TEXT">Waschmaschine vorheriger Wert = 0</field> </shadow> </value> <next> <block type="comment" id=";%e=m5A.5_U8[v[Odt7."> <field name="COMMENT">Dieser Teil wird NUR ausgeführt wenn</field> <next> <block type="comment" id="Bv,r2iN_4zSfF_^X35gM"> <field name="COMMENT">Funkstecker oder Waschm. komplett aus war.</field> <next> <block type="variables_set" id="xuK#29.xYf)m6FX5LA78"> <field name="VAR" id="(3|XM/BjSJF7AX9g?(ks" variabletype="">VerzoegerungAktiv</field> <value name="VALUE"> <block type="logic_boolean" id=")}Jh9zUdflaLNnL+;^h="> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="debug" id="Wv*jiP9Bn3#//0KE[4e["> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="!hyL_SIc#q!nV1G.NU,/"> <field name="TEXT">***Starte Verzögerung</field> </shadow> </value> <next> <block type="timeouts_settimeout" id="v[ws-ZxN:-nNl,kERlT8"> <field name="NAME">Einschaltverzoegerung</field> <field name="DELAY">20</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="comment" id="UyUTD{W;Ef;u2!)%y5h|"> <field name="COMMENT">Eventuell hohe Einschaltspannung abfangen.</field> <next> <block type="comment" id="^wiM;VZ*5RLS-+SMsG7?"> <field name="COMMENT">Diese kann größer als der Grenzwert sein</field> <next> <block type="variables_set" id="@d2;tEWydly|fW:ng;eg"> <field name="VAR" id="(3|XM/BjSJF7AX9g?(ks" variabletype="">VerzoegerungAktiv</field> <value name="VALUE"> <block type="logic_boolean" id="S5R1RMtIKx(=N;}|dM%Z"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="debug" id="1^,/eLLAT{#66hqVIel8"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="[koH26;mOP0UeXV~CJRb"> <field name="TEXT">***Beende Verzögerung</field> </shadow> </value> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> <next> <block type="comment" id="EZK4(UY%`}HZl{2F)m6p"> <field name="COMMENT">Ab hier wird gewaschen</field> <next> <block type="controls_if" id="S(-Xvr1uja6/vNdH|?j:"> <mutation elseif="2"></mutation> <value name="IF0"> <block type="logic_operation" id="s(;r=_ekdU*dF=_Tsrbb" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="d_lZY_VlNaa40/Pob=Um"> <field name="OP">GT</field> <value name="A"> <block type="on_source" id="`c4GU.`+o2_G+Vdxq;n/"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="variables_get" id="FD[JnQcwajuYLgGmTX`."> <field name="VAR" id="v6cFCCp{BQlt0(2QH3:%" variabletype="">GrenzWertInWatt</field> </block> </value> </block> </value> <value name="B"> <block type="logic_operation" id="*Y`H0qa!`fsBeI/2Cv+c" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="zC,(}TPXAvX2yd^k`W._"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id=";a;[[bw/v2oQnG9DHZIn"> <field name="ATTR">val</field> <field name="OID">javascript.0.WaschmaschineAN</field> </block> </value> <value name="B"> <block type="logic_boolean" id=";a5=vVD`86hstjR{4y~+"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="K.3M9Le`+STB!.M_eD7O"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="[!KuvI83Wzp*sDDNM{S!"> <field name="VAR" id="(3|XM/BjSJF7AX9g?(ks" variabletype="">VerzoegerungAktiv</field> </block> </value> <value name="B"> <block type="logic_boolean" id="9_[X?aI?X1w]lj.RY`K^"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="S6URE:3#}}.v#e!X.A4D"> <mutation delay_input="false"></mutation> <field name="OID">javascript.0.WaschmaschineAN</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="QqpwRU?xP?P=bvS9HS[1"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="procedures_callnoreturn" id="=!*WIp};Ta`)XeMMk,iR"> <mutation name="Melden"> <arg name="Meldetext"></arg> </mutation> <value name="ARG0"> <block type="text" id="{QcAY3oi:,FGG.929?TS"> <field name="TEXT">Waschmaschine LÄUFT</field> </block> </value> </block> </next> </block> </statement> <value name="IF1"> <block type="logic_compare" id="Yuagp|w@)mC+asceXLLu"> <field name="OP">GT</field> <value name="A"> <block type="on_source" id="P(tu4AS{);E?w-p?]{1q"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="variables_get" id="ou6,Zi?vbs[;{]@93U`!"> <field name="VAR" id="v6cFCCp{BQlt0(2QH3:%" variabletype="">GrenzWertInWatt</field> </block> </value> </block> </value> <statement name="DO1"> <block type="comment" id="H90l#sdGb5I}Wqsbz=9s"> <field name="COMMENT">Timer stoppen</field> <next> <block type="procedures_callnoreturn" id="zo=cPu~=j#pus6bWVaJl"> <mutation name="checkFertig"> <arg name="parameter"></arg> </mutation> <value name="ARG0"> <block type="logic_boolean" id="1SYbGS^3xkqD/Uj?{bvJ"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </statement> <value name="IF2"> <block type="logic_operation" id="_@|YxZPYI(z3![Q=ZbX4" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="Ge6FX#6b5WYoc;wF%%iH"> <field name="OP">LT</field> <value name="A"> <block type="on_source" id="0Vw33+AwVD~={g{aHa~d"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="variables_get" id="NufLwbvZR1.fEmqJNOTZ"> <field name="VAR" id="v6cFCCp{BQlt0(2QH3:%" variabletype="">GrenzWertInWatt</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="X[1t=zl25bQ]aHT[:`,8"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="4WFkiPOYU?#zQhOL)0u("> <field name="ATTR">val</field> <field name="OID">javascript.0.WaschmaschineAN</field> </block> </value> <value name="B"> <block type="logic_boolean" id="?jrLY7K)k;1?sa!Ef{VO"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> </block> </value> <statement name="DO2"> <block type="comment" id="}Q59!:8+Dc~b~LwZhq-("> <field name="COMMENT">Timer starten</field> <next> <block type="procedures_callnoreturn" id=";MD%1IF[[H29g_f=vvYH"> <mutation name="checkFertig"> <arg name="parameter"></arg> </mutation> <value name="ARG0"> <block type="logic_boolean" id="/yX*,4aU!HHUO#/2U-NR"> <field name="BOOL">TRUE</field> </block> </value> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> <block type="procedures_defnoreturn" id="l1.gm`YNTt2#Ww;_Stf+" x="563" y="13"> <mutation> <arg name="Meldetext" varid="l:Y4Wu$zk=pxq~)`eSab"></arg> </mutation> <field name="NAME">Melden</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> <statement name="STACK"> <block type="comment" id="CgkHkrp5c26e`w3uU(i`"> <field name="COMMENT">Hier wird die Meldung ausgegeben</field> <next> <block type="debug" id="SYQu;@N0JgE!W~[JZcZ_"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="4+J8c.^+FrkDV^]dAda-"> <field name="TEXT">test</field> </shadow> <block type="variables_get" id="KuX^Hf4/i6gnp|rmq9WR"> <field name="VAR" id="l:Y4Wu$zk=pxq~)`eSab" variabletype="">Meldetext</field> </block> </value> <next> <block type="comment" id="a;Ent4V!@/ELz)~^PTwn"> <field name="COMMENT">Hier den SendTo Baustein einsetzen,</field> <next> <block type="comment" id="Xc,u6Sm.@c5xeqVM)suq"> <field name="COMMENT">den man benutzen will.</field> <next> <block type="comment" id="cI=%X;P?/Tfam8YIny%V"> <field name="COMMENT">Die Meldung befindet sich in der Variablen</field> <next> <block type="comment" id="{(av)+6o4VfWo^eJEnft"> <field name="COMMENT">"Meldetext"</field> <next> <block type="telegram" id="Y%jeiG=0h{x#{=xc$tn)"> <field name="INSTANCE"></field> <field name="LOG"></field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"> <shadow type="text" id="xo7T6m}W{_D(FGc/Rq7j"> <field name="TEXT">Waschmaschine </field> </shadow> <block type="variables_get" id="a1mgB]ZM/EB)~[b:A3_y"> <field name="VAR" id="l:Y4Wu$zk=pxq~)`eSab" variabletype="">Meldetext</field> </block> </value> <value name="USERNAME"> <block type="text" id="Vnju2GV|-FmX_0oC1H8,"> <field name="TEXT">oberfragger</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> <block type="procedures_defnoreturn" id="sDP?w~)oJD}Z95[_?EY0" x="13" y="1338"> <mutation> <arg name="parameter" varid="O$Nwc}L.I]v/BZDamc+w"></arg> </mutation> <field name="NAME">checkFertig</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> <statement name="STACK"> <block type="comment" id="V2@7jqv5RTl+}q}xfEsZ"> <field name="COMMENT">Timer stoppen</field> <next> <block type="timeouts_cleartimeout" id="y7iPL;/^^,*);q|%Pk6;"> <field name="NAME">timeout</field> <next> <block type="controls_if" id="*DX-*|5t*M5.|5Qw0p76"> <value name="IF0"> <block type="logic_compare" id="[-Hs2uzeFf6L7XO4:d6g"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="uT*6f!Y:?Sivq1F-y;7_"> <field name="VAR" id="O$Nwc}L.I]v/BZDamc+w" variabletype="">parameter</field> </block> </value> <value name="B"> <block type="logic_boolean" id="w?1)4.uK{/ey3NJ)NjH:"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="comment" id="fU`TRz:h*y1K[t@GmyY:"> <field name="COMMENT">Timer starten</field> <next> <block type="timeouts_settimeout" id="k%sy5:QdTn+3f@{OZshs"> <field name="NAME">timeout</field> <field name="DELAY">40</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="control" id="UOquZ.)w|Dv~5_@iC*HO"> <mutation delay_input="false"></mutation> <field name="OID">javascript.0.WaschmaschineAN</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="ttQizIf!/AB*HLfb9Kw1"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="procedures_callnoreturn" id="HHrpaU=vtt6v1JInTG~l"> <mutation name="Melden"> <arg name="Meldetext"></arg> </mutation> <value name="ARG0"> <block type="text" id="leE4:W;JI@,LD;n0Gs6r"> <field name="TEXT">Waschmaschine FERTIG</field> </block> </value> </block> </next> </block> </statement> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </statement> </block> </xml>
-
@oberfragger Moin
Setze mal ein Debug Baustein ein. Da kannst Du überprüfen ob die Steckdose überhaupt den Trigger auslöst.
-
@rantanplan Gute Idee. Ich bin mir da ja "sicher". Mal gucken was dann das Log sagt.
-
@rantanplan Habs gefunden. Der Datenpunkt war da... allerdings weder true noch false. Habs dann mal manuella auf false gesetzt und schon funktionierte das Script sofort.
Leider kommt die "fertig"-Meldung erst wenn die Waschmaschine per Hand ausgestellt wurde. Aber sind halt schon mal 50%. Mal gucken.
-
Hallo,
habe das Script von @berndroid verwendet.
Dort werden ja Variablen verwendet.So weit so gut.
Variablen werden ja nicht angelegt bzw sichtbar.Wie muss ich es anstellen, wenn ich die Variablen auswerten möchte und z.Bsp. sichtbar machen möchte in VIS?
-
Damit VIS auf die Werte aus Scriptvariablen zu geifen kann musst du dir unter ioBroker-Objekte eigene Datenpunte anlegen und die Werte der Variablen in den Datenpunkten abspeichern. Diese Datenpunkte kannst du dann in VIS auslesen & setzen falls nötig.
-
@xbow42 Danke!
-
Hallo zusammen,
auch ich habe probiert dieses SCript zu verwenden, habe aber ein komisches Problem:
Die Erkennung des Starts funktioniert. Die Fertig erkennung jedoch nicht. Wenn der Wert < Grenzwert wird wird in einem Durchlauf der Timer immer einmal gestartet und gestoppt.
Und wenn ich die Funktion "CheckFertig" richtig verstehe wird doch der Timer in jedem Fall gestoppt wenn die funktion aufgerufen wird, oder? Das beudetet sie startet ja immer von vorne. Auch wenn der parameter "wahr" übergeben wird. Oder verstehe ich etwas falsch?
16:33:34.298 info javascript.0 (16094) script.js.Geräte.Waschmaschine: Timer WM stop 16:33:34.299 info javascript.0 (16094) script.js.Geräte.Waschmaschine: Timer WM start 16:33:34.300 info javascript.0 (16094) script.js.Geräte.Waschmaschine: WERT2 16:33:44.778 info javascript.0 (16094) script.js.Geräte.Waschmaschine: Timer WM stop 16:33:44.779 info javascript.0 (16094) script.js.Geräte.Waschmaschine: Timer WM start 16:33:44.780 info javascript.0 (16094) script.js.Geräte.Waschmaschine: WERT2
Das Gesamte Scipt wird ja mehrmals pro Minnute durchlaufen und somit auch die Funktion "CheckFertig"...
Noch eine Frag zum Verständniss des Timers. Ist es so, dass der Timer immer die "gleiche" Variale ist. Also wenn der parameter wahr ist wird der timer gestartet und läuft so lange bis die funkion stop timout aufgerufen wird? Weil dann verstehe ich die funktio nicht.
Danke
-
@dehein2
CheckFertig wird mehrmals aufgerufen. Wichtig ist dabei mit welchem Parameter.Timer können mehrmals aufgerufen werden. Dabei werden jedesmal NEUE Timer gestartet, die parallel zu den Anderen laufen. Deshalb stoppt man vor einem erneuten Aufruf einen eventuell schon laufenden..
Wenn ein Timer gestoppt wird, werden die Bausteine in dem Timer NICHT ausgeführt.
Dein Problem wird wahrscheinlich der "GrenzWertInWatt" sein. 300 finde ich zu hoch.
Beobachte doch einfach mal die Werte wenn die Waschmaschine läuft. -
@rantanplan
Danke. Die Sache ist, dass selbst wenn die Maschine fertig ist und dauerhaft <5W braucht die Schleife ja immer mit dem befehl stop(timeout) gebinnt, oder? Und das obwohl die funktion immer mit dem parameter wahr aufgerunfen wird...oder verstehe ich das falsch?
-
Also ich meine, und das sieht man im Log ja auch, es ist dann immer
stop(timeout) -> timout(60) -> stop (timeout)....
Daran, dass immer nur "Wert" auftaucht sieht man ja, dass die falls-Funktion das tut was sie soll, oder?
-
@dehein2 sagte in [VORLAGE] Blockly Meldung wenn Waschmaschine fertig:
@rantanplan
Danke. Die Sache ist, dass selbst wenn die Maschine fertig ist und dauerhaft <5W braucht die Schleife ja immer mit dem befehl stop(timeout) gebinnt, oder? Und das obwohl die funktion immer mit dem parameter wahr aufgerunfen wird...oder verstehe ich das falsch?
Das Script triggert "Power" auf Änderung. Jedes Mal wenn sich der Wert ändert, wird es durchlaufen.
Wie schon gesagt dient das "Stop timeout" zur Sicherheit.Es sind zwei Bedingungen um "CheckFertig" mit "wahr" aufzurufen. Wenn das laufend aufgerufen wird, obwohl die Waschmaschine fertig ist, stimmt "WaschmaschineAn" nicht. Schau mal nach ob dort ein Wert eingetragen ist.
Wenn das Script zum ersten Mal gestartet wird, wird "WaschmaschineAN" zwar angelegt aber enthält KEINEN Wert.Das Script ist schon etwas älter. Da gab es noch keinen "Init-Wert" bei "Datenpunkt erzeugen". Muss ich mal bei Gelegenheit anpassen.
Funktioniert das Script bei Dir nicht oder geht es nur um eine Verständnisfrage?
-
Hi @rantanplan.
Danke. Nein es funktioniert leider nicht. Die Ini Werte habe ich gesetzt und die "an" erkennung funktioniert auch.
Im Prinzip durchläuft das script dies mehrmals pro minute, alle 2-3 Sekunden (halt immer wenn sich der POWER Wert ändert). Dies passiert wenn Power <300W ist (deutlich darunter):
16:33:34.298 info javascript.0 (16094) script.js.Geräte.Waschmaschine: Timer WM stop 16:33:34.299 info javascript.0 (16094) script.js.Geräte.Waschmaschine: Timer WM start 16:33:34.300 info javascript.0 (16094) script.js.Geräte.Waschmaschine: WERT2 16:33:44.778 info javascript.0 (16094) script.js.Geräte.Waschmaschine: Timer WM stop 16:33:44.779 info javascript.0 (16094) script.js.Geräte.Waschmaschine: Timer WM start 16:33:44.780 info javascript.0 (16094) script.js.Geräte.Waschmaschine: WERT2
Dadurch wird der Timer natürlich immer wieder gestoppt.
Sorry, so ganz verstehe ich es immernoch nicht.
Das Hauptscirpt hat ja im Prinzip 2 Optionen dir alle paar Sekunden durchlaufen werden
A: Wert > GrenzWertInWatt -> checkfertig wird aufgerufen mit false -> es durchläuft nur stop(timeout)
B: Wert < GrenzWertInWatt && WaschmaschineAN=true ->checkfertig wird aufgerufen mit true -> es durchläuft erst stop(timeout) und dann Ausführen in 60 sekWas ich nicht verstehe: (beispiel wie im code oben (Wert 2 ist Fall B))
Sek 1: A -> kein Timer
Sek 3 B -> Timer stop -> Timer start
Sek 5 B -> Timer stop - Timer startIrgendwie wird der timer ja IMMER gestoppt, oder?
DANKE!
-
@dehein2 sagte in [VORLAGE] Blockly Meldung wenn Waschmaschine fertig:
Hi @rantanplan.
Danke. Nein es funktioniert leider nicht. Die Ini Werte habe ich gesetzt und die "an" erkennung funktioniert auch.
Im Prinzip durchläuft das script dies mehrmals pro minute, alle 2-3 Sekunden (halt immer wenn sich der POWER Wert ändert). Dies passiert wenn Power <300W ist (deutlich darunter):
Was benutzt Du denn für einen Stecker? Änderungen alle 2-3 Sekunden? Das ist happig. Wie sieht denn da Dein DutyCycle aus?
Da müsstest Du Dir eventuell einen "Puffer" einbauen. Ähnlich so wie ich am Anfang auf "0" prüfe.Falls "vorheriger Wert" > "vorheriger Wert" + "x" ODER "vorheriger Wert" < "vorheriger Wert" - "y"
Irgendwie wird der timer ja IMMER gestoppt, oder?
Ja. In Deinem Fall ist das auch gut so. Sonst hättest Du in kürzester Zeit 1000sende Timer am Laufen und ioBroker würde einfrieren.
Ich würde mir einen anderen Stecker besorgen.
-
@rantanplan
Das ist ein Shelly PlugS. Vielliecht sind es auch 10sek Aber ist das wirklich so relevant. Selbst wenn der Wert nur alle 30sek neu käme würde es ja nicht klappen oder?Dann würde ja trotzdem nach 30 sek obwohl der wert < 300W sit Option B durchlaufen und der Timer gestoppt. Oder stehe ich total auf dem Schlauch?
-
@dehein2 sagte in [VORLAGE] Blockly Meldung wenn Waschmaschine fertig:
@rantanplan
Das ist ein Shelly PlugS. Vielliecht sind es auch 10sek Aber ist das wirklich so relevant. Selbst wenn der Wert nur alle 30sek neu käme würde es ja nicht klappen oder?Dann würde ja trotzdem nach 30 sek obwohl der wert < 300W sit Option B durchlaufen und der Timer gestoppt. Oder stehe ich total auf dem Schlauch?
Alles ein Zeitproblem. Wenn ein Timer nach 40 Sek. etwas machen soll, sich aber alle 10 bis 30 Sek. etwas ändert funktioniert das nicht. Dafür ist das Script in der Form nicht geeignet.
Endweder anderer Stecker oder Script mit mit "Puffer" anpassen. -
@rantanplan : spricht denn etwas dagegen den Stop timeout" auf in eine if Abfrage zu packen und nur zu durchlaufen wenn der wert false übergeben wird? Dann hätte ich wahrscheinlich das Problem, dass der Timer x mal gestartet wird, oder?
-
@dehein2 sagte in [VORLAGE] Blockly Meldung wenn Waschmaschine fertig:
@rantanplan : spricht denn etwas dagegen den Stop timeout" auf in eine if Abfrage zu packen und nur zu durchlaufen
wenn der wert false übergeben wird? Dann hätte ich wahrscheinlich das Problem, dass der Timer x mal gestartet wird, oder?Der Timer ist schon wichtig und richtig. Sonst kann man die Waschfunktionen (Richtungswechsel, Änderung Waschprogramm usw.) nicht richtig überwachen.
Das Script ist schon älter und wird von mir und etlichen anderen Usern fehlerfrei eingesetzt,Deine schnellen Änderungen sind nicht normal.
Diese müsstest Du mal überwachen und feststellen was sich um wieviel ändert. Das kann nicht viel sein.
Ich sehe nur eine Chance in dem von mir beschriebenen "Puffer".
Etwa so
Ausprobieren kannst nur Du das.