NEWS
Zeitberechung in Blockly
-
Hi,
leider stelle ich mich zu glatt an. Aus dem Miele-Adpater erhalte ich bei Programmstart die ANzeige der Restzeit. Das sieht dann so aus: "2:44". Aufgrund dessen und der Aktuelle Zeit versuche ich nun auszurechnen, wann der Geschirrspüler fertig ist.So schwer ist es ja eigentlich nicht. Liste aus beiden Elementen. Die Stunde dann mit 60 Multiplizieren, die Mitenangabe dazu addieren und dann alles mit der aktuellen Zeit in Minuten addieren.
Dann das durch 60 dividieren und abrunden, dann hat man schon mal die Stunden (klar, noch Prüfung ob man später als 23 Uhr ist...) und den Rest der Division als Minuten ausgeben.
Irgendwie erhalte ich utopische Werte. Deshalb auch mal eine debug ausgabe gestartet... da wird aber nichts aus den Variablen ausgegeben Keien Ahnung warum. Habt ihr Ideen?
Debug-Ausgabe:
2020-11-04 11:52:47.197 - info: javascript.0 (1095) script.js.common.Geschirrspueler: restzeit nur in Minutenrestzeit Stunden in MinutenNaN
Hier mal das ganze Script:
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable type="timeout" id="timeout">timeout</variable> <variable id="1_Tdu}V*gvkI9]Kar;B+">restzeit_nur_minuten</variable> <variable id=")D18+/2zjY!yi[g]FP{P">restzeit_stunden_in_minuten</variable> <variable id="/NnA4XTgc`fVF12+[AE}">restzeit_in_minuten</variable> <variable id="tj|8,0qf4wY@L4]gb[C#">fertigstellung_Minuten</variable> <variable id="uyULztCs#MR|s%6.CI(X">fertigstellung_Zeit_Minuten</variable> <variable id="~@(D|Yk,*p?ZK?55F},u">fertigstellung_Stunden</variable> </variables> <block type="on" id="[W;elGSAhvxts$z/lif~" x="138" y="63"> <field name="OID">mielecloudservice.0.Dishwashers.000104598269.Status</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="controls_if" id="Djon%EhF[FlzT^}Dee8r"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_compare" id="70EO+%;/jdv}4uUW(*;L"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="@Rn22fVE24d=7W36qEqX"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="text" id="j0oF|:pmH18?uUj93L96"> <field name="TEXT">Ende </field> </block> </value> </block> </value> <statement name="DO0"> <block type="sendto_custom" id="c)=fam;.AT@nER@v}+v]"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="text,caption" with_statement="false"></mutation> <field name="INSTANCE">telegram.0</field> <field name="COMMAND">send</field> <field name="LOG"></field> <field name="WITH_STATEMENT">FALSE</field> <value name="ARG0"> <shadow type="text" id="uG)?J./IvW^0?aENo{C/"> <field name="TEXT">/opt/iobroker/iobroker-data/pictures/miele_geschirrspueler.png</field> </shadow> </value> <value name="ARG1"> <shadow type="text" id="XK}?M66s.,/$SL7c2l$+"> <field name="TEXT">🍽 Der Geschirrspüler ist fertig.🍴</field> </shadow> </value> </block> </statement> <value name="IF1"> <block type="logic_compare" id="`q:$4)6xqxUJ;%uvpjU?"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id=";:9fZ`az|LS}m_TF%@[}"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="text" id="L!TE:o6G$Q#:NGu6QJmR"> <field name="TEXT">In Betrieb </field> </block> </value> </block> </value> <statement name="DO1"> <block type="timeouts_settimeout" id="R*wPk,c3=7BEdSEuv]MQ"> <field name="NAME">timeout</field> <field name="DELAY">1000</field> <field name="UNIT">ms</field> <statement name="STATEMENT"> <block type="variables_set" id="#O8{_}mkjt4npZ:97,nK"> <field name="VAR" id="1_Tdu}V*gvkI9]Kar;B+">restzeit_nur_minuten</field> <value name="VALUE"> <block type="lists_getIndex" id="H9XC(J[=C_VRFH%WO732"> <mutation statement="false" at="true"></mutation> <field name="MODE">GET</field> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="lists_split" id="t1PHkLm`jN7-_?Mmm!x~"> <mutation mode="SPLIT"></mutation> <field name="MODE">SPLIT</field> <value name="INPUT"> <block type="get_value" id="{jviGxmW8bOq|4S;aTp1"> <field name="ATTR">val</field> <field name="OID">mielecloudservice.0.Dishwashers.000104598269.remainingTime</field> </block> </value> <value name="DELIM"> <shadow type="text" id=",je.r%fTtp,=uqcV#1Zi"> <field name="TEXT">:</field> </shadow> </value> </block> </value> <value name="AT"> <block type="math_number" id="nP2~wu#)kkH_S6I{HZYm"> <field name="NUM">2</field> </block> </value> </block> </value> <next> <block type="variables_set" id="HyUB{kH+im7ra8W@zBk|"> <field name="VAR" id=")D18+/2zjY!yi[g]FP{P">restzeit_stunden_in_minuten</field> <value name="VALUE"> <block type="math_arithmetic" id="fHpSybwRV9o9,M,@iyd,"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="CmGP3U1=zOYjiTedBYcr"> <field name="NUM">1</field> </shadow> <block type="lists_getIndex" id="7dd0%oyE.C5csJ6/VfZp"> <mutation statement="false" at="true"></mutation> <field name="MODE">GET</field> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="lists_split" id="y`ZX+!}[U==!-f6^Pyr3"> <mutation mode="SPLIT"></mutation> <field name="MODE">SPLIT</field> <value name="INPUT"> <block type="get_value" id=":5:_x0r$`NE!/!{/E^M="> <field name="ATTR">val</field> <field name="OID">mielecloudservice.0.Dishwashers.000104598269.remainingTime</field> </block> </value> <value name="DELIM"> <shadow type="text" id="=ZCXyMIXO/6+[ZWnA`k9"> <field name="TEXT">:</field> </shadow> </value> </block> </value> <value name="AT"> <block type="math_number" id="[GSjd-9_#^_SN9Z7rl.*"> <field name="NUM">1</field> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id="7BThRpq@k@gNIDlqP/z*"> <field name="NUM">60</field> </shadow> </value> </block> </value> <next> <block type="variables_set" id="T8^@^$YTpNxQr65PV73x"> <field name="VAR" id="/NnA4XTgc`fVF12+[AE}">restzeit_in_minuten</field> <value name="VALUE"> <block type="math_arithmetic" id="JB$W9ir`+B]?7UL#U{p2"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="kwsD[h[zd{uQsWaA9mw;"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="TWZyr|r{VfehWPOs=Ev5"> <field name="VAR" id=")D18+/2zjY!yi[g]FP{P">restzeit_stunden_in_minuten</field> </block> </value> <value name="B"> <shadow type="math_number" id=":YI{~(=Y;amhsvO~Yc*("> <field name="NUM">1</field> </shadow> <block type="variables_get" id="P;*98g%-g;+`-gA)uMz2"> <field name="VAR" id="1_Tdu}V*gvkI9]Kar;B+">restzeit_nur_minuten</field> </block> </value> </block> </value> <next> <block type="variables_set" id="NJf)3Jm#73{A1]WvS~~J"> <field name="VAR" id="uyULztCs#MR|s%6.CI(X">fertigstellung_Zeit_Minuten</field> <value name="VALUE"> <block type="math_arithmetic" id="K1Dv5L!qBQ/B]m.?L8MN"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="/q.*9QJ3{wi|c@k)1`1$"> <field name="NUM">1</field> </shadow> <block type="time_get" id="_`U`|P24s#Lf+R7fyzst"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation> <field name="OPTION">mid</field> </block> </value> <value name="B"> <shadow type="math_number" id="yXtu]BWLsh)[-08OUSi."> <field name="NUM">1</field> </shadow> <block type="variables_get" id="CFu7%7e{%egMUBtYi8fT"> <field name="VAR" id="/NnA4XTgc`fVF12+[AE}">restzeit_in_minuten</field> </block> </value> </block> </value> <next> <block type="variables_set" id="Z4*-o9tX:hHIUQX`eFP_"> <field name="VAR" id="~@(D|Yk,*p?ZK?55F},u">fertigstellung_Stunden</field> <value name="VALUE"> <block type="math_round" id="4JLxxie[stS+9.:0ZL5W"> <field name="OP">ROUNDDOWN</field> <value name="NUM"> <shadow type="math_number" id="$3GImcib^o3YhY%!i#By"> <field name="NUM">3.1</field> </shadow> <block type="math_arithmetic" id=",hBJmF1@q`p.n5]vR9#o"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number" id="0VgATUyXc0da)a,WWFuw"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="Pl5G2s7%i-:CPkQs;0gV"> <field name="VAR" id="uyULztCs#MR|s%6.CI(X">fertigstellung_Zeit_Minuten</field> </block> </value> <value name="B"> <shadow type="math_number" id="WOk-cH-|f([A/8VIU#$%"> <field name="NUM">60</field> </shadow> </value> </block> </value> </block> </value> <next> <block type="variables_set" id="TP(4zl.mU?lF/BAOttN."> <field name="VAR" id="tj|8,0qf4wY@L4]gb[C#">fertigstellung_Minuten</field> <value name="VALUE"> <block type="math_modulo" id="9#Pui2IszR`S]`#`-x9="> <value name="DIVIDEND"> <shadow type="math_number" id="{T`~JiSB8lX%|3Q,Q_-("> <field name="NUM">64</field> </shadow> <block type="variables_get" id=")WVrCl0*hYktBet6GI%T"> <field name="VAR" id="uyULztCs#MR|s%6.CI(X">fertigstellung_Zeit_Minuten</field> </block> </value> <value name="DIVISOR"> <shadow type="math_number" id=";x(*M{Nn|+1W;1.IzTCe"> <field name="NUM">60</field> </shadow> </value> </block> </value> <next> <block type="telegram" id="l]KVrNT-9#W3[,{i`T%["> <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=",=TKQ4^J9ed42%a^6-47"> <field name="TEXT">text</field> </shadow> <block type="text_join" id="$GLb1rbAO@`to=qyk~)!"> <mutation items="11"></mutation> <value name="ADD0"> <block type="text" id=".K4V@r$1vSJO^3@Z,i=5"> <field name="TEXT">Der Geschirrspüler 🍽 wurde gestartet.</field> </block> </value> <value name="ADD1"> <block type="time_get" id="%TlPd+utmYRDW)Io7/=e"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="true" language="false"></mutation> <field name="OPTION">custom</field> <field name="FORMAT">\n</field> </block> </value> <value name="ADD2"> <block type="text" id="kOhTTE,MnXOg$BejQFtr"> <field name="TEXT">Vorraussichtliche Dauer: </field> </block> </value> <value name="ADD3"> <block type="get_value" id="^KMTR]oV,x_#zu*Zy[UX"> <field name="ATTR">val</field> <field name="OID">mielecloudservice.0.Dishwashers.000104598269.remainingTime</field> </block> </value> <value name="ADD4"> <block type="text" id="?]DoX4NrD;FPt/]I5N^)"> <field name="TEXT"> Stunden</field> </block> </value> <value name="ADD5"> <block type="time_get" id="s6vX:jq5V[qV-Azg!898"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="true" language="false"></mutation> <field name="OPTION">custom</field> <field name="FORMAT">\n</field> </block> </value> <value name="ADD6"> <block type="text" id="`wm-2.dHc:ZfK2$=ET|,"> <field name="TEXT">Programmende: </field> </block> </value> <value name="ADD7"> <block type="variables_get" id="Zr`RRMIoU3l{*IEL*3qx"> <field name="VAR" id="~@(D|Yk,*p?ZK?55F},u">fertigstellung_Stunden</field> </block> </value> <value name="ADD8"> <block type="text" id="U;LlXJG#dTcX8_t2te)r"> <field name="TEXT">:</field> </block> </value> <value name="ADD9"> <block type="variables_get" id="]Mt,(EA+*Ag7iuLd^N|Z"> <field name="VAR" id="tj|8,0qf4wY@L4]gb[C#">fertigstellung_Minuten</field> </block> </value> <value name="ADD10"> <block type="text" id="1x%B*n3Ie}nBYFcO[y2Z"> <field name="TEXT"> Uhr ⏰.</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> <next> <block type="debug" id="flQ#]6PS!#sEIy]98:Ol"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="%C0fry0;Ry}dlB^-n(d~"> <field name="TEXT">test</field> </shadow> <block type="text_join" id="Eod5l3Fmqf1N1r@^1ra}"> <mutation items="6"></mutation> <value name="ADD0"> <block type="text" id="{ag;;d/RE,qO_p2RUe]N"> <field name="TEXT">restzeit nur in Minuten</field> </block> </value> <value name="ADD1"> <block type="variables_get" id="Yatg|v]`u4gPFUm0b[_}"> <field name="VAR" id="1_Tdu}V*gvkI9]Kar;B+">restzeit_nur_minuten</field> </block> </value> <value name="ADD2"> <block type="text" id="ltXJ98.3lfTS-#|NPNO_"> <field name="TEXT">restzeit Stunden in Minuten</field> </block> </value> <value name="ADD3"> <block type="variables_get" id="/Y$mNB8F[yNyD$DKA|MI"> <field name="VAR" id=")D18+/2zjY!yi[g]FP{P">restzeit_stunden_in_minuten</field> </block> </value> <value name="ADD4"> <block type="math_modulo" id="!(4ka4!=%Br0Z2CZ/e=Z"> <value name="DIVIDEND"> <shadow type="math_number"> <field name="NUM">64</field> </shadow> <block type="variables_get" id="ab`f[mVhyRkM3U]Vd0@w"> <field name="VAR" id="uyULztCs#MR|s%6.CI(X">fertigstellung_Zeit_Minuten</field> </block> </value> <value name="DIVISOR"> <shadow type="math_number" id="%huXW.g3Q#%,CG2Xf8?]"> <field name="NUM">60</field> </shadow> </value> </block> </value> <value name="ADD5"> <block type="variables_get" id="+d!Ip_AsLbg30A!26qah"> <field name="VAR" id="tj|8,0qf4wY@L4]gb[C#">fertigstellung_Minuten</field> </block> </value> </block> </value> </block> </next> </block> </statement> </block> </statement> </block> </xml>
Der Datenpunkt sieht so aus:
{ "from": "system.adapter.mielecloudservice.0", "user": "system.user.admin", "ts": 1604506427258, "common": { "name": "The RemainingTime equals the relative remaining time", "role": "value", "type": "string", "read": true, "write": false }, "native": {}, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 }, "_id": "mielecloudservice.0.Dishwashers.000104598269.remainingTime", "type": "state" }
-
@oberfragger sagte:
Deshalb auch mal eine debug ausgabe gestartet... da wird aber nichts aus den Variablen ausgegeben
Die Debug-Ausgabe erfolgt vor der verzögerten Berechnung.
Außerdem sollten die Werte aus der Liste in eine Zahl gewandelt werden. -
@oberfragger
Vorschlag für die Umrechnung der Rest-Minuten in die Uhrzeit der Fertigstellung: -
@paul53 Oh mann. Ja, da bin ich etwas blind gewesen. Ich hab den Debug-Block mal an die richtige Stelle gesetzt.
Ich bau da mal nach. Ich bin da nicht ganz schlau geworden. Zu viele neue Sachen für mich.
Bei der Addition habe ich nun "externe Eingänge" aktiviert. So wie du das gemachst hast. Stellt man damit die richtige Klammersetzung sicher?
Warum Multiplikation der Restzeit in Minuten mit 60000? Woher kommt die 60000 und warum Multiplikation?
-
@oberfragger sagte:
Stellt man damit die richtige Klammersetzung sicher?
Daran ändert sich nichts. Es wird nur die Darstellung geändert.
@oberfragger sagte in Zeitberechung in Blockly:
Warum Multiplikation der Restzeit in Minuten mit 60000?
Umrechnung von Minuten in ms, da auch das Datum-Objekt ms liefert.
-
@paul53 Dank dir für die Infos.
-
@oberfragger
Wärst du so nett und würdest das laufende Skript hier posten? -
@MisterBlinki Wenn ich mal soweit bin...ja.
Gerade sind noch viele andere Themen am Start, aber bist ja nun watcher her.Das Datums-Objekt hat mir irgendwie nichts gebracht. Da bin ich noch zu doof zu. Ich probiere das abern noch einmal...
-
@oberfragger Prima und ich dachte ich verstehe es nicht