NEWS
SOLVED Sonos Adapter aktualisiert nur teilweise
-
Also das mit der Lautstärke hab ich mir jetzt abgekupfert....danke. Zumindest kann ich jetzt steuern. Diese Felder werden noch aktualisiert (speaker und group). Fehler gibt es bei mir "noch" keine. Wurde etwas upgedatet? Mir ist nichts bekannt. Letzte Woche kam ein CCU3 update und danach waren im iobroker keine Datenpunkte mehr. Aber auf der Vorgängerversion klappt es sehr gut. Daher habe ich auch den Sonos Adapter unter unterschiedlichen Versionen getestet. Leider hier alles ohne Erfolg.
-
@Bluefox du bist mein Held! Vielen vielen Dank! Mit deiner Überarbeitung für Version 2.0.0 funktioniert bei mir die aktualisierung aller Datenpunkte wieder.
-
@TJ1973 sagte in Sonos Adapter aktualisiert nur teilweise:
Also das mit der Lautstärke hab ich mir jetzt abgekupfert
Ich hatte hierzu mal ein HowTo verfasst (müßte ich mal aktualisieren
).
Das Script ist übrigens von @pix -
@BBTown Hab das How to gefunden....wie gesagt, gefällt mir gut und funktioniert mit den vorhandenen Datenpunkten. leider ist das Problem noch immer wie gehabt. Ich werde posten, sobald ich verstanden habe was die Datenpunkte "lähmt". Leider hat auch der Wechsel von WLAN auf LAN bzw. umgekehrt nicht geholfen.
-
@TJ1973 hast du eine Lösung gefunden für die nicht statfindende Aktualisierung der Datenpunkte? ich habe eine ähnliches Verhalten ...
-
Habe mal eine komplett neu iobroker installation gemacht und auch die aktuelleste Sonos Adapter Version direkt von Github genommen.
Auch damit werden nur ein paar Datenpunkte aktualisert und auch Weboberfläche vom Adpater funktioniert nicht.
Im LOG sind folgende fehler aufgetaucht:
2019-08-01 20:46:31.869 - info: sonos.0 terminating 2019-08-01 20:46:31.966 - error: Caught by controller[0]: (node:8791) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'startsWith' of undefined 2019-08-01 20:46:31.971 - error: Caught by controller[0]: at isRadio (/opt/iobroker/node_modules/iobroker.sonos/node_modules/sonos-discovery/lib/prototypes/Player/getUriType.js:4:14) 2019-08-01 20:46:31.972 - error: Caught by controller[0]: at Player.getUriType (/opt/iobroker/node_modules/iobroker.sonos/node_modules/sonos-discovery/lib/prototypes/Player/getUriType.js:18:10) 2019-08-01 20:46:31.972 - error: Caught by controller[0]: at parseTrackMetadata.then.track (/opt/iobroker/node_modules/iobroker.sonos/node_modules/sonos-discovery/lib/models/Player.js:243:43) 2019-08-01 20:46:31.972 - error: Caught by controller[0]: at process._tickCallback (internal/process/next_tick.js:68:7) 2019-08-01 20:46:31.972 - error: Caught by controller[1]: (node:8791) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1) 2019-08-01 20:46:31.972 - error: Caught by controller[1]: (node:8791) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code. 2019-08-01 20:46:31.972 - error: Caught by controller[2]: (node:8791) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'startsWith' of undefined 2019-08-01 20:46:31.973 - error: Caught by controller[2]: at isRadio (/opt/iobroker/node_modules/iobroker.sonos/node_modules/sonos-discovery/lib/prototypes/Player/getUriType.js:4:14) 2019-08-01 20:46:31.973 - error: Caught by controller[2]: at Player.getUriType (/opt/iobroker/node_modules/iobroker.sonos/node_modules/sonos-discovery/lib/prototypes/Player/getUriType.js:18:10) 2019-08-01 20:46:31.973 - error: Caught by controller[2]: at parseTrackMetadata.then.track (/opt/iobroker/node_modules/iobroker.sonos/node_modules/sonos-discovery/lib/models/Player.js:243:43) 2019-08-01 20:46:31.973 - error: Caught by controller[2]: at process._tickCallback (internal/process/next_tick.js:68:7) 2019-08-01 20:46:31.973 - error: Caught by controller[3]: (node:8791) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 2)
@apollon77 ich denke hier passt der Fehler besser hin, Danke für deine Unterstützung
-
Bitte GitHub neu versuchen
-
@apollon77 Vielen Dank für deine Änderungen und Unterstützung.
Ich habe die aktuelle Version vom GIT installiert, allerdings wurden dann die Datenpunkte immer noch nicht aktualisiert.
Aber es gab auch keine Meldung im LOG
Dann hab ich die Sonos Speaker entfernt und im Adapter nochmal neu hinzu gefügt, dann gab es im LOG folgende Fehlermeldungen:
019-08-02 14:36:27.545 - info: host.iobroker stopInstance system.adapter.sonos.0 2019-08-02 14:36:27.545 - info: host.iobroker stopInstance system.adapter.sonos.0 killing pid 4619 2019-08-02 14:36:27.567 - info: sonos.0 terminating 2019-08-02 14:36:27.624 - error: Caught by controller[0]: (node:4619) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'startsWith' of undefined 2019-08-02 14:36:27.625 - error: Caught by controller[0]: at isRadio (/opt/iobroker/node_modules/sonos-discovery/lib/prototypes/Player/getUriType.js:4:14) 2019-08-02 14:36:27.625 - error: Caught by controller[0]: at Player.getUriType (/opt/iobroker/node_modules/sonos-discovery/lib/prototypes/Player/getUriType.js:18:10) 2019-08-02 14:36:27.626 - error: Caught by controller[0]: at parseTrackMetadata.then.track (/opt/iobroker/node_modules/sonos-discovery/lib/models/Player.js:243:43) 2019-08-02 14:36:27.626 - error: Caught by controller[0]: at process._tickCallback (internal/process/next_tick.js:68:7) 2019-08-02 14:36:27.626 - error: Caught by controller[1]: (node:4619) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1) 2019-08-02 14:36:27.626 - error: Caught by controller[1]: (node:4619) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code. 2019-08-02 14:36:27.627 - error: Caught by controller[2]: (node:4619) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'startsWith' of undefined 2019-08-02 14:36:27.627 - error: Caught by controller[2]: at isRadio (/opt/iobroker/node_modules/sonos-discovery/lib/prototypes/Player/getUriType.js:4:14) 2019-08-02 14:36:27.627 - error: Caught by controller[2]: at Player.getUriType (/opt/iobroker/node_modules/sonos-discovery/lib/prototypes/Player/getUriType.js:18:10) 2019-08-02 14:36:27.627 - error: Caught by controller[2]: at parseTrackMetadata.then.track (/opt/iobroker/node_modules/sonos-discovery/lib/models/Player.js:243:43) 2019-08-02 14:36:27.628 - error: Caught by controller[2]: at process._tickCallback (internal/process/next_tick.js:68:7) 2019-08-02 14:36:27.628 - error: Caught by controller[3]: (node:4619) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 2) 2019-08-02 14:36:27.628 - info: host.iobroker instance system.adapter.sonos.0 terminated with code 156 () 2019-08-02 14:36:30.079 - info: host.iobroker instance system.adapter.sonos.0 started with pid 5072 2019-08-02 14:36:32.386 - info: sonos.0 starting. Version 1.8.0 in /opt/iobroker/node_modules/iobroker.sonos, node: v10.16.0 2019-08-02 14:36:32.511 - info: sonos.0 http sonos server listening on port 8080
-
Ich habe heute mal test weise in einer Testinstallation, den js-controller per Backup auf Version 1.5.11 "gestellt", direkt wurden alle Datenpunkte aktualisiert.
Es scheint also irgendwas in der Verbindung mit dem js-controller und dem adapter nicht zu passen.
Gibt es denn einen offiziellen Way to go für einen Downgrade vom js-controller?
-
Das kann an sich nicht sein. Die Änderungen zwischen controller 1.5.11 und 14 sind an ganz anderen Stellen.
Der "offizielle" Weg ist ein "npm install iobroker.js-controller@1.5.11 --production" im iobroker Verzeichnis, wbei das nicht hilft. Du bist bisher der einzige der dieses Problem hat ... Ich habe kein Sonos und kann daher nichts prüfen oder nachstellen.
-
@apollon77 Vielen Dank, ich werde noch ein bisschen rum probieren und test. Vlt finde ich ja noch raus, warum es auf einer neuen Installation nicht funktioniert. Auch wenn meine Javascript Kenntnisse etwas begrenzt sind.
Aber irgendwie hat es auch was damit zu tun, dass die Files im SonosCache Verzeichnis nicht angelegt werden..
-
Ok, nun muss ich meine Aussage korrigieren. Nach dem Einspielen des Backups meines Testsystems und anschließendem Update auf js-controller 1.5.14 funktioniert es weiter.
Was ich allerdings immer noch nicht hinbekomme, ist es zum laufen zu bringen auf einer frischen neuen Installation
Eigentlich wollte ich mit iobroker nicht mit dem einspielen eines Backups von meinem zu gemüllten Testsystems ...
Hat noch jemand eine Idee was man testen könnte?
-
@hesse vergleiche doch mal die relevanten files ob und was gleich oder anders ist.
-
@apollon77 Danke für Rückmeldung.
Da bin ich gerade dabei ... Was mir schonmal auffällt ist, dass /opt/iobroker/iobroker-data/sonoscache leer bleibt bei der neuen Installation. Bei der Testinstallation liegen dort mehrere Files drin.
Aber irgendwie blick ich beim Quellcode noch nicht so durch ...
Gibt es einen Grund warum vom sonos-discovery nur Version 1.1.3 verwendet wird, obwohl es schon Version 1.7.3 gibt?
-
@apollon77 Ich habe mal alle Sonos Ordner und die darin enthalten Files verglichen und dabei nur folgende unterschiede gefunde. Vielleicht hilft das ja beim fixen oder dabei noch irgend eine Idee zu bekommen:
Unterschiede
/opt/iobroker/iobroker-data/sonosCache/
im funktionierenden: mehrere md5 files
im der neuen installation: kein Inhalt/opt/iobroker/node_modules/sonos-web-controller/static/js/socket.js
Zeile 15:im funktionierenden:
Socket.socket = io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect(target);
im der neuen installation:
Socket.socket = io.connect(target);
-
könnte es sein, dass das Problem hier liegt:
if (fs.existsSync(staticPath + '/js/socket.js')) { let data = fs.readFileSync(staticPath + '/js/socket.js').toString(); if (data.indexOf('io.connect(target);') !== -1) { data = data.replace('io.connect(target);', "io.connect('/', {path: location.pathname.replace('/m/', '/') + 'socket.io'}); // io.connect(target);"); fs.writeFileSync(staticPath + '/js/socket.js', data); } }
-
Ach Du grosser gott .. da werden JavaScript Files gepatcht und das scheint bei ner neuen Installation nicht zu klappen. Mach doch mal diese eine Anpassung manuell ...
Und vermerke es bitte im GitHub issue.Ich denke es liegt daran das npm inzwischen die Files teilweise woanders ablegt als früher ...
-
Schade, ich habe die Änderungen manuell gemacht, aber das hat leider noch nicht gereicht
-
Hallo,
bei mir funktioniert es auch nicht mehr folgende DP's aktualisieren nicht mehr:
current_Duration, current_duration_s, current_elapsed, current_eleapsed_s, current_type, state, state_simple.
Intel Nuc mit Ubuntu und Nodejs 10.6.1 und Npm 6.9.0 Sonos Adapter 1.8.0 -
Hallo zusammen,
bekomme folgende Meldungenim Iobroker: -
@helfi9999 Installiere mal die GitHub version