NEWS
[erledigt] Frage zu Blockly, Warnung bei Regen über Alexa bei geöffnete Fenster und Türen
-
Hallo,
ich habe ein Skript erstellt, welches mich bei Regen über Alexa warnen soll, wenn noch Fenster und Türen geöffnet sind.Ich lasse alle 5 Minuten mit einem Skript über den Adapter "daswetter" überprüfen, ob es regnet.
Wenn ja, wird über oben gezeigtem Skript alle Fenster und Türen abgefragt. Sollte etwas offen sein, werden ich von Alexa informiert.jetzt zu meinem Problem.
Das Skript läuft soweit schon. Nur manchmal spricht Alexa die Sätze nicht zu ende und fängt gleich den Nächsten an.
Wie muss ich mein Skript umbauen, damit Alexa nacheinander alle offenen Türen und Fenster sauber ausgibt. So soll es aussehen.
Achtung, es regnet und folgende Fenster und Türen sind geöffnet:
jetzt sollen nacheinander alle offenen Löcher angesagt werden.Wer kann helfen?
-
@StM47 sagte in Frage zu Blockly, Warnung bei Regen über Alexa bei geöffnete Fenster und Türen:
Nur manchmal spricht Alexa die Sätze nicht zu ende und fängt gleich den Nächsten an.
Das habe ich auch bei mir.........ich glaube da kommt Alexa nicht mit wenn es zu viele Abfragen sind.
-
Mit Verzögerungen denke ich geht einiges.
Ich verstehe aber nicht genau wie ioBroker diese Verzögerungen verarbeitet. -
Ich würde die Ausgabe in eine Funktion packen und dort einen Timer setzen.
Die erste Meldung käme bei dem Beispiel um 5 Sek. verzögert. Jeder weitere Meldung dann auch im Abstand von 5 Sekunden, da der Timer immer wieder neu gestartet wird.
Meist ist ein Mehrfachstart eines Timers unerwünsch. Hier macht es aber Sinn.
In dem Script alle "Steuere" gegen den Funktionsaufruf tauschen.
-
Danke, das probiere ich aus.
-
@rantanplan Wo finde ich denn in Blockly "Ausgabe mit Meldetext"?
-
Das ist der erste Block unter "Funktionen".
In den Editor schieben, "etwas tun" anwählen und umbenennen. (z.B. Ausgabe)
Zahnrad anlicken und Variable hinzufügen. Variablename anklicken und direkt umbenennen.(z.B.Meldetext)
Unter "Funktionen" findest Du dann einen weiteren Block mit dem Namen Deiner Funktion.
Damit wird dann die Funktion aufgerufen und der Text übergeben.
Die neue Variable findest Du dann auch unter "Variablen". -
-
würdest du nochmal das fertige Skript zeigen bitte. Lg
-
So funktioniert es bestimmt.
Ist aber auch nicht zufriedenstellend, da hier alle Fenster und Türen mit einer bestimmten Zeit abgefragt werden. Das hat zur Folge, dass wenn z.B. ein Fenster offen steht, welches als letztes abgefragt wird, die Zeit von der Meldung: Achtung es regnet und folgende Fenster und Türen sind noch offen" bis zur Ausgabe des offenen Fensters, ein ziemlich langer Zeitraum vergeht.Ich habe mir nun folgendes überlegt.
Da ich bereits für jedes Fenster und für jede Tür ein Skript habe, welche mich daran erinnern sollen, wenn diese zu lange geöffnet sind, könnte ich doch einfach jedes einzelne Skript erweitern.
Hier mal ein Screen von der ersten Version.
Die Timeouts sind nur zu Testzwecken etwas kurz gewählt!
Das Ganze funktioniert schon ganz gut.
Die Frage ist, ob sich das Intervall von selber beendet, wenn die Türe geschlossen wird. Oder läuft dieses im Hintergrund weiter? Wenn ja, wie kann ich dieses dann beenden?
-
@StM47 sagte in Frage zu Blockly, Warnung bei Regen über Alexa bei geöffnete Fenster und Türen:
So funktioniert es bestimmt.
Nee, glaub ich nicht.
Intervall steht außerhalb vom Trigger. Wird bei Programmstart ausgeführt. Egel ob Fenster offen oder zu. Du bekommst alle 60 Sek. eine Meldung.
Du triggerst nur auf "wahr". Da würdest Du das erste "Falls" nicht brauchen. (Zudem würde ich die Abrage umgekehrt aufbauen (falls wert von tür = wahr..." läßt sich leichter lesen).
Du bekommst nicht mit, wenn die Tür wieder geschlossen wird.
Keine "stop timeout".
Tür auf, Tür zu, Tür auf würde jedesmal den Timer starten.Hast Du Dir, hier im Forum, schon mal 1 bis 2 Blockly Beispiele angeschaut? Deine Fehler wurden hier schon mehrfach behandelt.
Grüße
-
@rantanplan sagte in Frage zu Blockly, Warnung bei Regen über Alexa bei geöffnete Fenster und Türen:
Keine "stop timeout".
Das klingt logisch!
Habe das Skript wie folgt abgeändert:
-
Cool, kannst du mir das Blockly zur Verfügung stellen?
-
wenn es dann fehlerfrei ist, gerne!
-
@StM47 sagte in Frage zu Blockly, Warnung bei Regen über Alexa bei geöffnete Fenster und Türen:
wenn es dann fehlerfrei ist, gerne!
Mach ruhig mal einen Export hier rein, da kann man besser dran basteln. Hab gerade etwas Zeit. Aber erklären trotzdem würde zu lange dauern.
-
gerne
<xml xmlns="http://www.w3.org/1999/xhtml"> <variables> <variable type="undefined" id="Intervall">Intervall</variable> <variable type="undefined" id="timeout">timeout</variable> </variables> <block type="on_ext" id="CQC;{=jg+V-{lh0eV`E[" x="-1287" y="-1637"> <mutation items="1"></mutation> <field name="CONDITION">true</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="Ii?[Ge~U7Qx+TSkkHcB:"> <field name="oid">lupusec.0.devices.RF:03039a10.status_ex</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="-Ev9T`,Vx@u]6M$fKi(-"> <value name="IF0"> <block type="logic_operation" id="$9(gAV+?aaRB3}QC/Nu;" inline="false"> <field name="OP">AND</field> <value name="A"> <block type="time_compare_ex" id="D|xtf%.Chhx1,ccZt-YF"> <mutation end_time="false" actual_time="true"></mutation> <field name="USE_ACTUAL_TIME">TRUE</field> <field name="OPTION">>=</field> <value name="START_TIME"> <shadow type="text" id="?K*{/r.QRytF2$0s,m9Y"> <field name="TEXT">09:00</field> </shadow> </value> </block> </value> <value name="B"> <block type="time_compare_ex" id="+d+V,+Lr;t+#FLKX24qf"> <mutation end_time="false" actual_time="true"></mutation> <field name="USE_ACTUAL_TIME">TRUE</field> <field name="OPTION"><=</field> <value name="START_TIME"> <shadow type="text" id="-qYk.|K6[YU[TaUcA1.K"> <field name="TEXT">21;00</field> </shadow> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="debug" id="@]yJPY-nJ7/,7H)KdWT:"> <field name="Severity">warn</field> <value name="TEXT"> <shadow type="text" id="V|ek53FGIFTyiQo-,PZ4"> <field name="TEXT">Terrassentüre auf!</field> </shadow> </value> <next> <block type="timeouts_settimeout" id="]}WWtlQ]|4eT-%sK_]sh"> <field name="NAME">timeout</field> <field name="DELAY">10</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="controls_if" id="A]Mj7aj%yfk51D@ujhZh"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_operation" id="!5f8={J7ZXc2tvwcPK=*"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="Ep6.0Bhd),(KYdNYG,,9"> <field name="OP">LTE</field> <value name="A"> <block type="get_value" id="N(If_xhK88`D{1@57YSP"> <field name="ATTR">val</field> <field name="OID">viessmannapi.0.heating.sensors.temperature.outside.value</field> </block> </value> <value name="B"> <block type="text" id="@~/6uJtdmhvwz_#E4o(."> <field name="TEXT">16</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="nmN)kUs##*)+4~8P}CXC"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="G68Le1WbHbv-*p.WAtjq"> <field name="ATTR">val</field> <field name="OID">lupusec.0.devices.RF:03039a10.status_ex</field> </block> </value> <value name="B"> <block type="logic_boolean" id="G:%|DKA]_7%HF.:AmMbF"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="D_P9nzAd!abD6}+@P4tv"> <mutation delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090U50984811V0M.Commands.speak-volume</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="K_Z]Cve^2-(:@v;-SFn_"> <field name="NUM">60</field> </block> </value> <next> <block type="control" id="=;Yj|xq4Q/P+1LATu[]D"> <mutation delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090U50984811V0M.Commands.speak</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text_join" id="OT.(b,`lmC#]/F5LP2E/"> <mutation items="7"></mutation> <value name="ADD0"> <block type="text" id="=4ry)=r64B=7#69CpP,m"> <field name="TEXT">Hallo Bewohner, Draußen sind es</field> </block> </value> <value name="ADD1"> <block type="math_round" id="r,x~a%n#:30k|%e,Pi7~"> <field name="OP">ROUND</field> <value name="NUM"> <shadow type="math_number" id="*iWC~ZLZ/?tc6L^oVCkY"> <field name="NUM">3.1</field> </shadow> <block type="get_value" id="K*w(W:7b?*LW^wJ~^MbQ"> <field name="ATTR">val</field> <field name="OID">viessmannapi.0.heating.sensors.temperature.outside.value</field> </block> </value> </block> </value> <value name="ADD2"> <block type="text" id="|Mfti7/}/h9*Y!%N=Dp+"> <field name="TEXT">Grad, und die Terrassentüre ist noch offen, Aktuell sind im Wohnzimmer</field> </block> </value> <value name="ADD3"> <block type="math_round" id="2rhM59Jg_bWaC.r_|Z7Q"> <field name="OP">ROUND</field> <value name="NUM"> <shadow type="math_number" id="lsdbW.f([y^fl/jA,m_p"> <field name="NUM">3.1</field> </shadow> <block type="get_value" id="^fQ!oB*7sqx7C{**HGB5"> <field name="ATTR">val</field> <field name="OID">zigbee.0.00158d0002b537d2.temperature</field> </block> </value> </block> </value> <value name="ADD4"> <block type="text" id="e~59-.]ySQWa+u2,U-9J"> <field name="TEXT">Grad, und die Luftfeuchtigkeit liegt bei </field> </block> </value> <value name="ADD5"> <block type="math_round" id="Qd7I5RtULhKOz%Ll5nxF"> <field name="OP">ROUND</field> <value name="NUM"> <shadow type="math_number" id=":xbFKZ44tPFyXa.Dy*[#"> <field name="NUM">3.1</field> </shadow> <block type="get_value" id="9d+x@6]Y~.vZM=ErH6ri"> <field name="ATTR">val</field> <field name="OID">zigbee.0.00158d0002b537d2.humidity</field> </block> </value> </block> </value> <value name="ADD6"> <block type="text" id="st3i0f9CeDYIXh,!AT7G"> <field name="TEXT">Prozent</field> </block> </value> </block> </value> <next> <block type="control" id="+NY=E1}/qdP%6+mx``Xk"> <mutation delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090U50984811V0M.Commands.speak-volume</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="4tOi@}jwB{1lY!^APj(8"> <field name="NUM">50</field> </block> </value> <next> <block type="debug" id="t!6~qp$[^^gxyp^Cq#gQ"> <field name="Severity">warn</field> <value name="TEXT"> <shadow type="text" id="EMd|_xS`krtmvKmNZVWM"> <field name="TEXT">Terrassentüre seit 10 Minuten auf!</field> </shadow> </value> </block> </next> </block> </next> </block> </next> </block> </statement> <value name="IF1"> <block type="logic_compare" id="K=v+WCq$)Da[-FI#s!Al"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="Vnb.akopr{lY62zRj7o`"> <field name="ATTR">val</field> <field name="OID">lupusec.0.devices.RF:03039a10.status_ex</field> </block> </value> <value name="B"> <block type="logic_boolean" id="`h5}),db22ZX}V8yh7v*"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <statement name="DO1"> <block type="timeouts_cleartimeout" id="+}dRb6?~W,]YcrQ18k7d"> <field name="NAME">timeout</field> </block> </statement> </block> </statement> </block> </next> </block> </statement> <next> <block type="timeouts_setinterval" id="}^+FCJjs],(IlA;i^)7x"> <field name="NAME">Intervall</field> <field name="INTERVAL">15</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="controls_if" id="o5B}^!IbLC0w|x*C2i;W"> <value name="IF0"> <block type="logic_operation" id="X)g9t`YR`yyi%`YZvb?i"> <field name="OP">AND</field> <value name="A"> <block type="logic_compare" id="P0c6=LnNSCpP8FiIr^HP"> <field name="OP">EQ</field> <value name="A"> <block type="logic_boolean" id="wK-=eaEsa6G[]Q3!/vx+"> <field name="BOOL">TRUE</field> </block> </value> <value name="B"> <block type="get_value" id="*dK$*jO$Us`*uXsujX;*"> <field name="ATTR">val</field> <field name="OID">lupusec.0.devices.RF:03039a10.status_ex</field> </block> </value> </block> </value> <value name="B"> <block type="logic_compare" id="le3X~dv^;9dCaS},j]?n"> <field name="OP">EQ</field> <value name="A"> <block type="logic_boolean" id="YsC:~_j6zK1Eg52]TciC"> <field name="BOOL">TRUE</field> </block> </value> <value name="B"> <block type="get_value" id="Ct4PLzts6}3N9My$^PvV"> <field name="ATTR">val</field> <field name="OID">zuhause.0.wetter.regen</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="7x!upuL$UJ=#~a[Pe/=z"> <mutation delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090U50984811V0M.Commands.speak-volume</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="q(LXi%QX+og`[6F!YPM3"> <field name="NUM">60</field> </block> </value> <next> <block type="control" id="KU32~=CCIp.GQa7Tpla0"> <mutation delay_input="true"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090U50984811V0M.Commands.speak</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">5</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="text_join" id="mz++/`8dP7KRg.j7{C[/"> <mutation items="1"></mutation> <value name="ADD0"> <block type="text" id="7dZG$]BM6ir`)ghdq2m+"> <field name="TEXT">Achtung, es regnet, und im Erdgeschoß sind noch Fenster oder Türen geöffnet</field> </block> </value> </block> </value> <next> <block type="control" id="Q5VW6?FmWtJSt(lFqnUv"> <mutation delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090U50984811V0M.Commands.speak-volume</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="1QzIvf{,/bQmD}dOLv-1"> <field name="NUM">50</field> </block> </value> <next> <block type="debug" id="pP3glP([pR=)9r}eul}G"> <field name="Severity">warn</field> <value name="TEXT"> <shadow type="text" id="_):)uG2%haxBj@uC0DA-"> <field name="TEXT">Regenwarnung Erdgeschoß</field> </shadow> </value> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </statement> </block> </next> </block> </statement> </block> </xml>
-
@StM47 auf die Schnelle mal umgestellt.
Nicht getestet. Habe nicht son Kram wie Alexa
Schau mal ob ich etwas übersehen habe.
Export:
Grüße
-
Habe gerade noch etwas gesehen.
Bei der Prüfung zur zyklischen Meldung, kannst du noch die Abfrage ob die Tür offen ist weglassen.
In diesem "Falls-Zweig" ist die Tür definitiy offen. -
Sorry, dass ich mich nicht gleich gemeldet habe, bin zur Zeit mit einem anderem Problem beschäftigt.
Habe heute die Cloud auf IOT umgestellt. Seit dem läuft kein Skript mehr. Konnte deshalb noch nicht testen.Ich melde mich wieder, wenn alles läuft.
Computer sind dazu da, Probleme zu lösen, welche man ohne Computer gar nicht hätte!
-
Mit deinem Skript bringt Alexa leider keine Warnung.