NEWS
[gelöst] Waschmaschine/Trockner fertig
-
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="2KlqHZ;4GC+4e}]=n2">Lautstärke</variable> <variable id="AtH_kFvL]@aM;j?F;vw|">O_V_Alexa1</variable> <variable type="interval" id="Tick_1m">Tick_1m</variable> <variable id="(-92ai~xO3+X[TCGX0_">O_V_Alexa2</variable> <variable id="ROXk:)ndsMeX9csWRILz">Meldung_L</variable> <variable id=",J;nOmMBh{zSVR%,-6UX">O_S_Alexa1</variable> <variable id="|IZMxer2;YdsNXVuD=">Zähler_L</variable> <variable id="3GF+g~hD+u{;xNrDO@h6">O_S_Alexa2</variable> </variables> <block type="comment" id="C1TS:F;JeN4f-~ef%/#Y" x="13" y="13"> <field name="COMMENT">Tick_1m</field> <next> <block type="timeouts_setinterval" id="vZy@)c%*@9qOL0h%@;,G"> <field name="NAME">Tick_1m</field> <field name="INTERVAL">1</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="toggle" id="(_qzVDP.wG-u2b)9D1ow"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.DP_Allgemein.Tick_1m</field> <field name="WITH_DELAY">FALSE</field> </block> </statement> </block> </next> </block> <block type="variables_set" id="JmwzY/SJq@)TukF#p]uZ" x="13" y="138"> <field name="VAR" id="2KlqHZ;4GC+4e}]=n2">Lautstärke</field> <value name="VALUE"> <block type="math_number" id="{1N!?ISTYf)kf9k|aUh"> <field name="NUM">35</field> </block> </value> <next> <block type="variables_set" id="BOg;eMsB7w7E$kWWM?nV"> <field name="VAR" id="AtH_kFvL]@aM;j?F;vw|">O_V_Alexa1</field> <value name="VALUE"> <block type="field_oid" id="F](b^V6/TP]hFo17G5?^"> <field name="oid">alexa2.0.Echo-Devices.G090P308915205CX.Commands.speak-volume</field> </block> </value> <next> <block type="variables_set" id="sPX*VP9@O51lS69WoD"> <field name="VAR" id="(-92ai~xO3+X[TCGX0_">O_V_Alexa2</field> <value name="VALUE"> <block type="field_oid" id="Ha#I4)#iWQ#RESgPkwSI"> <field name="oid">alexa2.0.Echo-Devices.G090U509848603VC.Commands.speak-volume</field> </block> </value> <next> <block type="variables_set" id="S;|g(q.As|bdJ01N@%P"> <field name="VAR" id=",J;nOmMBh{zSVR%,-6UX">O_S_Alexa1</field> <value name="VALUE"> <block type="field_oid" id="zv:4McKr3:}uoTr9Dt?t"> <field name="oid">alexa2.0.Echo-Devices.G090P308915205CX.Commands.speak</field> </block> </value> <next> <block type="variables_set" id="T9p1^6~9[UiqA$baMmZ"> <field name="VAR" id="3GF+g~hD+u{;xNrDO@h6">O_S_Alexa2</field> <value name="VALUE"> <block type="field_oid" id="HsBE;#}tBtrtn%wk#!F"> <field name="oid">alexa2.0.Echo-Devices.G090U509848603VC.Commands.speak</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> <block type="schedule" id="FNPHMI4k%oWmRd+~B,:l" x="13" y="313"> <field name="SCHEDULE">0 9 * * </field> <statement name="STATEMENT"> <block type="variables_set" id="BMev:L38.d-nq%^4~CQ?"> <field name="VAR" id="2KlqHZ;4GC+4e}]=n2">Lautstärke</field> <value name="VALUE"> <block type="math_number" id=",eT4uxBCoE7a01h=~BC"> <field name="NUM">35</field> </block> </value> </block> </statement> <next> <block type="schedule" id=":;azAAnVS}-9%Qs@dK"> <field name="SCHEDULE">0 21 * * *</field> <statement name="STATEMENT"> <block type="variables_set" id="w$Y.,29T4cUP;OfG-?3"> <field name="VAR" id="2KlqHZ;4GC+4e}]=n2">Lautstärke</field> <value name="VALUE"> <block type="math_number" id="ff/sOazFBuf9Y#CI)?(f"> <field name="NUM">30</field> </block> </value> </block> </statement> </block> </next> </block> <block type="on_ext" id="oA36h6vbN8|i1PnKU{P" x="13" y="538"> <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="F}{o)*z$;u(kmrr=fdl+"> <field name="oid">0_userdata.0.DP_Allgemein.Tick_1m</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="3PE2ma]/f_03(um[t~Eu"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_compare" id="k3{j9Umw?iy#?LIxJ[/J"> <field name="OP">GT</field> <value name="A"> <block type="get_value" id="?I;.nBHX@-,)[[Qx#FTR"> <field name="ATTR">val</field> <field name="OID">sonoff.0.DVES_DBB6B4.ENERGY_Current</field> </block> </value> <value name="B"> <block type="math_number" id="f,M)V4Wd_1F3TS7|A84F"> <field name="NUM">0.5</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="_sm~y.(OrH-5?GMx!Iv"> <field name="VAR" id="ROXk:)ndsMeX9csWRILz">Meldung_L</field> <value name="VALUE"> <block type="logic_boolean" id="9!he:ZmJOCmxdWM/J?F"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="variables_set" id="=FIPC?2F0?PMy(WlnbuF"> <field name="VAR" id="|IZMx*er2;YdsNXVuD=">Zähler_L</field> <value name="VALUE"> <block type="math_number" id="G|foxL/Un3=}lxJyVfqD"> <field name="NUM">0</field> </block> </value> </block> </next> </block> </statement> <value name="IF1"> <block type="logic_operation" id="n2}7jR7LDu4,mY]Ibc." inline="false"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="{c|47|voMaD,plPNw@N0"> <field name="OP">LT</field> <value name="A"> <block type="get_value" id="R]{Q+8vLT(d)$?bhwvDR"> <field name="ATTR">val</field> <field name="OID">sonoff.0.DVES_DBB6B4.ENERGY_Current</field> </block> </value> <value name="B"> <block type="math_number" id="k.GQOs{83K+fIvu:2k_K"> <field name="NUM">0.1</field> </block> </value> </block> </value> <value name="B"> <block type="variables_get" id="ttfcY$oxpJx^m(%VHct}"> <field name="VAR" id="ROXk:)ndsMeX9csWRILz">Meldung_L</field> </block> </value> </block> </value> <statement name="DO1"> <block type="controls_if" id="N[taU#Tnkyf6:VIUO09x"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="RxRzmEK6Q$^=i;kFW0n0"> <field name="OP">LT</field> <value name="A"> <block type="variables_get" id="1]@T]Y.{{h?1OX5Te1XI"> <field name="VAR" id="|IZMxer2;YdsNXVuD=">Zähler_L</field> </block> </value> <value name="B"> <block type="math_number" id="$8SYvFCwE-(0ybO/hULD"> <field name="NUM">5</field> </block> </value> </block> </value> <statement name="DO0"> <block type="math_change" id="EM$p37vj5Q{{C]jsWs/9"> <field name="VAR" id="|IZMx*er2;YdsNXVuD=">Zähler_L</field> <value name="DELTA"> <shadow type="math_number" id="azoK3iowe][Qlq+FhH~w"> <field name="NUM">1</field> </shadow> </value> </block> </statement> <statement name="ELSE"> <block type="debug" id="T=jI+0y-REES}/gXetd"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="IUws6Mur{1Nm{lTvk{f."> <field name="TEXT">### Waschmaschine links fertig.</field> </shadow> </value> <next> <block type="control" id="vA1CGC:$c/le=FU!wf)7"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.DP_Allgemein.DP_StatusListe</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="i!Z5qx:R6Pa+W5gyO|+"> <field name="TEXT">= Waschmaschine links fertig.</field> </block> </value> <next> <block type="control_ex" id="{oLr6R[Q]#fqHF_-EE_J" inline="true"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid" id="z+28]gjEW4z!S^9wvBO"> <field name="oid">Object ID</field> </shadow> <block type="variables_get" id="wlLlWszvDF3qCGsn9EN"> <field name="VAR" id="AtH_kFvL]@aM;j?F;vw|">O_V_Alexa1</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="qP7si6f*A{[nxyj|R}-d"> <field name="BOOL">TRUE</field> </shadow> <block type="variables_get" id="4g(r/}q$2ipQg?X+FfA*"> <field name="VAR" id="2KlqHZ;4GC+4e}]=n2">Lautstärke</field> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="(i,_PgIW==|IdJ/.HdEq"> <field name="NUM">0</field> </shadow> </value> <next> <block type="control_ex" id="EqVK@S4zs/^LwnP1X5Kt" inline="true"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid"> <field name="oid">Object ID</field> </shadow> <block type="variables_get" id="h@$Pq[qjb#1%)jt^]oFp"> <field name="VAR" id="(-92ai~xO*3+X[TCGX0_">O_V_Alexa2</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean"> <field name="BOOL">TRUE</field> </shadow> <block type="variables_get" id="L1K-VBSA{nk~_Lu~]xYr"> <field name="VAR" id="2KlqHZ;4GC+4e}]=n2">Lautstärke</field> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="y6WtA#!XOhre%0Vt9d.u"> <field name="NUM">0</field> </shadow> </value> <next> <block type="control_ex" id="C5miROO@/(LT=f^ZYqLh" inline="true"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid"> <field name="oid">Object ID</field> </shadow> <block type="variables_get" id="0ZS(Th(0i#Wa9Eif]4Ho"> <field name="VAR" id=",J;nOmMBh{zSVR%,-6UX">O_S_Alexa1</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="jN=nu2H1c#J}Zw[xh~eG"> <field name="BOOL">TRUE</field> </shadow> <block type="text" id="V$Zd/$}Q18Jy}faaz{+O"> <field name="TEXT">Das Waschprogramm der linken Waschmaschine wurde beendet.</field> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="7PUi_Z|Z=dS_ej]y#*#"> <field name="NUM">0</field> </shadow> </value> <next> <block type="control_ex" id="SW90#+3@Raj7vSb(+KHN" inline="true"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid"> <field name="oid">Object ID</field> </shadow> <block type="variables_get" id="JiHpn96#vmfbXUAZ#;pf"> <field name="VAR" id="3GF+g~hD+u{;xNrDO@h6">O_S_Alexa2</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean"> <field name="BOOL">TRUE</field> </shadow> <block type="text" id="FU)nu(WD6a{6Zocl8Hs"> <field name="TEXT">Das Waschprogramm der linken Waschmaschine wurde beendet.</field> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id=":,L[FXsr=M]I!yBpOF#="> <field name="NUM">0</field> </shadow> </value> <next> <block type="variables_set" id="G=Kf3z3NKQBY7^x83$v9"> <field name="VAR" id="ROXk:)ndsMeX9csWRILz">Meldung_L</field> <value name="VALUE"> <block type="logic_boolean" id="2D|_djAMg6)-9Y+%u^E0"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="variables_set" id=";@t{ux@#cl+IWv^:#:LD"> <field name="VAR" id="|IZMxer2;YdsN`XVuD=">Zähler_L</field> <value name="VALUE"> <block type="math_number" id="%Q!-JYQ=3K;FQ[tn3tWl"> <field name="NUM">0</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </statement> </block> </statement> </block> </xml> [/s]
-
@ITCrowd sorry, in code tags wäre das ganze brauchbarer und leserlicher.
-
@init5 sagte in Waschmaschine/Trockner fertig:
Ich hoffe so sehr, dass jemand von euch den Fehler findet. Es würde den WAF für weitere Projekte dienen
Den Fehler.. so einfach ist das nicht. Fangen wir mal vorne an:
- Du Triggerst auf "wurde aktualisiert", sprich das Skript springt auch dann an wenn sich die Leistungsaufnahme nicht ändert
- Du nutzt für "WaMa_running" einen Datenpunkt. Da wäre eine Variable sinnvoller.
- Du setzt den Zähler nur bei jedem Skriptstart auf 0.
- Jede Sekunde den Wert Abfragen ist Unsinn. Insbesondere da der Wert von dem Skript bei jedem Trigger, sprich jeder Aktualisierung des Stromwertes bereits 3x abgefragt wird (neben 3x abfrage auf den Datenpunkt "WaMa_running"
Das Thema synchronisieren mit einem "heartbeat" (wie @ITCrowd es nutzt) sollte zwar funktionieren, ist aber eigentlich unnötig. Insbesondere erzeugt es (wenn es viele Skripte synchronisiert) regelmässige Spikes weil alle Skripte gleichzeitig losrennen) Notwendig ist nur ein sauberes "entprellen" des Messwertes. Zu dem Thema gibt es einige Beispiele im Forum, trotzdem aber noch einmal hier als "pseudocode" zum nachbauen.
Mit der Folgenden Logik sollte es gehen:
- Eine Variable für "WaMa running", bei Skript start auf falsch setzen
- Ein Trigger auf "power", triggern auf "wurde geändert" (NICHT wurde aktualisiert)
- Im Trigger als erstes die Abfrage falls Wert > 100 (Hinweis zum "wert" Baustein siehe Bild - der Baustein in dem Objekt ID steht lässt sich auf Wert umstellen - er beinhaltet immer den Wert des Objektes welchen den Trigger ausgelöst hat.
- im Falls-Zweig: falls nicht "WaMa running" -> WaMa running auf wahr setzen, Telegramm Nachricht senden.
- sonst Falls "Wert" < 5 und "letzter Wert" >= 5 ("letzter Wert" ist der gleiche Baustein wie "Wert", der kann auch auf den Wert des Objektes direkt bevor der Trigger aktiviert wurde gesetzt werden) - Dadurch wird dieser Zweig nur angesprochen wenn der Wert von >- 5 auf kleiner 5 wechselt
- timeout 60 sekunden - im Timeout: falls "wert von Objekt ID Power" (Hier wirklich den Datenpunktwert NEU holen, sonst wird das nichts) -> Nachricht an Telegramm, WaMa Running = falsch setzen.
- im sonst Zweig (von dem oben angegebenen "sonst Falls" : Timeout löschen.
Noch ein Nachtrag zum Thema "variable oder State" für "WaMa running". Eine Variable macht mehr sinn für den Einsatzzweck, sofern du diese nicht zusätzlich irgendwo nutzen willst (Anzeige das die WaMa läuft, etc.). Sollte also ein Datenpunkt genutzt werden, dann macht es sinn als ERSTES im Trigger den Datenpunkt zu lesen und in eine lokale Variable zu übernehmen. Diese kannst du dann im Trigger mehrfach abfragen ohne jedesmal in den Objektbaum zu schauen.
A.
p.s. ich geb das lieber als Pseudocode raus - selber bauen und nachvollziehen ist besser als kopieren und hoffen es passt. -
@Asgothian Vielen Dank für das Feedback. Ich brauchte ein bisschen um zu sehen wie weit ich damit komme.
Ich benötige einen Datenpunkt für die Weiterverarbeitung. Dieser wird zum einen in VIS angezeigt und zum Anderen in History geloggt.
Ich check es leider nicht ganz, bzw. nur die ersten Punkte. Im unteren Teil steige ich aus.- Eine Variable für "WaMa running", bei Skript start auf falsch setzen
- Ein Trigger auf "power", triggern auf "wurde geändert" (NICHT wurde aktualisiert)
- Im Trigger als erstes die Abfrage falls Wert > 100 (Hinweis zum "wert" Baustein siehe Bild - der Baustein in dem Objekt ID steht lässt sich auf Wert umstellen - er beinhaltet immer den Wert des Objektes welchen den Trigger ausgelöst hat.
- im Falls-Zweig: falls nicht "WaMa running" -> WaMa running auf wahr setzen, Telegramm Nachricht senden.
- sonst Falls "Wert" < 5 und "letzter Wert" >= 5 ("letzter Wert" ist der gleiche Baustein wie "Wert", der kann auch auf den Wert des Objektes direkt bevor der Trigger aktiviert wurde gesetzt werden) - Dadurch wird dieser Zweig nur angesprochen wenn der Wert von >- 5 auf kleiner 5 wechselt
- timeout 60 sekunden - im Timeout: falls "wert von Objekt ID Power" (Hier wirklich den Datenpunktwert NEU holen, sonst wird das nichts) -> Nachricht an Telegramm, WaMa Running = falsch setzen.
- im sonst Zweig (von dem oben angegebenen "sonst Falls" : Timeout löschen.
Das ist der Stand, den ich verstanden habe
Kommt das etwa hin?
Der Tipp mit dem Objekt ID Block, der sich auf das Objekt im Trigger bezieht ist echt hilfreich!
-
@da_Woody Sorry, war schon spät.
-
Ich bin am Ende bei dieser Keep-it-simple Variante in Verbindung mit einer Fritz DECT Steckdose gelandet.
Vielleicht funktioniert es ja auch bei Dir?!Unsere Waschmaschine verbraucht am Ende weniger als 5 Watt für den Knitterschutz und wenn dazwischen unter 1 Watt. Ggf. musst Du das für Deine Waschmaschine anpassen...
-
@init5 Nein, so geht es nicht. Versuch mal dieses:
wobei Das Objekt 1 das Power Objekt ist, und das Objekt 2 das Objekt WaMa_running ist.
-
@w00dst0ck Bei der Variante würde ich entweder ständig Meldungen bekommen, wenn die WaMa eine Pause macht, oder aber ich würde gar keine Meldung bekommen, weil die WaMa auch im Standby (wenn sie fertig ist) über 2W braucht.
@Asgothian Danke, ich habe es jetzt entsprechende angepasst. Der nächste Waschgang wird zeigen, ob es jetzt funktioniert. Was mir noch etwas komisch erscheint ist dieses "falls nicht WaMa_running". Ich gehe mal davon aus, dass das "falls WaMa_running nicht true" bedeutet, aber die Notation ist wie gesagt komisch.
-
@init5 sagte in Waschmaschine/Trockner fertig:
Was mir noch etwas komisch erscheint ist dieses "falls nicht WaMa_running". Ich gehe mal davon aus, dass das "falls WaMa_running nicht true" bedeutet, aber die Notation ist wie gesagt komisch.
Der Falls block erwartet eine "Bedingung", die "wahr" oder "falsch" sein kann. Bei einer Variablen X die selber "wahr" oder "falsch" sein kann ist also "falls X" das gleiche wie "falls X = wahr". Und da ich Faul bin hab ich mir den Logikblock gespart und einfach nur "WaMa_running" statt "WaMa_running = wahr" gesetzt. Dito oben - wie du auch schon richtig erkannt hast.
-
@Asgothian es funktioniert leider nicht. Es kommen nach wie vor ständig "WaMa läuft" und "WaMa fertig" Meldungen
-
@init5 kannst du mal bitte aufzeichnen wie sich der Datenpunkt "power" über die Zeit verhält ? Ich bin mir sicher das sich da etwas bewegt.
A.
-
@Asgothian Den Datenpunkt habe ich bereits aufgezeichnet. Aber nach was suchen wir da genau?
Das komische ist, dass die Meldungen sogar mehrmals pro Minute kommen. Dabei sollte das Timeout doch zumindest verursachen, dass der Status "WaMa running = true" mindestens die gewählte Zeit lang gehalten wird? -
@init5 Zeig mir die Aufzeichnung bitte mal
-
@Asgothian Und bitte auch das Skript so wie du es gerade laufen hast
-
Ich hatte leider noch die Eigenschaft "entprellen - nur aufzeichnen, wenn Wert min. 1000ms gleich" aktiviert.
Das Skript sieht aus, wie du es vorgschlagen hast
-
@init5 Das mit dem entprellen solltest du noch einmal abschalten und neu aufnehmen. Am Besten dann als Textdatei oder Code hinter Spoiler posten.
Ich gehe davon aus das bei den nicht entstellten Werten sich der Grund versteckt warum das Skript ständig "start" und "ende" meldet.
Alternativ mal bitte vor jeweils vor dem Telegramm Baustein den Folgenden Baustein einbauen:
und
Dann kannst Du im Log sehen wie die Werte aussehen gestartet und angehalten wird.A.
-
@Asgothian Die beiden debug outputs hab ich eingebaut und morgen wird gewaschen. Die Werte aus meinem letzten Post in in einen Spoiler verpackt. Vielen Dank für deine Ausdauer!
-
@Asgothian Heute liefen einige Waschgänge und was soll ich sagen ... es funktioniert. Dein Skript läuft und tut was es soll. Das Problem lag woanders. Und zwar habe ich beim vielen rumtesten immer mal den aktuellen Stand dupliziert. Scheinbar bin ich in der Zeile verrutscht und es lief nicht das aktuelle.
Hier fehlte im Sonst Zweig die Bedingung "und vorheriger Wert >5". Zudem waren die Werte noch vom Typ Text und nicht aus dem Mathematik-Block, wie bei dir. Bei letzterem weiß ich nicht ob es einen Unterschied macht.
Jetzt passt es auf jeden Fall und ich kann anfangen den Trockner mit zu überwachen und solche Späße wir den Verbrauch mit einzubauen. Vielen Dank!
-
@init5 sagte in Waschmaschine/Trockner fertig:
Zudem waren die Werte noch vom Typ Text und nicht aus dem Mathematik-Block, wie bei dir. Bei letzterem weiß ich nicht ob es einen Unterschied macht.
Das macht auf jeden Fall einen entsprechenden Unterschied. Textvergleich und numerischer Vergleich liefern nicht immer die gleichen Werte.
Ansonsten, fein das es läuft. Ich hatte schon irgendwas komisches im Verdacht.
A.
-
Moin,
ich weiß das Thema ist theoretisch gelöst und @Asgothian hat zu einem funktionsfähigen blockly verholfen, jedoch für alle vielleicht nicht ganz klar, so hat mich @Phantomkommander angeschrieben und gefragt ob ich ihm helfen kann.
Ich selber hab so etwas nicht am laufen und nur mit den infos gearbeitet die mir von Phantomkommander gegeben wurden.
Wenn ich das richtig verstanden habe, gibt es ein Objekt, dass den Wert des Stromverbrauchs der Waschmaschine angibt, die Waschmaschine macht zum Ende mehrere Pausen und läuft wieder an (Knitterschutz), in den Pausen liegt der Wert zwischen 2-5, die Pausen gehen 21 sekunden.
Ich habe hier ganz einfach ein trigger auf diesen Wert gesetzt, der erkennt wenn der Wert unter 10 liegt und startet einen 30s timeout (ich empfehle 60s), sollte der Wert innerhalb der 30s wieder auf über 10 steigen, wird der timeout gestoppt, sollten die 30s verstreichen, wird das „fertig“ Signal übermittelt.
(Genau was oben schon als bild gepostet wurde, nur für aussenstehende direkt einfügbar und ich hoffe besser zu verstehen)
(Edit nach Test: Der schwellwert für den timeout musste reduziert werden da weitere längere Pausen sonst dafür sorgen, das dass fertig Signal abgegeben wird, hier wurde 5w erfolgreich getestet, kommt aber immer auf die jeweilige Waschmaschine an!)Außerdem hab ich eine Funktion eingebaut, die es ermöglicht, Alexa zu fragen: „wie lange läuft die Waschmaschine noch“, die Antwort ist nur eine gute Schätzung da nur erkannt wird wann sie gestartet ist, hier hab ich eine Zeit von 120min (2std) festgelegt, die ein normales program braucht, muss von jedem selber angepasst werden und ist im blockly kommentiert!
Zusätzlich wird erkannt zu welchem Echo gesprochen wurde und antwortet auch dort, hier muss eventuell noch die Lautstärke und Uhrzeit angepasst werden.Hier sollte eine Routine in der Alexa App angelegt werden, als Start die Frage „wie lange läuft die Waschmaschine noch“ und als Antwort „moment“ an den angesprochen Echo.
So gibt es auch eine sauber Antwort und nicht „es wurde kein Timer gefunden“!Außerdem muss die Objekt ID für den Verbrauch von jedem angepasst werden, im blockly als (Waschmaschine) festgelegt.
Ich hab versucht es einfach und für jeden brauchbar zu halten, in dem Fall wird mit Alexa gearbeitet, wenn dies nicht der Fall ist, kann zusätzlich oder anstelle von steuere „speak“ am Ende, einfach eine Lampe Gesteuert werden.
Ich habe alles fehlerfrei mit einem eigen erstellten Objekt getestet, bis auf das wenn ich frage "wie lange noch" und die Waschmaschiene unter zwei minuten läuft, die antwort: "die Waschmaschiene läuft seit eins minuten ..." nicht ganz korrekt ist, ist mir nichts aufegefallen, dies habe ich bewusst ignoriert.
Wenn es Fragen oder Probleme gibt, einfach fragen.<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="SEA4Zs3?=k:37=20K4Lu">an/aus</variable> <variable id="h]3son-MQJM,,:]`6_#2">check</variable> <variable id="Cuy;.6~8+/J0_Ap+{cGn">gerät</variable> <variable id="]3XUnZz=E)PJssgmSsYc">vergangen</variable> <variable id="YZGA=8Ii?c_%-4d|sUuo">start</variable> <variable type="timeout" id="timeout">timeout</variable> <variable type="interval" id="Intervall">Intervall</variable> <variable id="Ut8kTa!0@-C,ZM)?]_]P">restwert</variable> <variable id="TyrBnL^tW)pp(N]xLBKL">rest</variable> <variable id="eg!rsE:zHp#zL/LjCwP7">antwort</variable> <variable id="CqOqAxyS/CHs]Qd!}Kv#">lautstärke</variable> </variables> <block type="comment" id="JD=H/@RaNhOSO(8vjnS(" x="38" y="-37"> <field name="COMMENT">objekt id (Waschmaschiene) muss das objekt sein, welches den stromverbrauch ausgibt!</field> </block> <block type="variables_set" id="X0vfAm*D-x9e5FGnRtC:" x="38" y="38"> <field name="VAR" id="SEA4Zs3?=k:37=20K4Lu">an/aus</field> <value name="VALUE"> <block type="logic_boolean" id="~Ku|/GwVorz({Ore-J,s"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="variables_set" id="^|z|]LP/P8j6@7W}{3c}"> <field name="VAR" id="h]3son-MQJM,,:]`6_#2">check</field> <value name="VALUE"> <block type="logic_boolean" id="oAZLTm4uCkV[cwAh|6iA"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> <block type="on" id="}`m|MGG0z1(qB$($`P45" x="38" y="138"> <field name="OID">0_userdata.0.Waschmaschiene</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="controls_if" id="SM_IHzr1p}S5Vvf/k7CK"> <value name="IF0"> <block type="logic_compare" id="5Z!N8opL[jg%@8~^6(E*"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="N`K),}WeU0G(6ZvS,,:|"> <field name="VAR" id="SEA4Zs3?=k:37=20K4Lu">an/aus</field> </block> </value> <value name="B"> <block type="logic_boolean" id="[.-f%QP`YUr#I//*eJbd"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="comment" id="D#a0x7|!|;R;ebsm2uhj"> <field name="COMMENT">setze die 10(watt) auf den wert, der in der pause unterschritten aber beim drehen wieder überschritten wird!</field> <next> <block type="controls_if" id="C1`y{-4kt[E=i^c@Wuk7"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_operation" id="50GYOvxsDLqesXp[CaY?"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="aFL47cn+=1i)A34ESBGc"> <field name="OP">LT</field> <value name="A"> <block type="get_value" id="c]-fPbeJ,L}FiAR98,n?"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Waschmaschiene</field> </block> </value> <value name="B"> <block type="math_number" id="$G4iJa^K,g:O$(LCgh?M"> <field name="NUM">10</field> </block> </value> </block> </value> <value name="B"> <block type="logic_negate" id="z~I.Q@rjcAGpmAW]NoVp"> <value name="BOOL"> <block type="variables_get" id="bJ8^/P9.}#yb`j+~A4;V"> <field name="VAR" id="h]3son-MQJM,,:]`6_#2">check</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="w-#m_O1:2n`Q~(4CC?p|"> <field name="VAR" id="h]3son-MQJM,,:]`6_#2">check</field> <value name="VALUE"> <block type="logic_boolean" id="LIwjMD{RPRlI*D?Ps#Lf"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="comment" id="O5`TAEBuWpxilLy.C~u}"> <field name="COMMENT">setze timeout auf mehr als eine pause!</field> <next> <block type="timeouts_settimeout" id="EarW3/R=`A/*V{Q6X@mu"> <field name="NAME">timeout</field> <field name="DELAY">30</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="comment" id="Irk40P!Fc?w3}MFDni|F"> <field name="COMMENT">setze objekt id (speak) auf dein gerät oder geräte!</field> <next> <block type="control" id=")+Y_3X73G`c2xeE`AdlJ"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G2A14R039516097D.Commands.speak</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="cmG{jj(/ZqPS2+4N1yjX"> <field name="TEXT">Die Waschmaschiene ist fertig. </field> </block> </value> <next> <block type="variables_set" id="sE4S22T]^T5QIGA8In5T"> <field name="VAR" id="SEA4Zs3?=k:37=20K4Lu">an/aus</field> <value name="VALUE"> <block type="logic_boolean" id="h/b#?PB2B~#{0Y7/}kS-"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="timeouts_clearinterval" id="agav!3zAWmUG6o)StnGh"> <field name="NAME">Intervall</field> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </statement> <value name="IF1"> <block type="logic_compare" id="ls*4wx`|8^-=X(_X7oV3"> <field name="OP">GT</field> <value name="A"> <block type="get_value" id=",-JTBfDN!6{2LNeasCxv"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Waschmaschiene</field> </block> </value> <value name="B"> <block type="math_number" id="B%4~RI6jtu/~)2fo3g[r"> <field name="NUM">10</field> </block> </value> </block> </value> <statement name="DO1"> <block type="timeouts_cleartimeout" id="n_V|$YpFx8ZbF8aLjJUY"> <field name="NAME">timeout</field> <next> <block type="variables_set" id="OyHork8KnjI`dh[vCkLR"> <field name="VAR" id="h]3son-MQJM,,:]`6_#2">check</field> <value name="VALUE"> <block type="logic_boolean" id="nNkOU6y48V!$_buS6uh5"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </statement> </block> </next> </block> </statement> </block> </statement> </block> <block type="on" id="GJC-+:*pCF:+YrSV+ERV" x="38" y="788"> <field name="OID">0_userdata.0.Waschmaschiene</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="controls_if" id="fQ?rj}$/k4xiV4m}Fq)n"> <value name="IF0"> <block type="logic_compare" id="j+hh}{^zkw3zXuGT)b{x"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="C/?^csS#f7^t2|5+b^ci"> <field name="VAR" id="SEA4Zs3?=k:37=20K4Lu">an/aus</field> </block> </value> <value name="B"> <block type="logic_boolean" id="HWv+Ul%ZU5|f(K7?lcYg"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="controls_if" id="v=kw^[C*$MFx!3TkVZI`"> <value name="IF0"> <block type="logic_compare" id="R3,?)]6S1wPXV(CgHALF"> <field name="OP">GT</field> <value name="A"> <block type="get_value" id="p7IMcd5QlDK~*.fJob#m"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Waschmaschiene</field> </block> </value> <value name="B"> <block type="math_number" id="N3c-VdtVth1Aey]bC$Xd"> <field name="NUM">10</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="2Hce7C5lG5)O[BSD!-*U"> <field name="VAR" id="SEA4Zs3?=k:37=20K4Lu">an/aus</field> <value name="VALUE"> <block type="logic_boolean" id="lmd^OUoPgKd8*~:(17U%"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="comment" id="@2Y!XKhDVD$/Z.JVj3!x"> <field name="COMMENT">ab hier nur "wie lange noch"!</field> <next> <block type="variables_set" id="QSau,.q)~d7le10*jPDZ"> <field name="VAR" id="YZGA=8Ii?c_%-4d|sUuo">start</field> <value name="VALUE"> <block type="math_number" id="O4MVGl@FXuNrt8,kBwWc"> <field name="NUM">0</field> </block> </value> <next> <block type="timeouts_setinterval" id="-./ElrAawx21Ostxr-z_"> <field name="NAME">Intervall</field> <field name="INTERVAL">1</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="math_change" id=";]CSN~M+@g)iph6tD|3#"> <field name="VAR" id="YZGA=8Ii?c_%-4d|sUuo">start</field> <value name="DELTA"> <shadow type="math_number" id=")|d.Yig8D|RAF4%0j#M]"> <field name="NUM">1</field> </shadow> </value> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </statement> </block> </statement> </block> <block type="on" id="#mhtjpS0)ZU3@`Zb+Z*." x="38" y="1238"> <field name="OID">alexa2.0.History.summary</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="comment" id="=38aL*=AXn.QSkO{ho?O"> <field name="COMMENT">für die frage "wie lange läuft die waschmaschiene noch" eine routine in der alexa app anlegen, als antwort würde ich "moment" vorschlagen.</field> <next> <block type="controls_if" id="5Lbgw6Dk[{i4*+;:@(Lz"> <value name="IF0"> <block type="logic_compare" id="+o7HkIh=[q;IojboS(R?"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="wW=qk!%P6B=Rf1R%;zgn"> <field name="ATTR">val</field> <field name="OID">alexa2.0.History.summary</field> </block> </value> <value name="B"> <block type="text" id="^|TJn:B5}vZ3::)?DjEQ"> <field name="TEXT">wie lange läuft die waschmaschine noch</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="P5TQAX(pV1b[4TtH?S7h"> <field name="VAR" id="Cuy;.6~8+/J0_Ap+{cGn">gerät</field> <value name="VALUE"> <block type="get_value" id="}Jygy3YoS)yKzFr4/]vz"> <field name="ATTR">val</field> <field name="OID">alexa2.0.History.serialNumber</field> </block> </value> <next> <block type="variables_set" id="Fty,zqxo;is*TzWs1.}_"> <field name="VAR" id="]3XUnZz=E)PJssgmSsYc">vergangen</field> <value name="VALUE"> <block type="logic_ternary" id="_1pa[ob#:1C55QUVj1Ta"> <value name="IF"> <block type="logic_compare" id="!#jgbZwY,1;3Ww[7GFIB"> <field name="OP">LT</field> <value name="A"> <block type="variables_get" id="Oe]Jld01C,S7a1td^iKp"> <field name="VAR" id="YZGA=8Ii?c_%-4d|sUuo">start</field> </block> </value> <value name="B"> <block type="math_number" id="fKu-nr%zz8*A:n+.]!M$"> <field name="NUM">60</field> </block> </value> </block> </value> <value name="THEN"> <block type="text_join" id="z:06.$Ra3Gr#oFam6Z9+"> <mutation items="2"></mutation> <value name="ADD0"> <block type="variables_get" id="VVEhMO!M2#5Vmw?*L[?k"> <field name="VAR" id="YZGA=8Ii?c_%-4d|sUuo">start</field> </block> </value> <value name="ADD1"> <block type="text" id="U_A:)4@y4O5T,:@$V4F~"> <field name="TEXT"> minuten </field> </block> </value> </block> </value> <value name="ELSE"> <block type="text_join" id="SYNrx#0mt3fl(XQk@jGI"> <mutation items="2"></mutation> <value name="ADD0"> <block type="logic_ternary" id="j3)Id(Zqj_F,IZIPQ|Bi"> <value name="IF"> <block type="logic_compare" id="AnJTwO*;l!T3)BKH#l%:"> <field name="OP">LT</field> <value name="A"> <block type="variables_get" id="W8DOF0RXjHJi8]J7Q9.]"> <field name="VAR" id="YZGA=8Ii?c_%-4d|sUuo">start</field> </block> </value> <value name="B"> <block type="math_number" id="yka`m%E[:w!6nx8GYdZ/"> <field name="NUM">120</field> </block> </value> </block> </value> <value name="THEN"> <block type="text" id="*-3Og327Q0SrhmFLM0[e"> <field name="TEXT">einer stunde</field> </block> </value> <value name="ELSE"> <block type="text_join" id="`eA5z6jX9;n!yY_nQQ#l"> <mutation items="2"></mutation> <value name="ADD0"> <block type="math_round" id="p}[pTXUJG,%#gZiLN^AD"> <field name="OP">ROUNDDOWN</field> <value name="NUM"> <shadow type="math_number" id=":Gu*)[+.M2;~2aH$KRNh"> <field name="NUM">3.1</field> </shadow> <block type="math_arithmetic" id="wZg.b_h@VgaC-4w4!w4R"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number" id="XfFv5pIlPl4@+vlq[+LT"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="+@MRzj!ul#yPomRpTSu/"> <field name="VAR" id="YZGA=8Ii?c_%-4d|sUuo">start</field> </block> </value> <value name="B"> <shadow type="math_number" id="IUnYWEIJ4a]QmgqV}:l?"> <field name="NUM">60</field> </shadow> </value> </block> </value> </block> </value> <value name="ADD1"> <block type="text" id="2VdI)uR*%c!hWvk!8+!M"> <field name="TEXT"> stunden</field> </block> </value> </block> </value> </block> </value> <value name="ADD1"> <block type="logic_ternary" id="Um$J[dd7rnOjQ8aa!]-5"> <value name="IF"> <block type="logic_compare" id="@z8quz9C)*_Bzsf0N^^~"> <field name="OP">GT</field> <value name="A"> <block type="math_arithmetic" id="o,F]pw+`4JEsn~!`A3hS"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="Z@+=K!b=i..hU9-.EJ$*"> <field name="VAR" id="YZGA=8Ii?c_%-4d|sUuo">start</field> </block> </value> <value name="B"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="!rBY2j[Pp:?3~F}Oh?2f"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="math_round" id="VC?4I}a*w`1MrDU}=Tps"> <field name="OP">ROUNDDOWN</field> <value name="NUM"> <shadow type="math_number"> <field name="NUM">3.1</field> </shadow> <block type="math_arithmetic" id="PDiuk6g^[n6Blz3k{?W1"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="Td5;cge,MYHgW,QQaYuk"> <field name="VAR" id="YZGA=8Ii?c_%-4d|sUuo">start</field> </block> </value> <value name="B"> <shadow type="math_number" id="`vNxU|V2$~P_!1~F4z{9"> <field name="NUM">60</field> </shadow> </value> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id="#c$sB]1,F*^{*:O7ZLJ}"> <field name="NUM">60</field> </shadow> </value> </block> </value> </block> </value> <value name="B"> <block type="math_number" id="!la53FklrL`?A`ZWO`AG"> <field name="NUM">0</field> </block> </value> </block> </value> <value name="THEN"> <block type="text_join" id="A.3g;T~-##w+h:KM9@iz"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="iR.A)rU/aVvvzrpVo@W5"> <field name="TEXT"> und </field> </block> </value> <value name="ADD1"> <block type="math_arithmetic" id="JfP|ZA-0EPOAv#T}169Y"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="=g52wtq|?JwW^v$k@5oX"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="T@zG/BT_wUE1~_iB.$B!"> <field name="VAR" id="YZGA=8Ii?c_%-4d|sUuo">start</field> </block> </value> <value name="B"> <shadow type="math_number" id="|RR^-~/CfCAGDG0AbQw."> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="=1J9rK9!5@3xnhE^-,gH"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="kc4=k*4Ug4gFJox|+{S!"> <field name="NUM">1</field> </shadow> <block type="math_round" id="02r.Ne4@Kjzn{1[XCb1v"> <field name="OP">ROUNDDOWN</field> <value name="NUM"> <shadow type="math_number" id="J6Vje:59){dsl!/m6AQ("> <field name="NUM">3.1</field> </shadow> <block type="math_arithmetic" id="V0fN:M*4[5}g:~|6wD0+"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="~kujdI=Si2g-|pk~u/yY"> <field name="VAR" id="YZGA=8Ii?c_%-4d|sUuo">start</field> </block> </value> <value name="B"> <shadow type="math_number" id="8A)o`f+5?!tF7;*f-O=L"> <field name="NUM">60</field> </shadow> </value> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id="b:YA`o^F#ahSzs;sqiUN"> <field name="NUM">60</field> </shadow> </value> </block> </value> </block> </value> <value name="ADD2"> <block type="text" id="Wm=e;#@!(tOo75Klhn?`"> <field name="TEXT"> minuten</field> </block> </value> </block> </value> <value name="ELSE"> <block type="text" id=";RD[,9^?OkC01i;k`2ro"> <field name="TEXT"></field> </block> </value> </block> </value> </block> </value> </block> </value> <next> <block type="comment" id="v;OeQZfl4_ASIvb!,[*|"> <field name="COMMENT">hier die 120(min) auf den wert stellen, die eine normale wäsche in minuten braucht.</field> <next> <block type="variables_set" id="Gmf|wF/8LD/3tyWN`XHt"> <field name="VAR" id="Ut8kTa!0@-C,ZM)?]_]P">restwert</field> <value name="VALUE"> <block type="math_arithmetic" id="fVX`l+|a=vFiF(n3Vs:4"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="mBB~5X.w]]L~#WV:Paz/"> <field name="NUM">1</field> </shadow> <block type="math_number" id="ft%4rI0%:Fe*6]c}?km8"> <field name="NUM">120</field> </block> </value> <value name="B"> <shadow type="math_number" id="e!Rl_G50yAK;B%U52IC["> <field name="NUM">1</field> </shadow> <block type="variables_get" id="fjq+0.n}aoe*~vPv/-|i"> <field name="VAR" id="YZGA=8Ii?c_%-4d|sUuo">start</field> </block> </value> </block> </value> <next> <block type="variables_set" id="(j:!VKj|5FfG(H}{,5,D"> <field name="VAR" id="TyrBnL^tW)pp(N]xLBKL">rest</field> <value name="VALUE"> <block type="logic_ternary" id="pUoy-85dUvp!_*QDt)V`"> <value name="IF"> <block type="logic_compare" id=".6tN+1l8j^-IQ*-PX8?^"> <field name="OP">LT</field> <value name="A"> <block type="variables_get" id="uV;}DDf@8?XN?11XcgYv"> <field name="VAR" id="Ut8kTa!0@-C,ZM)?]_]P">restwert</field> </block> </value> <value name="B"> <block type="math_number" id="4bEFuB,|~;cv,3Gw#%0H"> <field name="NUM">60</field> </block> </value> </block> </value> <value name="THEN"> <block type="text_join" id="W:Eh9WD-O#5{h.X2@^+6"> <mutation items="2"></mutation> <value name="ADD0"> <block type="variables_get" id="NJ#:~-BEm(VKTpqolN*#"> <field name="VAR" id="Ut8kTa!0@-C,ZM)?]_]P">restwert</field> </block> </value> <value name="ADD1"> <block type="text" id="jFN5~-6.YPJn0;4@hbq`"> <field name="TEXT"> minuten </field> </block> </value> </block> </value> <value name="ELSE"> <block type="text_join" id="AW;fKH;7O,lQ~VAcYB_b"> <mutation items="2"></mutation> <value name="ADD0"> <block type="logic_ternary" id="ct/%pCbApq=O?TYDi4el"> <value name="IF"> <block type="logic_compare" id="YnDqsIM?:U%4E~pURXqT"> <field name="OP">LT</field> <value name="A"> <block type="variables_get" id="cXMs*HtTxa#Jgs?GVT6Z"> <field name="VAR" id="Ut8kTa!0@-C,ZM)?]_]P">restwert</field> </block> </value> <value name="B"> <block type="math_number" id="O?R~y|O!2DiFxA~Eyg1|"> <field name="NUM">120</field> </block> </value> </block> </value> <value name="THEN"> <block type="text" id=";c^3A}J+p2^f`q${6?r4"> <field name="TEXT">eine stunde</field> </block> </value> <value name="ELSE"> <block type="text_join" id="W8[cC`AH[BE(6~Efgq]^"> <mutation items="2"></mutation> <value name="ADD0"> <block type="math_round" id="1S/V3W52h%3E,+1f)wEz"> <field name="OP">ROUNDDOWN</field> <value name="NUM"> <shadow type="math_number"> <field name="NUM">3.1</field> </shadow> <block type="math_arithmetic" id="`YUOU==?(hLj`QzHRC79"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="ivPM^K:5D}w`|P{#V|/O"> <field name="VAR" id="Ut8kTa!0@-C,ZM)?]_]P">restwert</field> </block> </value> <value name="B"> <shadow type="math_number" id="PkL4l6ls_q)K-;uTPnj="> <field name="NUM">60</field> </shadow> </value> </block> </value> </block> </value> <value name="ADD1"> <block type="text" id=".,I^jTj$Z1L]GR,~*1G$"> <field name="TEXT"> stunden</field> </block> </value> </block> </value> </block> </value> <value name="ADD1"> <block type="logic_ternary" id="dp^x2MuT1t8}b:?RQW#Y"> <value name="IF"> <block type="logic_compare" id="a2`/o:?-IYsUZ0;j!zY$"> <field name="OP">GT</field> <value name="A"> <block type="math_arithmetic" id="?0KIgyQZv;cFsRT^0-ZV"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="iiUR32eBVb,XDSD+2B0P"> <field name="VAR" id="Ut8kTa!0@-C,ZM)?]_]P">restwert</field> </block> </value> <value name="B"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="QAnIE)_(IrB2obETb:V@"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="math_round" id="M7A?FLPic22]~?6T~-6C"> <field name="OP">ROUNDDOWN</field> <value name="NUM"> <shadow type="math_number"> <field name="NUM">3.1</field> </shadow> <block type="math_arithmetic" id=":JVEA(}Rqp?TMVSRpnbN"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="50?Yt[5Pg8sX]P4,+FSq"> <field name="VAR" id="Ut8kTa!0@-C,ZM)?]_]P">restwert</field> </block> </value> <value name="B"> <shadow type="math_number" id="k`fYmRKld#[[c(o9Dlk0"> <field name="NUM">60</field> </shadow> </value> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id="9xCZW-G_s*ja%+#zR`Wm"> <field name="NUM">60</field> </shadow> </value> </block> </value> </block> </value> <value name="B"> <block type="math_number" id="QJ+}I@!GtoJ^BAxa#ubK"> <field name="NUM">0</field> </block> </value> </block> </value> <value name="THEN"> <block type="text_join" id="^@Ko?SgSEHk5Mm!8`?dy"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="$Hlw)A{=qlx|Q}znhN+o"> <field name="TEXT"> und </field> </block> </value> <value name="ADD1"> <block type="math_arithmetic" id="A](7NJX/%{7m_2%9=qPQ"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id=",_.3BJb3z:1I=9s~B%1["> <field name="VAR" id="Ut8kTa!0@-C,ZM)?]_]P">restwert</field> </block> </value> <value name="B"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="3Yx:XF44iDc6Uae:Epay"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="math_round" id="BNB~u;ZJebS^TD2XCM50"> <field name="OP">ROUNDDOWN</field> <value name="NUM"> <shadow type="math_number"> <field name="NUM">3.1</field> </shadow> <block type="math_arithmetic" id="oGMJ/b_sp[_h(zi5;TDP"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="~E+|]o/rM~#iFId?bzk("> <field name="VAR" id="Ut8kTa!0@-C,ZM)?]_]P">restwert</field> </block> </value> <value name="B"> <shadow type="math_number" id="P1BOGI0P{HY!gou!,MtL"> <field name="NUM">60</field> </shadow> </value> </block> </value> </block> </value> <value name="B"> <shadow type="math_number" id=".K7Jnxd#9[+~xK!OLn(-"> <field name="NUM">60</field> </shadow> </value> </block> </value> </block> </value> <value name="ADD2"> <block type="text" id="jYF%.|(WR5Md,#J~Xz]9"> <field name="TEXT"> minuten</field> </block> </value> </block> </value> <value name="ELSE"> <block type="text" id="5_h!Y8+!SV_/Q59`}Ggd"> <field name="TEXT"></field> </block> </value> </block> </value> </block> </value> </block> </value> <next> <block type="variables_set" id="m5vN@tdIV+2qGM^bTUnr"> <field name="VAR" id="eg!rsE:zHp#zL/LjCwP7">antwort</field> <value name="VALUE"> <block type="logic_ternary" id="A--DH}T$2@@hv6qQ-7F$"> <value name="IF"> <block type="logic_compare" id="$N$Pf}2XNCP-g+y0wAz2"> <field name="OP">EQ</field> <value name="A"> <block type="variables_get" id="{S1|344GoO1cI=Dhv15{"> <field name="VAR" id="SEA4Zs3?=k:37=20K4Lu">an/aus</field> </block> </value> <value name="B"> <block type="logic_boolean" id="/$Sd7B|{FpGmqm}oW(+@"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <value name="THEN"> <block type="text" id="gK/Mq$SH-+V/6(tzH0qD"> <field name="TEXT">Tut mir leid, laut System läuft keine Wäsche.</field> </block> </value> <value name="ELSE"> <block type="text_join" id="=yF5xSxYw4(UYgz.7%qG"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="^1]gC_f9_j@8|6Bj|adK"> <field name="TEXT">Die Waschmaschiene läuft seit </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="vKFGxz6}rI4]IC=a#O7-"> <field name="VAR" id="]3XUnZz=E)PJssgmSsYc">vergangen</field> </block> </value> <value name="ADD2"> <block type="logic_ternary" id="!_dtH:cj:T95z=zg(h,2"> <value name="IF"> <block type="logic_compare" id="M]x2W;v$Gy[#)~,z]/6P"> <field name="OP">GT</field> <value name="A"> <block type="variables_get" id="Q+aTv$uv6f-m6fOmLa5m"> <field name="VAR" id="Ut8kTa!0@-C,ZM)?]_]P">restwert</field> </block> </value> <value name="B"> <block type="math_number" id="[1]DhGu:vn9k,VX3C`OE"> <field name="NUM">0</field> </block> </value> </block> </value> <value name="THEN"> <block type="text_join" id="s8z,Ao.$ALZ/CO[e10{$"> <mutation items="2"></mutation> <value name="ADD0"> <block type="text" id="M?GLiw}ml%=t8zGKN/*?"> <field name="TEXT">, die geschätzte restzeit beträgt </field> </block> </value> <value name="ADD1"> <block type="variables_get" id="+=|Voz5U7_qI-Y59vO=`"> <field name="VAR" id="TyrBnL^tW)pp(N]xLBKL">rest</field> </block> </value> </block> </value> <value name="ELSE"> <block type="text" id="yUtKY2CidEvRfj$~5L*:"> <field name="TEXT">, bei einem normalen waschprogramm, sollte die Waschmaschiene bereits fertig sein.</field> </block> </value> </block> </value> </block> </value> </block> </value> <next> <block type="comment" id="!S*_)#HwS$nPk8xg))#|"> <field name="COMMENT">lautstärke nach uhrzeit:</field> <next> <block type="controls_if" id="6(:8Q}~kMOY#B3a7Tup}"> <mutation else="1"></mutation> <value name="IF0"> <block type="time_compare" id="UQdhRA~Oi/JJEVA+6H4Y"> <mutation xmlns="http://www.w3.org/1999/xhtml" end_time="true"></mutation> <field name="OPTION">between</field> <field name="START_TIME">10:00</field> <field name="END_TIME">18:00</field> </block> </value> <statement name="DO0"> <block type="variables_set" id="Soi5dQrOI#|t:nl,H6z0"> <field name="VAR" id="CqOqAxyS/CHs]Qd!}Kv#">lautstärke</field> <value name="VALUE"> <block type="math_number" id="tn|aQ/Q]dWWqBDRxb;%;"> <field name="NUM">30</field> </block> </value> </block> </statement> <statement name="ELSE"> <block type="variables_set" id="qE~h+A`GL`cs_K0uWlmY"> <field name="VAR" id="CqOqAxyS/CHs]Qd!}Kv#">lautstärke</field> <value name="VALUE"> <block type="math_number" id="!me-|AeAiCXL%RaxGK8S"> <field name="NUM">20</field> </block> </value> </block> </statement> <next> <block type="comment" id="(sFW,[kO7IJ$z0EnW*_w"> <field name="COMMENT">Antwort ausgabe:</field> <next> <block type="control_ex" id="CJp#3n.8SkKji|+{g05!"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid"> <field name="oid">Object ID</field> </shadow> <block type="text_join" id="Z!zOc@Hw:FBnFbHh2gG2"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="%RU2zD:;-,nOE,!~z-Ut"> <field name="TEXT">alexa2.0.Echo-Devices.</field> </block> </value> <value name="ADD1"> <block type="variables_get" id="V8rYmkw0VMvQHsC:5+,?"> <field name="VAR" id="Cuy;.6~8+/J0_Ap+{cGn">gerät</field> </block> </value> <value name="ADD2"> <block type="text" id="O01Ydu^eUNM)MWAQj~fv"> <field name="TEXT">.Commands.speak-volume</field> </block> </value> </block> </value> <value name="VALUE"> <shadow type="logic_boolean"> <field name="BOOL">TRUE</field> </shadow> <block type="variables_get" id="`,P3pdR5mEKSAgiTOr?j"> <field name="VAR" id="CqOqAxyS/CHs]Qd!}Kv#">lautstärke</field> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="3?OyI@@JdPL1VbUO]A6r"> <field name="NUM">1000</field> </shadow> </value> <next> <block type="control_ex" id="~yp,b3e*jg=?i_!41r}~"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid" id="Z2Vgw?xCmBci.VTS?BIZ"> <field name="oid">alexa2.0.Echo-Devices.G2A14R039516097D.Commands.speak</field> </shadow> <block type="text_join" id="!r,y|qI_L}[w?_9!eV])"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="~S~cmTu-sb8:0m=_7qwT"> <field name="TEXT">alexa2.0.Echo-Devices.</field> </block> </value> <value name="ADD1"> <block type="variables_get" id="BlZbn3IErUAmd3|n~4ZD"> <field name="VAR" id="Cuy;.6~8+/J0_Ap+{cGn">gerät</field> </block> </value> <value name="ADD2"> <block type="text" id="TIl.5`v8LT?1K94jI!89"> <field name="TEXT">.Commands.speak</field> </block> </value> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="k$rrR.tm)7$=v+Q+|bCD"> <field name="BOOL">TRUE</field> </shadow> <block type="variables_get" id="bdS(0I)HqPE;=8HU~7wg"> <field name="VAR" id="eg!rsE:zHp#zL/LjCwP7">antwort</field> </block> </value> <value name="DELAY_MS"> <shadow type="math_number" id="Ua3o8D)crm[iv.QrM@|^"> <field name="NUM">2000</field> </shadow> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </statement> </block> </xml>