Amazon Echo Remote Control

Hallo @hirschbrat
Ich habe eben das Update gemacht und bekomme beim WS Client folgende Meldung


Alle Instanzen (auch die Splitterinstanz) sind aktiv und auch bei den Echo (die der Lautpsrecher) Instanzen sind in Ordnung.
Habe auch schon mal den Schalter für das „Zertifikate verifzieren“ verändert (aus/ein) und gespeichert. Die Meldung geht nicht weg. Ein Problem?

Eben noch in der Splitterinstanz entdeckt:
image
Wenn ich den Schalter „Websocket vervewenden“ deaktivieren und wieder aktivieren, hatte ich zwei WS Clients. Das ist unschön. Zur Sicherheite habe ich diesen Schlater einmal deaktiviert, alle WS Instanzen gelöscht und dann wieder aktiviert. An obiger Meldung ändert sich allerdings nicht.

Du kannst die Meldung ignorieren bzw. mit ok bestätigen. Sie wird jedes Mal wieder kommen, das macht aber nichts.

Edit: Zu deiner zweiten Frage: Das Verhalten ist so korrekt - wenn auch nicht unbedingt schön. Ich musste es so umsetzen, um beim erneuten aktivieren nicht einen „fremden“ Websocket zu kapern. Es gibt auch nur ganz spezielle Gründe, warum man den Websocket deaktivieren sollte - daher unter Experten-Optionen.

Ok, danke für die rasche Rückmeldung. Die Auswertung von „Letzer Aktion“ funktionert einwandfrei.
Eine Frage hab ich noch. Es gibt die Variable „letztes Gerät“. Wird das noch befüllt? Es wird aktualisiert, aber es ändert nicht den Wert.

Ja, die Variable wird noch befüllt. Hast du mal mit verschiedenen Echos gesprochen?

Hab mal mit allen geredet :smiley:
Passt :+1:

Hab ich was übersehen, oder gibt es die Funktion ECHOIO_GetLastDevice($AmazonEchoIO_ID); nicht mehr? Ich verwende (oder verwendete) diese Funktion um zu erkennen, welcher Echo angesprochen wurde. Ich weiß, es gibt die Variable, aber das ist nicht immer so zuverlässig.
Ist mir jetzt eben passiert. Ich sage im Wohnzimmer „Licht ein“, die in der Küche fühlt sich auch irgendwie angsprochen, aber der Befehl wird vom Echo im Wohnzimmer entgegengenommen (quitiert) . Statt im Wohnzimmer, wirds in der Küche hell.
Das war mit der Funktion nie ein Problem. Mit der Variable schon.

Hm, da musste ich selbst erstmal suchen. Diese Funktion gibt es nicht mehr, stattdessen gibt es ECHOIO_GetLastActivity( $id).

Du erhältst dann ein Array mit folgenden Werten:

Array
(
    [id] => 
    [creationTimestamp] => 
    [utterance] => 
    [deviceType] => 
    [serialNumber] => 
)

Wenn du da den Namen noch dazu machen könntest wäre ich glücklich :wink:
Die funktion gabs bis vor dem Update :smiley:
Wenn das mit dem Namen nicht geht, dann mache ich das über die Seriennummer.
Edit: Ich hab es in der Zwischenzeit umgebaut und frage jetzt die Seriennummern ab. Geht auch. Also passt das so für mich.

Spricht nichts dagegen den Namen wieder mit zu übergeben - ist irgendwo verloren gegangen.

Die Funktion führt übrigens bei jedem Aufruf einen Request an den Server durch, daher wäre es performanter direkt mit den Variablen-Werten zu arbeiten.

Danke.

Das mag sein, geht aber was ich bis jetzt so gesehen habe, durchaus zügig. Natürlich würde die Variable funktionieren, aber es kommt vor, dass das nicht der Echo ist, der den Befehl ausgeführt hat. Die Varable gabs schon länger, auch vor deiner Übernahme. Und auch da gab es schon das Phänomen. Daher habe ich die Funktion verwendet, womit das Problem behoben war.
Ich verwende es zum Beispiel für die aktvier- und deaktivierbare Szene „Fernseher“.
Ich aktiviere die Szene mit „Fernseher ein“ und deaktiviere sie mit „Fernseher aus“. Je nachdem, welcher Echo angesprochen wird, wird der entsprechende Zwischenstecker im Raum ein- oder ausgeschaltet. Ebenso bei der Szene „Licht“.

Seit heute ist die neueste Version auch auf dem STABLE-Kanal verfügbar:

Version 2.3 (2023-08-21)

  • Neu: Websockets
    • Auswertung der letzten Aktivität (Sprachbefehl und Gerät) erfolgt nun sofort per Push - kein Polling mehr notwendig
    • EchoIO-Instanz ist nun ein Splitter (Name und Prefix bleiben aus Kompatibilitätsgründen bestehen)
  • Optimierungen:
    • Optimiertes Handling von mehreren gleichzeitigen/hintereinanderfolgenden Automations-Befehlen (z.B. TextToSpeech, StartAlexaRoutine,…) um das Rate-Limit der API nicht zu überschreiten
    • Optimierung beim Aktualisieren von Routinen und den entsprechenden Variablenprofilen
  • Change: Erfordert min. IP-Symcon 6.1 (wegen Custom Headers Support des Websockets)
  • Fix: Anpassungen für Symcon 7.0 (Php 8.2) zur Vermeidung von type_errors
  • Fix: Dateipfad des Cookies konnte nach Migration von IP-Symcon auf andere Plattform nicht gefunden werden
  • Fix: In der Konfiguration von Ereignissen werden die Aktionen dieses Moduls nur noch angezeigt, wenn als Ziel auch eine Echo Remote Instanz ausgewählt ist
1 „Gefällt mir“

Hi,
mit Device vorsichtig sein und nicht sofort auf Änderungen reagieren. Wenn 2 Echos in hörweite sind meldet sich oft der falsche und dann der richtige. Wenn ich wissen will welcher Echo den Befehl angenommen hat warte ich erst 1 Sekunde und dann ist der Wert bisher stabil und ich kann reagieren jenach Echo und so gezielt Befehle in Räumen starten.

Ralf

@HarmonyFan
Mache ich genau so. Nur keine ganze, sondern nur eine halbe Sekunde. Eben aus den von dir genannten Gründen.

Hi,
eine Sekunde hat einen kleinen Vorteil denn dann sieht man auch Text den man vielleicht zusammen mit dem Befehl gesagt hat wie „Alexa, schalte Fernseher aus Du Ziege“ :smiling_imp:

Ralf

:scream: I’m shocked …
Wie sprichst du mit der netten Dame :wink:
Der Text ist mir wurscht. Mir ist nur wichtig, wer den letzen Befehl quittiert hat.

Ich habe mal ein GIF-Video gemacht, wo man den Wechsel zwischen den Echos bei der Variable schön sieht.
Was habe ich gemacht:

  • von der Couch das Aktivierungswort „Computer“ (habs geändert - Star Treck :wink: )
  • dann die Szene „Fernseher an“ aktiviert
  • richtigerweise hat der im Wohnzimmer den Befehl quittiert aber auch der in der Küche hat zu lauschen bekommen wie man beim Wechsel sieht.
    alexa

Ich denke, dass ich an Hand der Server-Antwort im Modul entscheiden könnte, ob ein Echo auch tatsächlich den Befehl ausgeführt (habe das mal nachgestellt und ein entsprechendes Flag gefunden, wenn an einen anderen Echo weitergegeben wurde). Dann würde ich die Variablen nur aktualisieren, wenn auch tatsächlich der Befehl ausgeführt wurde - muss ich aber nochmal genauer evaluieren.

Das was man bei dir sieht könnte aber auch einen anderen Grund habe: Eigentlich sollte der Sprachbefehl auch jedesmal gleich lauten, bei dir ist er aber einmal leer. Das kann passieren, wenn du aus dem Modul heraus eine Aktion startest (wie TextToSpeech oder TextCommmand und ggf. auch bei anderen dingen)

Ja, das wäre eine Möglichkeit.

Das kommt daher, weil die Szene bzw. das hinterlegte Skript eine Audioausgabe auf den, in meinem Fall (Wohnzimmer) richtigen Echo macht. Sie sagt mir, dass jetzt noch nicht die Zeit zum Fernsehen ist :wink:
Daher ist die „Letzte Aktion“ leer.

Ich habe zu dieser Thematik mal eine neue Version auf dem BETA-Kanal reingestellt. Gebt mir mal Rückmeldung, ob das Problem mit der wechselnden LastDevice-Anzeige behoben ist.

Version 2.3.1 (BETA)

  • Fix: GetLastDevice liefert wieder deviceName zurück
  • Fix: Wenn mehrere Echo-Geräte einen Sprachbefehl erkannt habe, werden nur die Variablen LastDevice und LastAction des Gerätes aktualisiert, dass die Aktion auch tatsächlich ausgeführt hat
  • Change: Variable LastDevice ist nun vom Typ String: Variablen-Wert:DeviceSerial, Profil-Wert:Gerätename
1 „Gefällt mir“

Funktioniert

Scheint auch zu funktionieren. Jedenfalls sehe ich die Aktualisierung erst dann, wenn der Befehl quittiert wurde.

Ich hab mein Skript zur Findung des letzten Echos der einen Befehl ausgeführt hat, mal auf die Variablen umgebaut. Mal schauen wie es läuft. Die Option mit der Funktion habe ich ja noch immer.

1 „Gefällt mir“