NEWS
[gelöst] Alexa Sprachausgabe nicht starten, wenn .
-
Hallo,
gibt es über Blockly die Möglichkeit, eine Alexa Sprachausgabe nicht zu starten, wenn bereits eine Andere läuft?
Hintergrund ist folgender:
Ich lasse mir von Alexa sagen, wenn ein Fenster im Winter eine bestimmte Zeit offen ist.
Dafür habe ich für jedes Fenster im Haus ein Blockly Skript erstellt.Wenn ich mehrere Fenster zeitgleich öffne, kommen auch die Meldungen von Alexa relativ zeitgleich.
Hierbei wird dann die aktuelle Sprachausgabe mit der Nächsten gestoppt. Das ist ziemlich nervig.
Kann man ein Blockly so gestalten, dass das Script vorher prüft, ob bereits eine andere Sprachausgabe läuft?
- Wen ja, starte Sprachausgabe, wenn aktuelle beendet wurde
- Wenn nein, starte Sprachausgabe sofort.
Ist das möglich?
Wenn ja, wie? -
wenn Du verschiedene Scripte dafür nutzt, ist das nicht so einfach, da Du dann nicht den aktuellen Status abfragen kannst.
Aber Du könntest über den Alexa Adapter unter History den Wert "CreationTime" nutzen und abfragen, ob dort eine Ausgabe innerhalb von einer bestimmten Zeit schon abgesetzt wurde. Wenn ja, dann mit der Sprachausgabe warten oder, wie Du meist, was besser ist, keine Sprachausgabe.
oder du könntest eben die Scripte alle in eines packen und dann einfach den Hacken bei "steuern falls läuft" setzen. kannst ja mal probieren, ob das auch geht bei verschieden Scripten, habe ich noch nicht ausprobiert und ob das bei "speak" überhaupt geht. Probier einfach mal..VG
-
Die Skripte alle in Eines zu packen würde nur bedingt zum Erfolg führen, weil ich Ja noch duzende andere Skripte am Laufen habe, welche bei der Sprachausgabe dazwischen funken könnten.
Die Nutzung von CreationTime klingt hingegen sehr vielversprechend. Schaue ich mir heute Abend mal an.
Danke für den Tip!
-
So, habe mal etwas zusammengeschustert.
Ich habe das Blockly erst mal nur ganz pauschal erstellt.
Ich habe keine Ahnung, ob man die Komponenten so kombinieren kann und ob das Ganze funktioniert. Man kann das auch schlecht testen.
Was meint ihr?
Falls die aktuelle Zeit größer ist, als die CreationTime -1 , dann steuere irgend ein Objekt mit wahr.
(oder starte die Sprachausgabe mit Alexa)Wenn die aktuelle Zeit nicht größer ist, als die CreationTime -1, dann starte ein Timeaut mit 30 Sek und steuere dann irgend ein Objekt mit wahr. (oder starte die Sprachausgabe mit Alexa)
-
@StM47
ich denke, der Wert ist viel zu klein.mach mal
das wird in eine Zahl umgewandelt, müsstest ein Wert von > 1000 eingeben um mal als Ergebnis "false" zu bekommen.
-
Ich habe einen Datenpunkt erstellt und das Skript ein bisschen umgebaut und für den Test mit Intervall getriggert.
Ist die aktuelle Zeit größer als der aktuelle Wert von creationTime, wird der DP auf true gesetzt.
Ist die aktuelle Zeit kleiner als der aktuelle Wert von creationTime, wird der DP auf false gesetzt.Und es funktioniert. Hiermit kann ich jetzt weiter arbeiten.
Ich danke dir für deine Hilfe.
-
Und es geht noch einfacher.
Manchmal denkt man einfach viel zu kompliziert.Mit folgendem Skript setze meinen Datenpunkt "Abfrage Ansage aktiv" auf true, sobald eine Sprachausgabe über Alexa gestartet wurde. Dieser stellt sich nach 10 Sekunden automatisch wieder zurück auf false. Wenn längere Ansagen geplant sind, dann timeout dementsprechend anpassen.
Jetzt muss ich in meinen anderen Skripten einfach nur noch den DP "Abfrage Ansage aktiv" abfragen.
Wenn dieser auf false steht, kann Alexa direkt losquatschen. Wenn auf true. dann die Ansage ebenfalls mit einem timeout verzögern.Fertig!