Sehr komisch. Ich habe das auch.
ABER
Für einen Test wurde die Funktion in ein var_dump() verfrachtet. Ein Einzeiler. Kein Fehler und alles passt. Dann mein „Fernseher ein/aus“ Skript ausgeführt. Bekomme ich Fehler, dass Indizes nicht definiert sind. Also wieder mein Testskript, die eine Zeile mit var_dump(). Kein Fehler. Also hab ich ein var_dump() in meine Funktion für den letzten Echo eingebaut und siehe da, kein Fehler. var_dump() rausgenommen, wieder der Fehler.
Sehr eigenartiges Verhalten.
Das ist ein Timingproblem. Das hat mit dem var_dump() eher nichts zu tun. Irgend etwas ist zu langsam. Ich habe jetzt die Abfrage des letzten Echos zwei mal hintereinander. Dann ist die Trefferquote wieder 100%.
Ich habe mir jetzt so geholfen. Wenn der Key „deviceName“ nicht existiert, dann wird die Funktion noch einmal aufgerufen.
$Alexa=ECHOIO_GetLastActivity(26201); //ID vom EchoIO
if (!array_key_exists("deviceName", $Alexa)) $Alexa=ECHOIO_GetLastActivity(26201);
Ich vermute, dass dies nach der api Umstellung die Anzeichen sind, dass diese Funktion bald nicht mehr zur Verfügung steht.
Ihr müsst bei häufigen Abfragen von GetLastActivity auch berücksichtigen, dass im Modul schon eine Sperre eingebaut ist, damit nicht in kürzeren Intervallen als 2 Sekunden abgefragt werden kann. Wenn ihr zusätzlich zur zyklischen Abfrage des Moduls den Befehl selbst noch ausführt, werdet ihr in diese Sperre laufen und entsprechend nichts zurück bekommen.
Das ist das Intervall, indem globale Geräteinformationen abgerufen werden, die vom Modul benötigt werden. Das sind z.B. Capabilities und auch Lautstärke und Online-Status aller Echo’s.
Es gibt jetzt eine neue BETA in der eine andere API zur Abfrage der letzten Aktivität verwendet wird. Diese hat auch den Vorteil, dass weitere Informationen (z.B. der Antworttext und die erkannte Person) im Array zur Verfügung stehen.
Ein kleiner Wusch
Könnte dein Modul alle diese Daten unter der Splitter Instanz anlegen und befüllen? Eventuell, für jene die das nicht wollen, deaktivierbar in der Konfiguration der Splitterinstanz.
Es gibt ein neues Update im BETA Kanal, bei dem mehr Variablen zur letzten Aktivität angelegt werden.
Hinweis: Person steht erst etwa 20s nach der Aktivität zur Verfügung, daher ist dieser Wert unmittelbar nach einer Aktivität leer.
Ich filtere die Aktivitäten, damit nur diejenigen angezeigt werden, die auch durch einen echten Sprachbefehl ausgelöst wurden (also keine, die innerhalb einer Routine oder durch das Modul selbst ausgelöst wurden).
Der Token sollten nach dem Einloggen in der Konsole erscheinen - nicht im Browser! Am besten nochmal alle Schritte genau ausführen.
Bei mir hat es heute mit der Methode weiterhin funktioniert.
Neu: Musikwiedergabe auf Multiroom-Gruppen mittels PlayMusic() und Favoriten
Hinweis: Wird Musik auf einer Multiroom-Gruppe gestartet, erfolgt die Anzeige und Steuerung nur in der Instanz der Multiroom-Gruppe und nicht mehr in den Instanzen der Einzelgeräte.
Sonstige Befehle an Multiroom-Gruppen werden nur auf dem ersten Einzelgerät ausgeführt, wenn der Befehl nicht Multiroom-fähig ist.
Letzte Aktivität und letztes Gerät:
Change: Letzte Aktivität wird wieder zyklisch über neue API abgefragt (ggf. in EchoIO-Instanz aktivieren), da Websockets nicht mehr unterstützt werden. Der WebSocket-Client (seit 2.3) kann nach dem Update manuell gelöscht werden.
Neu: Variablen für Antwort, Person (Anzeige ca. 20 Sekunden verzögert), Intent und Zeit der letzten Aktivität
Fix: Wenn mehrere Echo-Geräte einen Sprachbefehl erkannt habe, werden nur die Variablen LastDevice und LastAction des Gerätes aktualisiert, das die Aktion auch tatsächlich ausgeführt hat
Fix: GetLastActivity liefert wieder deviceName zurück
Change: Variable LastDevice ist nun vom Typ String: Variablen-Wert:DeviceSerial, Profil-Wert:Gerätename
Variablen und Profile:
Neu: Nicht benutzte Variablenprofile werden automatisch gelöscht
Fix: Assoziationen von Variablenprofilen werden nur noch dann neu gespeichert, wenn sie sich geändert haben
Fix: Bevor Variablen-Werte gesetzt werden, wird geprüft, ob die Variable existiert
Change: Variable Remote verwendet nun das Profil ~PlaybackPreviousNextNoStop
Change: Namen von Variablenprofilen vereinheitlicht
Sonstiges:
Fix: UpdateStatus verlässt Semaphore nun korrekt
Fix: Nutze namespaces um Konflikte mit anderen Modulen zu vermeiden
nachdem ich das Modul über den Store geupdatet habe, bekomme ich folgende Fehlermeldung(en) …
07.11.2023, 17:34:03 | KernelMT | InstanzManager: Fehler bei Instanz #34354, Meldung IPS_KERNELMESSAGE:
Warning: count(): Parameter must be an array or an object that implements Countable in C:\ProgramData\Symcon\modules\.store\fonzo.ipsymconechoremote\Echo Device\module.php on line 1692
Warning: Invalid argument supplied for foreach() in C:\ProgramData\Symcon\modules\.store\fonzo.ipsymconechoremote\Echo Device\module.php on line 1693
Ich bin auf IPS Version unterwegs …
IP-Symcon 6.4, Windows (amd64), 01.06.2023, 9aaa5e71e494
Wenn ich sage „Alexa, spiele Bayern 3“ dann will sie den Bayern 3 Skill aktivieren. Könnte ich ja auch noch mit leben. Aber wenn der aktiv ist dann wird die Variable „Remote“ nicht auf „Play“ oder „Pause“ aktualisiert.
Wenn ich sage „Alexa, spiele Bayern 3 von TuneIn“ dann funktioniert alles so wie es soll.
Ist auch bei Ö3 so. Wenn ich sage „spiel Ö3“ kommt dieser schrottige Skill daher. Daher auch immer „Ö3 von TuneIn“. Ich könnte mir vorstellen, dass das System zuerst nachsieht, ob es einen Skill mit dem Namen gibt und wenn ja, dann nimmt er diesen her. Wenn nicht, dann TuneIn.
Du könntest versuchen eine Routine anzulegen.
Moin,
nach dem Wechsel meiner Internetverbindung (jetzt FTTH) wollte die Remote-Tante sich nicht mehr anmelden.
Also habe ich einen neuen Cookie erzeugt (stumpf nach Anleitung, kein Problem).
Aber es geht immer noch nicht …