NEWS
Objekt Trigger und timeout
-
Re: Falls Objekt Trigger funktioniert nicht
Hallo zusammen,
ich habe folgendes Problem und hoffe jemand von euch kann mir dabei helfen:
Ich möchte gerne über Alexasprachausgabe benachrichtigt werden, wenn der Wäschetrockner fertig ist.
Als Trigger verwende ich den Verbrauchswert (in Watt) der Funksteckdose. Der Wert wird alle 20 Sekunden übermittelt.Der Trigger löst (korrekter Weise) daher alle 20 Sekunden aus. Da die Sprachansage alle 20 Sekunden echt nervig ist, möchte ich gerne nur alle 3min von Alexa erinnert werden.
D.h. es soll nicht bei jeder Triggerauslösung eine Sprachausgabe erfolgen...der Haken "löschen wenn läuft" funktioniert leider nicht und bei einem Timeout verzögert sich die Ausgabe im 20 - Sekundentakt nur um die Timeoutzeit.
Könnte mir bitte jemand einen Tipp geben, wie man das in Blockly umsetzen kann?
Vielen Dank im Voraus!
Gruß
Matthias -
@matthias-i sagte: Könnte mir bitte jemand einen Tipp geben, wie man das in Blockly umsetzen kann?
-
Hallo Paul,
vielen Dank für den Link!
Auch wenn es etwas gedauert bis ich mich um das Problem kümmern konnte, habe ich dennoch eine Rückfrage zu deinem Blockly, das ich wie folgt überarbeitet bzw. angepasst habe:
- Du verwendest in dem Script die beiden lokalen Variablen "gestartet" und "timeout". Diese sind nicht deklariert und haben demnach zunächst keinerlei "Wert" sondern müssten "undefined" sein, richtig?. Ich verstehe daher die Abfrage "falls nicht gestartet" nicht. Was wird hier geprüft?
- Was bewirkt die Variable "timeout"? Diese wird doch nie auf "false" gesetzt? Wozu die Abfrage mit dieser Variablen?
Würde mich freuen, wenn du mir hilfst das zu verstehen...
P.S.: Damit das Blockly nachvollziehbar wird, hier meine Intention:
Ich möchte, beim Start des Trockners gerne eine Nachricht erhalten (falls die Kinder blödsinn machen), wenn ich nicht zu Hause bin. Wenn er fertig ist, möchte ich gerne bei Anwesenheit über den Smartspeaker und bei Abwesenheit über Pushover informiert werden.Gruß
Matthias -
@matthias-i sagte: das ich wie folgt überarbeitet bzw. angepasst habe:
Das entspricht nicht dem gezeigten Prinzip!
@matthias-i sagte:
Variablen "gestartet" und "timeout". Diese sind nicht deklariert und haben demnach zunächst keinerlei "Wert" sondern müssten "undefined" sein, richtig?
In Blockly sind selbst erstellte und Timer-Variablen global deklariert. Bei Skriptstart enthalten sie undefined.
@matthias-i sagte in Objekt Trigger und timeout:
Ich verstehe daher die Abfrage "falls nicht gestartet" nicht. Was wird hier geprüft?
Die Bedingung ist bei undefined und false erfüllt.
@matthias-i sagte in Objekt Trigger und timeout:
Was bewirkt die Variable "timeout"? Diese wird doch nie auf "false" gesetzt?
Sie ist zu Anfang undefined und wird bei "stop timeout" auf null gesetzt.
@matthias-i sagte in Objekt Trigger und timeout:
Wozu die Abfrage mit dieser Variablen?
Damit die Nachricht nur einmal versendet wird und nicht jedes Mal, wenn sich der Wert des Trigger-Datenpunktes ändert.
-
Hallo Paul,
dein Support ist echt SPITZE!
Bitte beantworte mir noch diese beiden Verständnisfragen:
Wenn die Leistung im angegebenen Bereich zwischen 3,5 und 5 Watt liegt wird die Verzögerte Ausführung "timeout" gestoppt und somit die Variable "timeout" direkt auf "null" (nicht 0) gesetzt. Demnach entspricht "timeout" sowohl der Benennung der verzögerten Ausführung als auch der (globalen) Variablen, richtig?
Die Bedingung "sonst falls" ist demnach auch bei der Umkehr von "null" erfüllt. Entspricht also "null" = false und demnach "nicht null" = true?!
Ändert sich der Wert der Variablen "timeout" wenn die verzögerte Ausführung ausgeführt wird?Danke für deine Hilfe!
Ich werde morgen testen -
@matthias-i sagte in Objekt Trigger und timeout:
Ändert sich der Wert der Variablen "timeout" wenn die verzögerte Ausführung ausgeführt wird?
Ja, sie ist dann ein spezielles Timer-Objekt und bleibt es auch, bis sie auf null gesetzt wird.
@matthias-i sagte in Objekt Trigger und timeout:
"nicht null" = true?!
Ja, Javascript macht eine implizite Typwandlung.