NEWS
Test/Support Adapter SqueezeboxRPC
-
@killroy2 ich teste mal genau mit den Einstellungen
Auch schau ich mir das npm Paket mal an.
Nicht das beim deployment was schief ging -
@killroy2 Funktionsweise ist das die Werte über die Maus Position berechnet werden und das Volume dann an den lms Server gesendet wird. Die visuelle Aktualisierung des Balkens erfolgt erst wenn der Server die neue Lautstärke meldet.
Es kann ja auch sein das an einem anderen Gerät die Lautstärke geändert wird. -
ich nutze überwiegend chrome und hab da wenig Probleme
Ich habe ebenfalls mit Chrome ansonsten kaum Probleme. Nicht umsonst ist er mein Standardbrowser geworden .
Allerdings verbraucht Iobroker im browser immer mehr Speicher mit der Zeit. Den Reiter oder besser den ganzen Browser schließen und neu öffnen hilft da.
Guter Hinweis, danke! Nach einem Schließen des Browsers konnte ich die Datenpunkt-Inhalte der Favoriten bestens lesen.
Im Nachhinein: Mein Test 'Chrome gegen Firefox/Edge/Opera' war wohl ungewollt unfair. Chrome lief bereits seit Stunden, während die anderen Browser gerade mal einige Sekunden Historie hinter sich hatten.
-
Hallo OliverIO,
seit über 12 Jahren bin ich ein bekennender SqueezeBox-Anhänger. Ich hatte oder habe noch die folgenden SqueezeBox-Varianten im Einsatz:
- SqueezeBox Classic
- SqueezeBox Duet
- SqueezePlay auf Windows PC
- Google Chromecast via ChromeCast Bridge
- Yamaha Receiver via AirPlay Bridge
- Webradio, Fire TV, Fernseher via UPnP/DLNA Bridge
- Handys/Tablets via BubbleUPnP App und UPnP/DLNA Bridge
Mein LMS läuft auf einem Windows 10 PC.
Vor vielen Jahren (ich weiß schon gar nicht mehr wann genau) habe ich unter Visual Basic 5.0 auf Basis des Command Line Interface über tcp/ip Programme geschrieben, die von außen auf eine SqueezeBox-Gerätschaft einwirken können:
- Wenn jemand das Badezimmer betritt, wird zufallsgesteuert eine Zufallsplaylist oder ein Favorit (= Radiosender) auf der Badezimmer-Squeezebox gestartet.
- Von einem PC aus kann ein "Doppelwecker" für die Schlafzimmer-SqueezeBox gestellt werden. Doppelwecker bedeutet, dass zur eingestellten Zeit zunächst ein deftiger "Sound" abläuft (Hahn, Motorsäge, Jimi Hendrix, ...) und dass 90 Sekunden später eine Zufallsplaylist oder ein Favorit (= Radiosender) gestartet werden.
- Per nächtlichem Lauf werden per Zufall die "Sounds und die Playlists/Favoriten für den "Doppelwecker" eingestellt.
Alle drei Programme sind immer noch im intensiven Einsatz.
Da mir mittlerweile die verwendete Programmierumgebung unter Windows 10 weg bricht (oder gar schon weg gebrochen ist), denke ich schon seit längerem über eine Neuprogrammierung dieser Programme nach. In den letzten Wochen habe ich erste und auch erfolgreiche Erfahrungen mit ioBroker gemacht. Daher kam der Logitech Squeezebox Adapter zunächst in Betracht. Da dort jedoch keine Favoriten-Behandlung enthalten ist, war er auch schnell wieder außer Betracht.
Vor wenigen Tagen bin ich nun über Deinen SqueezeBox RPC Adapter gestolpert. Und schon kam Freude bei mir auf. Von der "Buchform" her erfüllt er die Anforderungen für meine Neuprogrammierung. Erste Ein- oder Zwei-Zeilen-Tests belegten, dass er auch, hält was er verspricht. Und ein Blick ins Test-Forum vermittelte mir den Eindruck, dass er trotz mancher noch existierender Fehlerlein für eine Testversion einen sehr stabilen Zustand erreicht hat. Und die Reaktionsgeschwindigkeit und die Hilfsbereitschaft des Entwicklers im Forum haben mich sehr beeindruckt.
Kurzum, lieber OliverIO: Herzlichen Dank für die Bereitstellung Deines Adapters! Und herzlichen Glückwünsch zur erreichten Funktionalität und Stabilität Deines Adapters!
Wer z.B. mal auf der tcp/ip Command Line Schnittstelle den Favoritenbaum durchwandert hat, kann einschätzen, wieviel Arbeit und Gehirnschmalz Du in Deinen Adapter investiert hast, und wie einfach im Vergleich dazu mit Deinem Adapter eine Wanderung durch den Favoriten-Zweig im Objektbaum nun realisiert werden kann. Das ist einfach super!
Ich werde also demnächst nach und nach tiefer in das SqueezeBox RPC Thema einstiegen. Ich denke, wir werden uns in nächster Zeit des Öfteren lesen
Schönen Gruß nach Norden
hsteinme -
@hsteinme vielen dank für dein Lob. Man macht ja sowas ersteinmal um den eigenen anwendungsfall zu erfüllen. Klar hat der Adapter besonders die Widgets noch Haken, aber so nach und nach bekommen wir die raus
-
Hat von euch jemand zufällig ein Multiroom System mit einer Logilink USB Karte am Laufen?
-
@Hansi1234 ich selbst nicht.
Für Server hab ich einen raspi 3
Und als Satelliten diverse raspi Zero mit WLAN und jeweils einen phat dac
https://www.amazon.de/s/?ie=UTF8&keywords=phat+dac&index=aps&tag=hydrdespg-21&ref=pd_sl_18qzxjpk7r_e&adgrpid=69979135614&hvpone=&hvptwo=&hvadid=352620989960&hvpos=1t1&hvnetw=g&hvrand=14675112472385381726&hvqmt=e&hvdev=m&hvdvcmdl=&hvlocint=&hvlocphy=1004054&hvtargid=aud-840099857932:kwd-294921356380&hydadcr=11368_1814911&gclid=CjwKCAiAjMHwBRAVEiwAzdLWGLuSkpQvc97w9Q9svBpFNPkmD9jhpKENq6UQwEUSTBCTvTIbenGYkxoC8n8QAvD_BwEAls Betriebssystem ein für sd Karte angepasstes
Raspberry https://www.picoreplayer.org/
In diesem kann man den logitech Media Server mit aktivieren (also nur für den Server)
das Betriebssystem lädt auf dem Zero in ca 15 SekundenVoll multiroom fähig
-
@killroy2
so ich kam dem problem etwas näher. mir ist es nicht aufgefallen, da ich nicht mit krummen werten gearbeitet habe.
Das Problem liegt an der Einstellung der Segmente.
wenn mann von den eingestellten Segmenten eines abzieht und 100 durch das Ergebnis teilt, dann dürfen keine krummen Werte rauskommen, da der LMS hier nur ganze Werte akzeptiert.
Wenn man aber diesen Wert wieder in Segmente umrechnen möchte, dann kommt die falsche Anzahl an leuchtenden Segmenten heraus.
Leider nicht so einfach zu beschreiben.
Die beste Anzahl an Segmente ist:
Ein vielfaches von 5 + 1.
Also: 6,11,16,21
Ich werde dazu die Doku erweitern und muss mal schauen, ob ich die Regel in den Editor mit rein bekomme, so dass man gar keine falsche Anzahl von Segmente einstellen kann.
Wer es nachrechnen möchte hier zum nachvollziehen:Segmente 8
Höhe des Volumebar 360pixel
Die obere Tabelle mit ungerundeten Zahlen, welche LMS aber nicht verarbeitet (bzw. muss ich auch mal noch tiefer drin prüfen)
Die untere Tabelle ist, was beim berechnen der leuchtenden Segmente herauskommt. -
Eine Playlist lösche ich derzeit über
setState( 'xxx.cmdGeneral') , '"playlist", "clear"');
Kann es sein, dass ich eine bessere/schönere/andere/... Möglichkeit übersehen habe?
-
@hsteinme ne aktuell nicht. das ist der richtige Befehl.
Die Anzeige der Playlist habe ich mal begonnen, aber aktuell nicht fortgesetzt,
da ich das vom Template nicht so flexibel hin bekomme, das jemand sein eigenes Design da drauf legen kann. -
@OliverIO
Okay, danke! -
@OliverIO
Bei 15+1 hast du doch auch ungerade Werte.
Kannst du die Rückmeldung nicht so berechnen wie das Kommando hin?
Also die Anzahl der anzuzeigenden Segmente ist das ganzzahlige oder gerundete Ergebnis der Fliesspunktberechnung:
Rückmeldung / ( 100 / (N_Segmente -1) )Bei mehr als 100 Segmenten gibt es ein Problem, das wird korrekt von der Gui ausgeschlossen.
-
15+1 stimmt, auch keine geraden Werte
Das Problem ist, das der lms immer die Werte nach dem Komma abschneidet und dadurch bei hin und zurück nicht die gleichen Werte ankommen. Jetzt könnte man natürlich die Segmente passend mit unterschiedlichen Höhen darstellen, aber das sieht auch hässlich aus.Ich könnte hier mal die verschiedenen Formeln aufschreiben, evtl. finden wir noch eine andere Lösung.
-
Du kannst den Wert zum LMS selber runden und sicherstellen dass die Anzeige mit dem Wert die gleiche bleibt. Sollte nicht so kompliziert sein.
-
@killroy2 ob ich runde oder der lms es für mich macht ist eigentlich egal.
Das runden führt aber dazu, das auf Basis des zurück gemeldeten Wertes nicht mehr auf das Segment schließen kann, was eigentlich geklickt wurde.
das siehst du in der kleinen Excel, die ich oben eingeblendet habe.
Bei deinen Einstellungen ergibt ein Klick auf des 2 Segment einen Lautstärkepegel von 28,5714%
Durch die Rundung werden daraus dann 28% glatt.
Bei der Berechnung, was da leuchtet, ergeben aber 28% glatt nicht 2 sondern 1,96.
Hier könnte ich nun auch runden, aber ich habe noch nicht getestet, ob das für alle Fälle auch stimmt.
Parallel habe ich heute noch eine 2 Berechnungsmethode eingebaut, die aber auch wieder ihre Vor- und Nachteile hat. -
@hsteinme sagte in Test Adapter SqueezeboxRPC v0.8.x Latest:
Wenn jemand das Badezimmer betritt, wird zufallsgesteuert eine Zufallsplaylist oder ein Favorit (= Radiosender) auf der Badezimmer-Squeezebox gestartet.
Meine Migration dieses Programms auf den ioBroker und den Squeezebox RPC Adapter ging "rasend schnell" - im Vergleich zu meiner früheren Implementation über die tcp/ip Command Line Schnittstelle. Den wesentlichsten Zeitgewinn brachte dabei - wie früher schon vermutet - der durch den Adapter gegebene bequeme Weg, den Favoriten-Baum zu durchwandern. Dafür sei dem Adapter-Autor nochmals herzlich gedankt.
Die Stromversorgung meiner Squeezebox Duet im Bad hängt an der Stromversorgung der Beleuchtung. Wird die Beleuchtung eingeschaltet, fährt die Squeezebox hoch und verbindet sich zum LMS. Das Zustandekommen der Verbindung wird durch einen geänderten Eintrag in squeezeboxrpc.0.Players.xxxx.Connected dokumentiert. Diesen Wechsel frage ich ab und starte zufallsgesteuert die Musikausgabe. Zu diesem Wechsel sind mir zwei Punkte aufgefallen:
-
Es dauert lange, bis der Connected-Status aktualisiert wird, zuweilen bis zu 30 Sekunden. Kann ich durch Drehen an einem der Werte in den Timer-Settings der Konfiguration hierauf positiven Einfluss nehmen?
-
Es kommt leider gelegentlich vor, dass trotz bestromter Squeezebox der Connected-Status nicht aktualisiert wird (gefühlt 10-15% der Einschaltvorgänge). In meinem Programm sehe ich hier keine Möglichkeit der Einflussnahme. Siehst Du, OliverIO, noch interne Stellschrauben im Adapter, die dieses Problem zumindest entschärfen könnten?
-
-
@hsteinme
Habe das gerade bei mir getestet.
Wenn der Player nur kurz disconnected ist, dann ist der Reconnect innerhalb ca 10 Sekunden wieder da.
Wenn der Adapter allerdings merkt, das der Player vom LMS offiziell als Disconnected geführt wird, dann werden alle Pollingabfragen gestoppt und erst die Regelmäßige Serverabfrage, die alle 30 Sekunden läuft, reaktiviert den Client im Adapter wieder.
Die 30 Sekunden kannst du in den Instanzsettings unter Timer-Settings / Serverrefresh (sec) default: 30 anpassen.
Auf meiner Todo-Liste habe ich noch eine Verbesserung stehen, die für bestimmte Ereignisse das Polling verbessert, in dem der LMS einen dann zeitnah aktiv informiert, wenn so etwas passiert. So könnte man das Polling bzw. den dadurch anfallenden Netzverkehr verbessern.
Allerdings sind dann wieder zusätzliche node-module notwendig, die den Speicherverbrauch weiter erhöht.
Bei mir laufen die Clients alle rund um die Uhr, von daher reichen bei mir die 30 Sekunden.Aktiviere mal mittels dem History-Adapter auf dem Connected-Datenpunkt die Historie, dann siehst du genau, wann sich da etwas verändert und vergleiche den Zustand mit der Anzeige in der LMS-Gui im Dropdown oben rechts.
Allerdings reagiert die Gui-Aktualisierung im LMS etwas träger wie tatsächlich die Datenpunkt aktualisierung. Aber du siehst, ob der LMS den Client erkennt und mein Adapter nicht. Dann müssten wir da mal tiefer reinschauen -
@killroy2 So die 0.8.26
ist draussen. Mit den erfolgten Anpassungen habe ich nun eine diverse Anzahl von Segmenten erfolgreich getestet. Weiterhin habe ich einen neuen Berechnungsmodus eingeführt (segstep=bisher, exact=neu). Details dazu befinden sich in der widget-Dokumentation zu volumebar -
@OliverIO said in Test Adapter SqueezeboxRPC v0.8.x Latest:
Bei deinen Einstellungen ergibt ein Klick auf des 2 Segment einen Lautstärkepegel von 28,5714%
Durch die Rundung werden daraus dann 28% glatt.
Bei der Berechnung, was da leuchtet, ergeben aber 28% glatt nicht 2 sondern 1,96.
Hier könnte ich nun auch runden, aber ich habe noch nicht getestet, ob das für alle Fälle auch stimmt.
Parallel habe ich heute noch eine 2 Berechnungsmethode eingebaut, die aber auch wieder ihre Vor- und Nachteile hat.Wenn ich einen Wert 0.5 für Volume eingebe, rundet er auf.
Bekannt ist:
round ( 1/7 * anzuzeigendeBalken) ist gleich exakt dem Rückgabewert.Statt über die Anzahl der Balken zu iterieren kann man die Suche um exakt berechneten Wert (1,2) beschränken.
-
@killroy2 welcher exakt berechnete Wert. Der einzige Kommunikationsweg zwischen Klick und Darstellung der Anzeige ist der Lautstärkewert,
und dieser wird nicht exakt weitergegeben