Moin,
In IPS eine Szene einrichten wo Du dann den Text ausgibst. In Alexa eine Routine einrichten mit dem Satz „wie lange braucht die Wachmaschine noch“ und damit dann die Szene auslösen. Ich würde eher versuchen „Alexa Waschmaschine“ oder so denn ich glaube nicht das sie Wert auf Konversation legt.
Hi,
in der Kern-Instanz von IPS gibt es Amazon Alexa, für den IPS Skill, und da eine Szene, z.B. Test, erstellen wobei damit ein Script gestartet werden kann. Von der Alexa App kannst Du jetzt die Szene auswählen und dann wird das Script ausgeführt.
<?php
$verbrauch = GetValue(47283/* Variable mit Verbrauch der Waschmaschine*/);
$text = "Meine Wachmaschine hat " . strval($verbrauch) . " kWh verbraucht";
ECHOREMOTE_TextToSpeech(18343/* Instanz-ID eines Dots/Echos*/, $text);
?>
Lege in Amazon Alexa Kern-Instanz eine Szene Waschmaschine an und zeige auf dieses Schript.
Erstelle eine Alexa-Routine in der Alexa-App mit Spracheerkennung von „Was hat meine Waschmaschine verbraucht“ und starte dann die Szene Waschmaschine. Statt Verbrauchsvariable kannst Du für dieses Beispiel jeden Wert nehmen den Du irgendwo hast. Ist ja nur ein Beispiel.
Danke schon mal, bekommt man es auch irgendwie hin, dass nur der „gefragte“ Echo antwortet?
Überall ist ein bissle blöd, und nur bei einem bestimmten is auch fad.
Im Script die letzte Aktivität abfragen dort ist auch der von dir vergebene Namen des Dots/Echos drin.
$verbrauch = GetValue(47283/* Variable mit Verbrauch der Waschmaschine*/);
$text = "Meine Wachmaschine hat " . strval($verbrauch) . " kWh verbraucht";
$activity = ECHOIO_GetLastActivity(17337);
if ($activity == NULL) return;
$echo = $activity["deviceName"];
$utterance = $activity["utterance"];
if (strpos($echo, 'Teil vom Namen Echo1', 0) !== false){
ECHOREMOTE_TextToSpeech(Instanz-ID von Echo1, $text);
}
if (strpos($echo, 'Teil vom Namen Echo2', 0) !== false){
ECHOREMOTE_TextToSpeech(Instanz-ID von Echo2, $text);
}
if (strpos($echo, 'Teil vom Namen Echo3', 0) !== false){
ECHOREMOTE_TextToSpeech(Instanz-ID von Echo3, $text);
}
Ich habe es so gelöst weil sich bei mir Teile des Namens manchmal ändern. Eleganter wäre
switch ($name){
case "Kompletter Name Echo1":
ECHOREMOTE_TextToSpeech(Instanz-ID von Echo1, $text);
break;
case "Kompletter Name Echo2":
ECHOREMOTE_TextToSpeech(Instanz-ID von Echo2, $text);
break;
case "Kompletter Name Echo3":
ECHOREMOTE_TextToSpeech(Instanz-ID von Echo3, $text);
break;
}
Eventuell muss man vor ECHOIO_GetLastActivity eine kleine Pause einbauen weil es schon ein wenig dauern kann bis die Informationen aktualisiert werden.
Vielleicht sollte ich im GetLastActivity Array auch die Instanz ID des Gerätes (sofern in IPS vorhanden) übergeben - das sollte das Handling doch stark vereinfachen.
Super, vielen Dank @hirschbrat ! Erspart ein zusätzliches Skript
@sstaudt2 was du suchst (es soll stets der angesprochene Echo antworten) löst du dann so wie in diesem Beispiel:
$Echo_TTS = ECHOIO_GetLastActivity (46218) ['instanceID']; // Bei ECHOIO_GetLastActivity die ID der AmazonEchoIO Instanz (unter Splitter Instanzen) eintragen!
$TempCarport = round (GetValue (53114),1);
if ($TempCarport < "5.0")
{
ECHOREMOTE_TextToSpeech ($Echo_TTS,"'<voice name='Vicki'>Es ist kalt draußen, gerade mal $TempCarport Grad! Setz ne Mütze auf!</voice>'");
}
....
Funktion: Wenn ein Sprachbefehl (dieser muss als Auslöser in einer Alexa-Routine definiert werden) von einem Echo-Gerät empfangen wurde, können folgende Aktionen ausgeführt werden:
Text-to-speech Antwort auf dem angesprochenen Echo-Gerät ausgeben
Bei localhost soll ich die Alexa-App installieren und den QR scannen etc.
Das geht garnicht bei mir!
Bei „127.0.0.1“ kann ich mich einloggen bekomme nur dann die Fehlermeldung
„SORRY we couldn’t find that page“ und einen Hund angezeigt!?
Auf beiden Betriebssystemen. und im cli wird nichts angezeigt!
Was mache ich falsch?
Habe auf jeden System den aktuellen cli (Stand 26.11.2023) von gitHub heruntergeladen.
Hatte ich auch öfter bis es dann Plötz am Browser ging,…
Also nicht qr scannen unter mac, da wollte er auch immer die App öffnen,…
Über Safari ging es dann sofort und im Terminal hat er mir den Token angezeigt