11 Mar 2021, 11:47

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.