NEWS
Sonos-Adapter: Workaround für "no existing object"
-
Es ist bekannt, dass der neue JS-Controller (3.2.X) eine Warnung ausgibt, wenn ein Adapter einen State ändern möchte, dessen Objekt nicht existiert.
Im Fall des Sonos-Adapters sieht das dann ungefähr so aus:
2021-01-12 21:11:24.604 - warn: sonos.0 (4480) State "sonos.0.root.192_168_0_194.members" has no existing object, this might lead to an error in future versions
Abgesehen davon, dass das ein Fehler des Adapters ist (Github-Issues existieren dazu) stellt sich die Frage, weshalb existiert eigentlich das Objekt nicht?
Bei mir war es so, dass ich zum Zeitpunkt der Einrichtung des Sonos-Adapters zwei Sonos-Systeme hatte. Diese waren auch als Geräte in der Instanz eingetragen. Im Laufe der Zeit habe ich aber zwei weitere Sonos-Lautsprecher dazu bekommen. Da ich nicht vor hatte, diese über iobroker zu steuern, habe ich auch keine Sekunde daran gedacht, diese in der Liste der Geräte in der Instanz einzutragen.
Als ich die Logmeldung mit dem Objektbaum der Sonos-Instanz verglichen habe, ist mir aufgefallen, dass es gar keine Objektstruktur für ein Gerät mit der IP-Adresse aus dem Log gibt. Hat sich die IP-Adresse geändert? Nein, ich hatte ja zwei weitere Sonos-Lautsprecher bekommen und die sieht der Sonos-Adapter auch dann, wenn diese nicht in der Liste der Geräte eingetragen sind. Er möchte nun u. a. den State für "members" schreiben, aber ich hatte ja die neuen Geräte nicht eingetragen, also gab es auch keinen Objektbaum.
Nachdem ich die Instanz nach Sonos-Geräten habe suchen lassen und die gefunden Geräte in der Liste waren, hörten auch die Warnungen auf. Eigentlich logisch.
Vielleicht hilft es jemanden.
-
Sollte es außerdem zu folgender Meldung im Log kommen:
State "sonos.0.root.192_168_0_71.queue" has no existing object, this might lead to an error in future versions
Kann der fehlende Datenpunkt einfach manuell erstellt werden (Typ: Zeichenkette). Als Rolle habe ich media.current gewählt.
===================================================================
Sollten weitere Meldungen in dieser Form kommen:
State "sonos.0.root.192_168_0_99.favorites_list_array" has no existing object, this might lead to an error in future versions
Dann den Adapter stoppen. Den Objektbaum des enstprechenden Lautsprechers löschen und Adapter wieder starten. Danach wird der Objektbaum wieder angelegt. Den Datenpunkt "queue" wieder anlegen. Siehe oben.
-
@ofbeqnpolkkl6mby5e13 Dies war bei mir nicht der Fehler. Ich hatte erste gedacht das ich die Sonos Beam nicht eingetragen habe weil ich die wirklich nicht mit ioBroker steuere aber auch die war bei mir eingetragen.
Die Fehlermeldungen tritt bei allen Sonos Geräten auf. Bei allen Geräten mit "favorites_list_array" und teilweise nur bei einzelnen Geräten mit anderen Datenpunkten...Komisch ist allerdings das es bei mir bei manchen Sonos Datenpunkte für shuffle gibt bei einem allerdings nicht. Dieser eine ist ein ganz normaler One genauso wie ein paar andere auch. Ist mir bisher allerdings nicht aufgefallen, da ich das Sonos zwar steuere aber nie mit shuffle oder repeat. Zeigt also insgesamt das der Adapter das ein oder andere Problem hat...
-
@cash
Leg die Datenpunkte, die in den Objekten fehlen, einfach selbst an. Bis jemand den Adapter fixt, kann es dauern. Wenn das überhaupt jemals passieren wird... -
@ofbeqnpolkkl6mby5e13 ich habe einfach den Loglevel von Warn auf Error gestellt. Damit ist der Adapter im Log auch ruhig. Wie ich schon schrieb sollten die aktiven Entwickler einfach mal die Adapter durch gucken und die die man nicht mehr pflegen will oder kann einfach abkündigen. Damit wäre es für die User einfacher.