Amazon Echo Remote Control

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.

    Diese kann man im Skript abfragen.
    image
    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 :slight_smile:

In einem Skript funktioniert das return $text nicht?

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.

Danke

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.

1 „Gefällt mir“

Ich kann leider nicht sagen, seit welcher Version der Fehler auftritt, aber jetzt tut er das (hab die letzte Beta)

Habe das Problem erstmal erstmal vorläufig gefixt

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)
    • Bitte Dokumentation zur Einrichtung beachten EchoBot Dokumentation
  • 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

2 „Gefällt mir“

Neue Version auf dem BETA-Kanal:

  • New: Test-Center zum Testen der definierten Aktionen/Skripte direkt aus dem Konfigurationsformular der EchoBot Instanz

Seit heute morgen erhalten ich beim Ausführen von

$Alexa=ECHOIO_GetLastActivity(26201);
var_dump($Alexa);

folgende Fehlermeldung

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.

Scheint wieder eine Änderung gegeben zu haben - hab aber aktuell keine Lösung.

Fix dazu im BETA Kanal. Ggf. muss man sich im EchoIO einmal Ab- und wieder Anmelden

1 „Gefällt mir“

Funktioniert wieder. Vielen Dank!

Hi Zusammen,
was ist hier denn passiert?

Das sind über 1.000 Nachrichten…

Ja die Meldungen bekomm ich auch

Hi,
ich nicht. Lasst ihr das Modul alle X Sekunden die letzte Aktivität abfragen? Ich tue das nicht.

Ralf

Seit der initialen Installation habe ich nichts geändert - und bisher lief es ohne Probleme und Fehlermeldungen.

Haben wir heut alle die Lesebrille verlegt?
Problem und Lösung stehen doch direkt darüber

3 „Gefällt mir“

Es gibt eine neue Version auf dem STABLE Kanal:

Version 2.5 (2024-05-05)

  • 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
  • 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
  • Neu: Variablen zum De-/Aktivieren der Wecker

  • Neu: neue DeviceTypes hinzugefügt

2 „Gefällt mir“

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.

Oder hättet ihr eine andere Idee?
Gruß Dominik