@peoples said in Türgong, Türklingelton mit Alexa abspielen:
@jonny-007
Klar:
- Du gehst auf Routinen
- Oben rechts auf Plus
- Routinenname (Türklingel)
- Wenn Folgendes passiert
- Stimme
- Alexa, Türklingel -> Weiter
- Aktion hinzufügen
- Geräteeinstellungen - Lautstärke (ich mach das lauter für den Klingelton)
- Aktion hinzufügen
- Töne - Glocken und Summer - Türklingel 2
- Aktion hinzufügen
- Geräteeinstellungen - Lautstärke (ich mach das nach dem Klingelton wieder leiser)
- Gerät auswählen auf welchem das dann passieren soll
Dann kommt oben die Meldung dass es funktioniert hat und du 5 Minuten warten musst.
Anschließend findest du unter alexa2.0 / Echo-Devices / Dem Device deiner Wahl / Routines die entspechende Routine, und wenn du die hinten auf true setzt bspw. via Script passiert genau das was du in der App eingestellt hast
Funktioniert prima. Lieben Dank.
Ich habe den Trick noch in einem etwas anderen Kontext verwendet. Und zwar soll Alexa auf eine Frage mit einem Ton reagieren (wenn TRUE) und mit einem anderen Tone (wenn FALSE). Das soll so geschehen, dass die Alexa, von der aus das Kommando gegeben wurde, antwortet.
Hier mal der entsprechende Code dafür.
on({id: "alexa2.0.History.json", change: "ne"}, function (obj) {
// Hier liest Du die ganze History auf einmal ein,
// damit nicht zeitversetzt unterschiedliche Werte verwendet werden.
// Habe ich früher einzeln eingelesen, was erst funktioniert,
// aber wenn man dann mehrere Werte verwenden will kommt es immer zu Fehlern.
var AlexaJSON = getState('alexa2.0.History.json').val;
// Das JSON parsen
var AlexaJSONparsed = JSON.parse(AlexaJSON);
// Hier schaust Du, welche Alexa angesprochen wird
// um auf dieser die Antwort, bzw. den Gong auszugenben
var welcheAlexa = 'alexa2.0.Echo-Devices.' + AlexaJSONparsed.serialNumber + '.Commands.speak';
// Jetzt kommen die IDs der Routinen rein, die Du oben angelegt hast
var dingDong = '7228f456-3b74-4a1b-9bc7-9ee09bxxec4e'; // <- id der Routine rein, die ausgeführt werden soll (z.B. ein Klingeln)
var tieferGong = '5e58b92a-c9bd-4bf9-97b3-exxxfbda29ca'; // <- id der Routine rein, die ausgeführt werden soll (z.B. ein Gong)
// Jetzt baust Du den Wert für die Alexa zusammen, von der die Anfrage kam:
var welcheAlexaRoutineTrue = 'alexa2.0.Echo-Devices.' + AlexaJSONparsed.serialNumber + '.Routines.' + dingDong;
var welcheAlexaRoutineFalse = 'alexa2.0.Echo-Devices.' + AlexaJSONparsed.serialNumber + '.Routines.' + tieferGong;
// Jetzt kannst Du noch Deine Variable abfragen
var istDerFernseherAn = (getState('javascript.0.SchalterUndGeraete.Fernseher').val);
// Jetzt wird das Schlüsselwort/Satz abgefragt
if (AlexaJSONparsed.summary == "Fernseher") {
if (istDerFernseherAn == true) {
setState(welcheAlexa, "Der Fernseher ist an."); // für Sprachausgabe (kann man weglassen, wird sonst nach dem Gong ausgeführt)
setState(welcheAlexaRoutineTrue, true); // Hier wird der DingDong ausgeführt
}
if (istDerFernseherAn == false) {
setState(welcheAlexa, "Der Fernseher ist aus."); // für Sprachausgabe (kann man weglassen)
setState(welcheAlexaRoutineFalse, true); // Hier wird der Gong auf dem sendenden Gerät ausgeführt
}
}
});
Und noch etwas, das immer wieder als Frage (auch bei mir) auftaucht: Wie bekommt man es hin, dass nach einem Kommando welches man an seine Alexa richtet, kein nerviges "OK" kommt, sondern die Sprachausgabe, die man (wie hier) via Script gerne möchte.
Ein einfacher Trick ist, dass man in der Routine eine Sprachausgabe macht und diese an ein Gerät sendet, was nicht online ist, bzw. aus ist. Ich sende es somit einfach an die Alexa APP. Die befindet sich auf dem Handy und macht sich nur bemerkbar, wenn man die App offen hat.