NEWS
Wiederholen von Befehlen. Wie geht das
-
OK. Was muss ich denn dann ändern?
Das sind ja alles einzelne Alexa Sprachbefehle. -
@Martin-0 sagte:
alles einzelne Alexa Sprachbefehle.
..., die nach 10 s wiederholt werden. Oder sind das andere Sprachbefehle ?
Prinzip, wenn verzögerte Sprachbefehle gleich sind: -
Nein es sind die gleichen.
Aber kann ich nicht alle Ansagen untereinander packen so wie ich es gemacht habe?
Es klappt nämlich mit der zweiten Ansage nur manchmal. -
@Martin-0 sagte:
kann ich nicht alle Ansagen untereinander packen so wie ich es gemacht habe?
Ja, das ist aber aufwändiger und benötigt mehr Resourcen (RAM). Funktionell besteht kein Unterschied zur Verwendung einer Funktion.
@Martin-0 sagte in Wiederholen von Befehlen. Wie geht das:
Es klappt nämlich mit der zweiten Ansage nur manchmal.
Dann ist vermutlich die Verzögerung zu kurz gewählt.
-
Ist es so besser?
-
@Martin-0 sagte:
Ist es so besser?
Vermutlich nicht, denn die Verzögerungszeit für die Wiederholung ist gleich geblieben.
-
Das sind alles unterschiedliche Echo Gerät.
Oder was verstehe ich da nicht?
Ist die erste oder die Zweite Variante richtig oder passiert eigentlich das gleiche. -
@Martin-0 sagte:
oder passiert eigentlich das gleiche.
Ja, nur mit dem Unterschied, dass in Variante 2 mehrere Timer gleichzeitig laufen.
-
OK. Kann ich denn für die Zufunft die erste Variante nehmen und die Timeouts um jeweil 1 sekunde verändern?
Der erste Durchlauf passiert doch auch gleichzeitig. -
@Martin-0 sagte:
Der erste Durchlauf passiert doch auch gleichzeitig.
Alles vor dem timeout erfolgt quasi gleichzeitig, alles im timeout erfolgt mit 10 s Verzögerung.
-
Das ist schon klar, nur warum funktioniert es manchmal nicht?
Soll ich jetzt für jeden Befehl einen eigenen Timeout machen oder einfach alles nochmal nach dem 1. Durchlauf machen mit 10 Sekunden Verzögerung?
-
@Martin-0 sagte:
nur warum funktioniert es manchmal nicht?
?? Da kann ich nur raten: Dauert die Ansage evtl. manchmal länger als 10 s ? Versuche es mal mit einer Verzögerung von 15 s.
-
Das probiere ich gleich mal.
Ich frage mich nur wie so etwas grundsätzlich gemacht wird?
Alles in ein Timeout oder für jeden Befehl extra? -
-
Sorry, verstehe ich nicht. Gezeigt ist ja nur der Timeout für einen Befehl. Was soll ich mit dem zweiten machen?
Ich habe zwei Screenshots gepostet, welcher ist jetzt der richtige Weg?
-
@Martin-0 sagte:
Gezeigt ist ja nur der Timeout für einen Befehl
Das ist nicht ein Befehl, sondern der Aufruf einer Funktion, die wiederum alles enthält, was in der ersten Version vor dem Timeout und dann im Timeout passiert.
Vorgehen: Du erstellst eine Funktion, verschiebst alles, was innerhalb des Timeouts ist, in die Funktion und in das leere Timeout kommt dann der Funktionsaufruf. Die Alexa-Befehle über dem Timeout werden dann durch einen weiteren Funktionsaufruf ersetzt.
-
-
Oder
so:
-
@Martin-0 sagte:
Oder
so:Beide Varianten unterscheiden sich im Ergebnis nicht, allerdings würde ich die zweite Variante mit nur einem Timeout bevorzugen.
Poste mal den XML-Export des Blocklys (mit nur einem Timeout) in Code tags. Dann kann ich es leicht modifizieren und zurück schicken.
-
var timeout;
schedule('{"time":{"exactTime":true,"start":"23:00"},"period":{"days":1}}', function () {
if (getState("hm-rpc.0.JEQ0068443.1.STATE").val == true) {
// Echo Wohnzimmer
// mit Bluetooth
if (getState("alexa2.0.Echo-Devices.G090U509847625MD.Bluetooth.3db393472f177440184a264d10ab21eaa3a40b727da721dacafdc36d7c924828.connected").val == true) {
setState("alexa2.0.Echo-Devices.G090U509847625MD.Commands.speak-volume"/Volume to use for speak commands/, '100');
setState("alexa2.0.Echo-Devices.G090U509847625MD.Commands.speak"/speak/, 'Sicherheitswarnung. Das Garagentor ist noch geöffnet');
} else {
setState("alexa2.0.Echo-Devices.G090U509847625MD.Commands.speak-volume"/Volume to use for speak commands/, '80');
setState("alexa2.0.Echo-Devices.G090U509847625MD.Commands.speak"/speak/, 'Sicherheitswarnung. Das Garagentor ist noch geöffnet');
}
// Echo Badezimmer
setState("alexa2.0.Echo-Devices.G090U50984653CEF.Commands.speak"/speak/, 'Sicherheitswarnung. Das Garagentor ist noch geöffnet');
// Echo Wintergarten rechts
setState("alexa2.0.Echo-Devices.G090U50991860QSL.Commands.speak-volume"/Volume to use for speak commands/, '50');
setState("alexa2.0.Echo-Devices.G090U50991860QSL.Commands.speak"/speak/, 'Sicherheitswarnung. Das Garagentor ist noch geöffnet');
// Echo Werkstatt
setState("alexa2.0.Echo-Devices.G090XG07930531PU.Commands.speak"/speak/, 'Sicherheitswarnung. Das Garagentor ist noch geöffnet');
// Echo Schlafzimmer
setState("alexa2.0.Echo-Devices.G090U50784360US6.Commands.speak-volume"/Volume to use for speak commands/, '40');
setState("alexa2.0.Echo-Devices.G090U50784360US6.Commands.speak"/speak/, 'Sicherheitswarnung. Das Garagentor ist noch geöffnet');
timeout = setTimeout(function () {
// Echo Wohnzimmer
if (getState("alexa2.0.Echo-Devices.G090U509847625MD.Bluetooth.3db393472f177440184a264d10ab21eaa3a40b727da721dacafdc36d7c924828.connected").val == true) {
setState("alexa2.0.Echo-Devices.G090U509847625MD.Commands.speak-volume"/Volume to use for speak commands/, '100');
setState("alexa2.0.Echo-Devices.G090U509847625MD.Commands.speak"/speak/, 'Sicherheitswarnung. Das Garagentor ist noch geöffnet');
} else {
setState("alexa2.0.Echo-Devices.G090U509847625MD.Commands.speak-volume"/Volume to use for speak commands/, '80');
setState("alexa2.0.Echo-Devices.G090U509847625MD.Commands.speak"/speak/, 'Sicherheitswarnung. Das Garagentor ist noch geöffnet');
}
// Echo Badezimmer
setState("alexa2.0.Echo-Devices.G090U50984653CEF.Commands.speak"/speak/, 'Sicherheitswarnung. Das Garagentor ist noch geöffnet');
// Echo Wintergarten rechts
setState("alexa2.0.Echo-Devices.G090U50991860QSL.Commands.speak-volume"/Volume to use for speak commands/, '50');
setState("alexa2.0.Echo-Devices.G090U50991860QSL.Commands.speak"/speak/, 'Sicherheitswarnung. Das Garagentor ist noch geöffnet');
// Echo Werkstatt
setState("alexa2.0.Echo-Devices.G090XG07930531PU.Commands.speak"/speak/, 'Sicherheitswarnung. Das Garagentor ist noch geöffnet');
// Echo Schlafzimmer
setState("alexa2.0.Echo-Devices.G090U50784360US6.Commands.speak-volume"/Volume to use for speak commands/, '40');
setState("alexa2.0.Echo-Devices.G090U50784360US6.Commands.speak"/speak/, 'Sicherheitswarnung. Das Garagentor ist noch geöffnet');
}, 10000);
}
});