NEWS
Test/Support Adapter SqueezeboxRPC
-
hi,
so wie es aussieht funktioniert auf der Synology oder dem dockerimage der Broadcast nicht, über den die anderen Server im Netzwerk gefunden werden nicht.
Ich habe vorhin mal selbst den Adapter in einem docker-image von iobroker (buanet/iobroker) auf debian/x86 installiert
dort hat alles funktioniert und er hat einen LMS in einem anderen laufenden docker container gefunden und sich verbunden.
Ich weiß nicht welchen container du genau benutzt und ob es da etwas mit der Konfiguration gibt
Ich bin allerdings in docker nicht sehr bewandertda ich gestern bereits das discovery konfigurierbar gemacht habe, aber noch nicht als neue version gepublished habe, habe ich das soeben gemacht. Sobald die travis tests durch sind, kommt die v0.8.8 auch nach npm
da kannst du es nochmal probieren, indem du in der Konfiguration / Performance die Suche nach LMS abschaltest und die IP+Port direkt eingibst.
Ich werde morgen ein bisschen Fehlerkontrolle einbauen, so dass das nicht zum Abbruch des Adapters führt -
Ok, werde ich dann testen.
Wie schon geschrieben, der Media Server läuft bei mir schon lange auf den Standartports ohne Probleme.
Der Container ist übrigens der von buanet -
@OliverW
Hi Oliver
Habe squeezebox zuhause. Werde das bei Gelegenheit testen. Kannst du dein Widget für mich exportieren?
Sieht gut aus, würde ich gerne bei mir einsetzen.
Gruß Eisbaeeer -
@zahnheinrich
Da es sich hier um andere Protokolle handelt, sprechen die auch über andere Ports.
Standardmäßig ist im LMS für JSON/RPC 9000 eingestellt
Für das automatische finden von LMS-Server im Netzt gibt es ein Discoverprotokoll, welches auf der Broadcastadresse mit Port 3483 einen Broadcast aussendet und sich dann die LMS-Server melden
Der andere Adapter nutzt das Telnet-Protokoll Standardmäßig auf Port 9090
ggfs. müssten auch Firewallregeln angepasst werden? -
@Eisbaeeer hast du nur eine squeezebox oder auch einen LMS-Server?
Die squeezeboxen gehen auch ohne Server zu Hause, dann läuft aber alles über die Logitech Server.Der Adapter steuert nur den LMS-Server zuhause.
Welches Widget meinst du? In dem Bild oben sind nur Standard-Widgets verbaut.
- Die Lautstärkesteuerung ist der Circle-Knob aus den hqwidgets
- Die Playbuttons sind die On/Off-Buttonsaus hqwidgets mit Icons, die ich bei Iconfinder gefunden hab und etwas nachbearbeitet habe
- Das Bild ist das basic string img src, welches sich aus meinem Artwork-State befüttert, was sich passend zur Station oder Album entsprechend ändert
- Datum und Zeit ist SimpleClock und SimpleDate aus timeandweather
'Aktuell bin ich aber dabei Widgets für die Favoriten und die Playerauswahl zu bauen
-
Danke dass ihr euch die Mühe macht das zu testen.
-
Habe die 0.8.8 geladen.
Der Adapter läuft und tut was er soll.
Ein echter Fortschritt zum bisherigen Media Server Adapter.
Vielen Dank dafür! -
@zahnheinrich danke für den test. hast du es nochmal mit dem discovery probiert? oder komplett ohne getestet?
ich muss mal schauen, vor 2 jahren habe ich in Verbindung mit einem LMS-Plugin mir ein synology-image für virtualbox (ist glaub ich nicht ganz offiziell) gebaut um da drin was mit LMS zu testen. Ist natürlich nicht so wie mit echter Hardware.
-
@OliverW
@OliverW sagte in Neuer Adapter SqueezeboxRPC:
hast du nur eine squeezebox oder auch einen LMS-Server?
Jep, der läuft auf der gleichen Maschine. Und das bringt mich gleich zu dem Problem, dass dein Adapter den Port nutzen möchte, den Squeezebox wohl schon nutzt?
Ich bekomme folgende Meldung im log von iobroker:host.NAS 2019-05-15 11:27:45.513 error instance system.adapter.squeezeboxrpc.0 terminated with code 0 (OK) host.NAS 2019-05-15 11:27:45.513 error Caught by controller[4]: at process._tickCallback (internal/process/next_tick.js:104:9) host.NAS 2019-05-15 11:27:45.513 error Caught by controller[4]: at _combinedTickCallback (internal/process/next_tick.js:83:11) host.NAS 2019-05-15 11:27:45.513 error Caught by controller[4]: at _handle.lookup (dgram.js:219:18) host.NAS 2019-05-15 11:27:45.512 error Caught by controller[4]: at exports._exceptionWithHostPort (util.js:1043:20) host.NAS 2019-05-15 11:27:45.512 error Caught by controller[4]: at Object.exports._errnoException (util.js:1020:11) host.NAS 2019-05-15 11:27:45.512 error Caught by controller[4]: 2019-05-15 11:27:45.422 - squeezeboxrpc.0 Error: bind EADDRINUSE 0.0.0.0:3483 host.NAS 2019-05-15 11:27:45.512 error Caught by controller[3]: 2019-05-15 11:27:45.422 - squeezeboxrpc.0 uncaught exception: bind EADDRINUSE 0.0.0.0:3483 host.NAS 2019-05-15 11:27:45.510 error Caught by controller[2]: port: 3483 } host.NAS 2019-05-15 11:27:45.510 error Caught by controller[2]: address: '0.0.0.0', host.NAS 2019-05-15 11:27:45.510 error Caught by controller[2]: syscall: 'bind', host.NAS 2019-05-15 11:27:45.510 error Caught by controller[2]: errno: 'EADDRINUSE', host.NAS 2019-05-15 11:27:45.510 error Caught by controller[2]: code: 'EADDRINUSE', host.NAS 2019-05-15 11:27:45.509 error Caught by controller[2]: at process._tickCallback (internal/process/next_tick.js:104:9) host.NAS 2019-05-15 11:27:45.509 error Caught by controller[2]: at _combinedTickCallback (internal/process/next_tick.js:83:11) host.NAS 2019-05-15 11:27:45.509 error Caught by controller[2]: at _handle.lookup (dgram.js:219:18) host.NAS 2019-05-15 11:27:45.509 error Caught by controller[2]: at exports._exceptionWithHostPort (util.js:1043:20) host.NAS 2019-05-15 11:27:45.509 error Caught by controller[2]: at Object.exports._errnoException (util.js:1020:11) host.NAS 2019-05-15 11:27:45.509 error Caught by controller[2]: { Error: bind EADDRINUSE 0.0.0.0:3483 host.NAS 2019-05-15 11:27:45.508 error Caught by controller[1]: 2019-05-15 11:27:45.299 - debug: squeezeboxrpc.0 statesDB connected host.NAS 2019-05-15 11:27:45.508 error Caught by controller[0]: 2019-05-15 11:27:45.264 - debug: squeezeboxrpc.0 objectDB connected
bind EADDRINUSE 0.0.0.0:3483 --> ist schon belegt.
Hier noch der netstat mit laufendem LMS und gestoppten LMS.
root@NAS:~# netstat -al |grep 3483 tcp 0 0 *:3483 *:* LISTEN tcp 0 0 NAS.fritz.box:3483 SqueezeboxRadio.f:36193 VERBUNDEN udp 0 0 *:3483 *:* root@NAS:~# service logitechmediaserver stop root@NAS:~# netstat -al |grep 3483 tcp 0 0 NAS.fritz.box:3483 SqueezeboxRadio.f:36193 TIME_WAIT
Gruß Eisbaeeer
-
@Eisbaeeer
Danke Eisbaeeer, das war der richtige Hinweis. Eigentlich sollte es beim hören auf Broadcasts nicht zu diesen Konflikten kommen. Dafür gibt es bei beim einrichten ne eigene Option, die nicht gesetzt war (reuseaddr). Bei einem lokalen Test hat das funktioniert. Die Wildnis ist aber immer eine eigene Herausforderung.
Nach dem der Build bei Travis durch ist (diesmal dann auch schon mit node 12 Test),
wird die v0.8.9 nach npm gepublised
Für einen weiteren Test wäre ich dankbar. -
@OliverW sagte in Neuer Adapter SqueezeboxRPC:
@Eisbaeeer
Danke Eisbaeeer, das war der richtige Hinweis. Eigentlich sollte es beim hören auf Broadcasts nicht zu diesen Konflikten kommen. Dafür gibt es bei beim einrichten ne eigene Option, die nicht gesetzt war (reuseaddr). Bei einem lokalen Test hat das funktioniert. Die Wildnis ist aber immer eine eigene Herausforderung.
Nach dem der Build bei Travis durch ist (diesmal dann auch schon mit node 12 Test),
wird die v0.8.9 nach npm gepublised
Für einen weiteren Test wäre ich dankbar.Ich installiere mal direkt von Git, dann bekommst du gleich ne Rückmeldung
-
@OliverW sagte in Neuer Adapter SqueezeboxRPC:
Für einen weiteren Test wäre ich dankbar.
Hab eben mal die neue Version getestet. Mit diesen Einstellungen:
Leider geht der Prozess gleich auf die Bretter. Nicht entmutigen lassen. Das wird schon. Spreche da aus Erfahrung
host.NAS 2019-05-15 14:09:33.302 info object change system.adapter.squeezeboxrpc.0 host.NAS 2019-05-15 14:09:27.017 info Restart adapter system.adapter.squeezeboxrpc.0 because enabled host.NAS 2019-05-15 14:09:27.017 error instance system.adapter.squeezeboxrpc.0 terminated with code 0 (OK) Caught 2019-05-15 14:09:27.017 error by controller[4]: at process._tickCallback (internal/process/next_tick.js:104:9) Caught 2019-05-15 14:09:27.016 error by controller[4]: at _combinedTickCallback (internal/process/next_tick.js:83:11) Caught 2019-05-15 14:09:27.016 error by controller[4]: at _handle.lookup (dgram.js:220:14) Caught 2019-05-15 14:09:27.016 error by controller[4]: at Socket.emit (events.js:188:7) Caught 2019-05-15 14:09:27.016 error by controller[4]: at emitOne (events.js:96:13) Caught 2019-05-15 14:09:27.016 error by controller[4]: at Socket.<anonymous> (/opt/iobroker/node_modules/iobroker.squeezeboxrpc/lib/iosbserver.js:291:21) Caught 2019-05-15 14:09:27.016 error by controller[4]: 2019-05-15 14:09:26.960 - squeezeboxrpc.0 TypeError: Cannot read property 'error' of undefined Caught 2019-05-15 14:09:27.016 error by controller[3]: 2019-05-15 14:09:26.960 - squeezeboxrpc.0 uncaught exception: Cannot read property 'error' of undefined Caught 2019-05-15 14:09:27.015 error by controller[2]: at process._tickCallback (internal/process/next_tick.js:104:9) Caught 2019-05-15 14:09:27.015 error by controller[2]: at _combinedTickCallback (internal/process/next_tick.js:83:11) Caught 2019-05-15 14:09:27.015 error by controller[2]: at _handle.lookup (dgram.js:220:14) Caught 2019-05-15 14:09:27.015 error by controller[2]: at Socket.emit (events.js:188:7) Caught 2019-05-15 14:09:27.015 error by controller[2]: at emitOne (events.js:96:13) Caught 2019-05-15 14:09:27.015 error by controller[2]: at Socket.<anonymous> (/opt/iobroker/node_modules/iobroker.squeezeboxrpc/lib/iosbserver.js:291:21) Caught 2019-05-15 14:09:27.015 error by controller[2]: TypeError: Cannot read property 'error' of undefined Caught 2019-05-15 14:09:27.015 error by controller[1]: 2019-05-15 14:09:26.814 - debug: squeezeboxrpc.0 statesDB connected Caught 2019-05-15 14:09:27.014 error by controller[0]: 2019-05-15 14:09:26.773 - debug: squeezeboxrpc.0 objectDB connected squeezeboxrpc.0 2019-05-15 14:09:26.995 info terminating squeezeboxrpc.0 2019-05-15 14:09:26.961 info squeezeboxrpc unloaded squeezeboxrpc.0 2019-05-15 14:09:26.960 error at process._tickCallback (internal/process/next_tick.js:104:9) squeezeboxrpc.0 2019-05-15 14:09:26.960 error at _combinedTickCallback (internal/process/next_tick.js:83:11) squeezeboxrpc.0 2019-05-15 14:09:26.960 error at _handle.lookup (dgram.js:220:14) squeezeboxrpc.0 2019-05-15 14:09:26.960 error at Socket.emit (events.js:188:7) squeezeboxrpc.0 2019-05-15 14:09:26.960 error at emitOne (events.js:96:13) squeezeboxrpc.0 2019-05-15 14:09:26.960 error at Socket.<anonymous> (/opt/iobroker/node_modules/iobroker.squeezeboxrpc/lib/iosbserver.js:291:21) squeezeboxrpc.0 2019-05-15 14:09:26.960 error TypeError: Cannot read property 'error' of undefined squeezeboxrpc.0 2019-05-15 14:09:26.959 error uncaught exception: Cannot read property 'error' of undefined squeezeboxrpc.0 2019-05-15 14:09:26.891 info starting. Version 0.8.9 in /opt/iobroker/node_modules/iobroker.squeezeboxrpc, node: v6.17.1 squeezeboxrpc.0 2019-05-15 14:09:26.813 debug statesDB connected squeezeboxrpc.0 2019-05-15 14:09:26.766 debug objectDB connected host.NAS 2019-05-15 14:09:25.763 info instance system.adapter.squeezeboxrpc.0 started with pid 21339
-
Bei mir läuft der LMS auch auf der selben Maschine als Dienst.
Habe im Adapter von Hand als IP den localhost und als Port 9002.
Damit geht's einwandfrei. -
@zahnheinrich sagte in Neuer Adapter SqueezeboxRPC:
Bei mir läuft der LMS auch auf der selben Maschine als Dienst.
Habe im Adapter von Hand als IP den localhost und als Port 9002.
Damit geht's einwandfrei.Hmm, bei mir horcht der LMS auf default 9000 TCP. Hast du deinen auf 9002 geändert?
Laut den Logfiles liegt es ja auch nicht am Port 9000 sondern an der Autodiscover Funktionalität. Auf TCP 3483 horcht auch der LMS und somit kann der Adapter diesen Port nicht binden. Welche Version des Adapters hast du am laufen?
Gruß Eisbaeeer -
konnte nun noch den ein oder anderen Fehler in der Fehlerbehandlung des
server discoverys finden.
Auch konnte ich hier lokal nun testen, was passiert, wenn weitere services den port benutzen.
Auf ein neues mit der Version 0.8.10 die nun auf npm verfügbar ist. -
Hallo,
ich habe die discovery Funktion nochmal getestet, ohne Erfolg. Der Adapter wird nicht grün.
Der LMS läuft bei mir wie gesagt auf der Synology als Paket installiert (nicht als Container) mit den Standarteinstellungen, ich habe da nichts geändert.
So erreiche ich die LMS GUI über <Synology-IP>:9002, nur mit der Einstellung läuft auch dein Adapter (auch der "alte" Squeezebox-Adapter).
Über mein Handy steuere ich die Clients (alles Raspis) über die App Squeezer, hier allerdings über den Server-Port 9090.Edit: Mit der 8.10 geht der Adapter mit aktiviertem discovery auf grün, es wird jedoch kein gefundener Server angezeigt.
-
ok, dann stört das discovery wenigstens dort nicht wo es nicht funktioniert.
schön wäre es natürlich schon wenn wir raus finden an was es liegt.
ich gehe davon aus, dass du in den Einstellungen in die dropbox hineingeschaut hast?
Standardmäßig zeigt es dort erst einmal leer an, erst durch die Auswahl des Eintrags werden die Daten in die eigentlichen Felder übernommen.
Könntest du mir bitte auch ein Abzug deines Logfiles aus der Zeit machen,
In den Einstellungen sollte zuvor "Create debug output for server" angekreuzt sein. -
@OliverIO: Funktioniert einwandfrei ohne über Wochen schon stabil! Danke für den Adapter.
Da du nach einer Wunschliste fragst:
Ich bin aktuell noch "Anti-Alexa" würde aber gerne eine einseitige Kommunikation erlauben. Beispiel: Es klingelt. => LMS-Player spielen eine ausgewählte MP3 ab und danach wieder die vorherige Playlist an der selben Stelle. => Das als Feature wäre schon cool...Dann könnte man das noch weiter denken: Der Sayit-Adapter kann eine .mp3 erstellen. Diese kann man per Skript auf den Media-Pfad für LMS kopieren. Diese soll dann wiedergegeben werden und danach wieder die vorherige Playlist.
Ich denke alle die LMS nutzen könnten so von einer Sprachausgabe profitieren.
Vielleicht hast du ja eine Idee das umzusetzen.
-
@iobroker_Alex genau die gleiche Anforderung hatte ich auch schon im Sinn.
https://forums.slimdevices.com/showthread.php?110527-2nd-Stream-to-mix-into-the-main-streamzwar nicht so wie ich mir das idealerweise vorstellen würde gibt es eine Alternative
Das Announcement-Plugin für den LMS
https://forums.slimdevices.com/showthread.php?109096-Announce-LMS-Announce-play-announcements-notifications -
@iobroker_Alex Wenn du möchtest kannst du gerne auch mal mein widgetset ausprobieren.
Das befindet sich aktuell noch in alpha und ist noch nicht über das repository installierbar, sonder nur direkt aus github heraus:https://forum.iobroker.net/topic/22859/neues-widgetset-für-squeezeboxrpc-bitte-testen
und
https://github.com/oweitman/ioBroker.squeezeboxrpcwidgets