Ich habe mir das mal angesehen und ich bin ehrl ich sehr angetan. War eher skteptisch, ob ich einen Vorteil daraus ziehen kann, da ich für mein System schon eine Lösung dafür hab. Halt mit etwas mehr Programmieraufwand, aber das macht es doch wesentlich einfacher. Auch für Kollegen die mit PHP auf Kriegsfuß stehen.
Zwei kleine Dinge sind mir aufgefallen.
Wenn im PHP Code bei T2Speech erweitert ein Fehler ist, sieht man das nirgends. Da wäre wenn möglich eine Debugausgabe sinnvoll. Oder ein „Testen“ Button, der den Text auf einen ausgewählten Echo ausgiebt. Nur um zu sehen, ob der Code passt.
Wäre es möglich, das ganze auf deaktivierbare Szenen zu erweitern? Bei diesen kann man eine Systemvariable generieren.
In diesem Fall ist nur eine boolsche Variable sinnvoll.
Wahrscheinlich müsste man den Bot insofern erweitern (oder einen zweiten definieren, der Bot deaktivierbar heißt, analog zu den Szenen) und im Grunde zwei Bereich schaffen. Ein Bereich bei aktiviren und einer bei deaktivieren. Analog der Amazon Alexa Konfiguration.
Bin gern zum Testen bereich
Ja, im Grunde kann man das was das EchoBot Modul macht auch selbst mit Skripten und Ereignissen lösen - es soll (wie bei den meisten Modulen) eine Vereinfachung sein.
Fehler ausgeben müsste ich hinbekommen (im Message Log). Ein Test-Lauf ist etwas komplizierter, da im Test ja auf $_IPS Variablen zugegriffen werden könnte, die nur bereitstehen, wenn es tatsächlich eine Aktivität gab - mach ich mir nochmal Gedanken.
Das habe ich noch nicht verstanden. Möchtest du mit der deaktivierbaren Szene (im Alexa-Modul) die Trigger Szene (zum Abrufen der letzten Aktivität) ersetzten? Soll das Ziel sein, dass dir der übergebene Wert auch im vom EchoBot ausgeführtem Skript zur Verfügung steht? Könntest du mir mal einen Beispiel-Usecase geben, damit ich das Ziel besser verstehe?
Ja das ist richtig, da beim AktionsTyp „Skript ausführen“ keine TTS-Antwort ausgelöst wird, sondern nur das externe Skript gestartet wird. In diesem Fall müsste man im Skript selbst den TTS Befehl ausführen. Der EchoBot ist in diesem Falle eigentlich nur ein Ereignis.
Soll eine TTS-Antwort ausgegeben werden, habe ich dafür bislang den Typ TTS-Antwort (erweitert) vorgesehen - da wird der Skript-Code in der Instanz-Eigenschaft definiert.
Was ich meinte ist eine Szene (im Alexa Modul von IPS heißen sie „Deaktivierbare Szenen“) wie z.b. Licht ein/aus. Die Szene heißt ja nur „Licht“. Das „ein/aus“ wird von IPS bzw. vom Modul interpretiert und es werden unterschiedliche Skripte/Befehle bei aktivieren und deaktivieren ausgeführt. So hätte ich es mir auch beim Bot vorgestellt. Wenn das geht. Bin mir halt nicht sicher, ob du das von Amazon zurück bekommst.
Ich habe hier diverse deaktivierbare Szenen
Den Wert für „VALUE“ (siehe in meinem Post oben) bekommt man mit $_IPS[„VALUE“] in das Skript. Wobei das „VALUE“ nur ein beliegiber Name ist.
Ich hoffe es ist jetzt klarer.
Guten Morgen
Ich denke, so wie ich das mir gedacht habe, funktioniert das nicht. Es müsste im Amazon Echo Modul eine deaktivierbare Szene „TriggerLastActivity“ angelegt werden. Natürlich mit einem anderen Namen - TriggerLastActivitydeactivate (Oder so. Wobei, wie das heißt müsste eigentlich egal sein. Kann auch HubsiMaier heißen denke ich.).
Bei „Akttion beim Aktiveren“ und „Aktion bei Deaktivieren“ wird selbe Ziel angegebe. Bei den Parametern wird der boolsche Parameter mit einem von dir definierten Namen, den dein EchoBot auswerten kann, angegeben - nennen wir die Systemvariable $_IPS[„VALUE“], der Einfachheit halber.
In den EchoBot Einstellungen gibt es wieder zwei Zweige. Einer für aktivieren, einer für deaktivieren, die genau so funktionieren wie beim einfachen EchoBot. Je nachdem, welchen Wert (True/False) die Variable $_IPS[„VALUE“] hat, wird entweder der eine, oder der andere Zweig genommen.
Edit:
Das ganze könnte noch einfacher gehen. Wenn die Instanzenfunktion ECHOIO_GetLastActivity einen Parameter bekommt (für Deaktivieren(0), Aktivieren(1), Szenenausführung(2)), dann sollte das funktionieren.
Ich habe hier als Beispiel mein DeconzGateway mit einer Funktion genommen, damit man das sieht.
Wir können auch abseits vom Thread (chat) darüber sprechen. Es liest sich kompliziert als es meiner Meinung nach ist.
Und meine Idee funktioniert aber nur mit dem Installierten Amazon Echo Modul von IPS.
Es gibt eine neue Version auf dem BETA-Kanal (Änderungen zur letzten beta fett):
Version 2.5 BETA (2024-04-09)
New: EchoBot
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 in Abhängkeit vom angesprochenen Echo-Gerät ausgeben
Unterschiedliche Aktionen in Abhängigkeit vom angesprochenen Echo-Gerät ausführen
Skript in IP-Symcon ausführen
Verbessertes Fehlerhandling beim Aktionstyp Text-to-Speech (erweitert)
New: Aktion (zur Verwendung in Szenen des Amazon Alexa Moduls) zum ausführen von unterschiedlichen Aktionen in Abhängigkeit vom zuletzt angesprochenen Echo-Gerätes
New: Variablen zum De-/Aktivieren der Wecker
New: neue DeviceTypes hinzugefügt
New: GetLastActivity liefert auch die InstanzID des Gerätes im Array zurück
Notice: Too many requests! in C:\ProgramData\Symcon\modules\.store\fonzo.ipsymconechoremote\Echo IO\module.php on line 697
array(0) {
}
Ansonsten funktioniert aber alles. Zum Beispiel die Durchsagen, die auch übers Modul laufen. Nur eben die GetLastActivity liefert obiges. Ab-/Anmelden bei Amazon hab ich schon gemacht.
Die Fehlermeldung kommt schon seit dem Morgen, da wurden noch keine Requests gemacht.
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 in Abhängkeit vom angesprochenen Echo-Gerät ausgeben
Unterschiedliche Aktionen in Abhängigkeit vom angesprochenen Echo-Gerät ausführen
Skript in IP-Symcon ausführen
Neue Aktion zum Ausführen von unterschiedlichen Aktionen in Abhängigkeit vom zuletzt angesprochenen Echo-Gerätes (zur Verwendung in Szenen des Symcon Alexa Moduls)
Änderungen bei letzter Aktivität (GetLastActivity):
Möglichkeit zur periodischen Abfrage entfernt (alternativ kann der EchoBot oder die neue Aktion in Verbindung mit dem Symcon Alexa Modul verwendet werden)
Limit um zu verhindern, dass GetLastActivity zu häufig aufgerufen wird
GetLastActivity liefert die InstanzID des Gerätes im Array zurück
Guten Morgen,
gibt es eine Möglichkeit das „Aktivierungswort“ zu ändern per IPS?
Hintergrund: Mein Kind hört viele Hörbücher über Alexa, aber es gibt auch Momente, in denen die Alexa nicht reagieren soll, da z.B. erst die Hausaufgaben erledigt werden sollen.