[Modul] SqueezeBox

SDK Version Version
License Check Style Run Tests
Spenden

Symcon-Modul: SqueezeBox

Ermöglicht die Steuerung sowie die Darstellung der Zustände von SqueezeBox Geräten in IPS, in Verbindung mit dem Logitech Media Server.

Dokumentation

Inhaltsverzeichnis

1. Funktionsumfang

Discovery:

  • Einfaches Auffinden von Logitech Media Servern im lokalen Netzwerk.
  • Einfaches Einrichten von Konfiguratoren für gefundene Server.

Squeezebox Konfigurator:

  • Auslesen und darstellen aller im LMS und IPS bekannten Geräte und Instanzen.
  • Einfaches Anlegen von neuen Instanzen in IPS.

Logitech Media Server:

  • Auslesen un darstellen von Server-Informationen.
  • Auslesen von Datenbank Informationen.
  • Auslesen und bearbeiten von Server-Playlisten.
  • Laden von Server-Playlisten über das WebFront in einen (mehrere) Player.
  • Steuern des Scanner der Datenbank inkl. Darstellung des laufenden Modi vom Scanner.

SqueezeBox Player:

  • Steuern und Abfragen der diversen verschiedenen Zustände und Eigenschaften.
  • Abfragen, Laden, bearbeiten und speichern von der internen Playlist des Gerätes.
  • Synchronisierung steuern.
  • Fähigkeiten über das WebFront:
    • Modus: Play,Pause, Stop
    • Audio: Lautstärke mit Stummschaltung, und wenn vom Gerät unterstützt, auch Tonhöhe sowie Höhen und Bass.
    • Bedienung der 6 Preset-Tasten vom Gerät
    • Sleeptimer: Setzen und löschen des Timer.
    • Playlist: Trackwahl, nächster, vorheriger Track, Wiederholung und Zufallsmodus
    • Darstellung der Daten zum aktuellen Track: Titel, Album, Interpret, Stilrichtung, Cover etc…
    • Darstellen der Server-Playlisten sowie laden derselben auf Player.

Squeezebox Alarm (Wecker):

  • Auslesen und darstellen der Wecker einer Squeezebox.
  • Steuern der Wecker über das WebFront und PHP-Befehlen.

Squeezebox Battery:

  • Auslesen und darstellen von Werten der Stromversorgung und des Akkumulators.

2. Voraussetzungen

  • IP-Symcon ab Version 6.1
  • Logitech Media Server (getestet ab 7.9.x)
  • kompatible Player

3. Software-Installation

Über den ‚Module-Store‘ in IPS das Modul ‚SqueezeBox‘ hinzufügen.
Bei kommerzieller Nutzung (z.B. als Errichter oder Integrator) wenden Sie sich bitte an den Autor.
Module-Store

4. Einrichten der Instanzen in IP-Symcon

Nach der Installation über den ‚Modul-Store‘ fragt Symcon ob die enthaltende Discovery Instanz erstellt werden soll.
Werden Symcon und der Logitech Media Server allerdings nicht im gleichen physikalischen Netzwerk betrieben, wie z.B. Symcon hinter einer NAT, so kann diese Frage verneint werden.
Der Squeezebox Konfigurator muss in dieser Konstellation per Hand angelegt und sein dazugehöriger LMS Splitter manuell konfiguriert werden.

Die Einrichtung der Instanzen ist direkt in der Dokumentation der jeweiligen Module beschrieben.

5. Anhang

1. GUID der Module

Modul Typ Prefix GUID
LMSDiscovery Discovery LMS {28AC8A6C-4E03-43BE-9C3E-B8FEF78D374C}
LMSSplitter Splitter LMS {96A9AB3A-2538-42C5-A130-FC34205A706A}
LMSConfigurator Configurator LMC {35028918-3F9C-4524-9FB4-DBAF429C6E18}
SqueezeboxDevice Device LSQ {118189F9-DC7E-4DF4-80E1-9A4DF0882DD7}
SqueezeboxAlarm Device LSA {E7423083-3502-42C8-B244-2852D0BE41D4}
SqueezeboxBattery Device LSQB {718158BB-B247-4A71-9440-9C2FF1378752}

2. Datenaustausch

Funktion GUID
von Splitter zu Devices {EDDCCB34-E194-434D-93AD-FFDF1B56EF38}
von Devices zu Splitter {CB5950B3-593C-4126-9F0F-8655A3944419}

Der Datenaustausch erfolgt mit einem Objekt vom Typ LMSData:

Eigenschaft Typ Funktion
Address string MAC / IP-Adresse oder leer
Command array CLI Kommandos als Array
Data array Daten des Kommandos als Array

3. Changelog

Version 3.81:

  • Anzeige der Variable für Stummschaltung war defekt.

Version 3.80:

  • Mehr Statusvariablen können abgewählt werden.
  • HTML-Playlist ist bei neu angelegten Instanzen ab Werk ausgeschaltet.

Version 3.72:

  • Anzeige und Steuerung der Variable für Stummschaltung war defekt.

Version 3.71:

  • LSQ_AddToPlaylistByURL und LSQ_GetPlaylistUrl waren defekt.
  • Rückgabewerte von LSQ_PlayUrlEx, LSQ_ PlayUrlSpecialEx und LSQ_AddToPlaylistByUrlEx waren falsch.

Version 3.70:

  • Batterie-Instanzen können deaktiviert werden.
  • RegEx Fehler in Alarm/Wecker Instanzen führte zu Fehlermeldungen.
  • Änderungen der Alarmlautstärke von einem Alarm wurde in den Alarm/Wecker Instanzen nicht nachgeführt.
  • Discovery Instanz meldet wenn bei aktiven NAT kein Server gefunden wurde.
  • Bei der Wiedergabe von Remote-Quellen wurde die Positions-Variable nicht verändert, auch wenn die Remote-Quelle das Spulen/Suchen erlaubt hat.
  • Konvertierungsfehler sorgte für falsche/unvollständige Ausgaben bei LMS_GetFavorites.
  • Sync Variablen in den Player-Instanzen zeigte die verfügbaren Player nicht zuverlässig an.
  • Aktionen für Player, Batterie, Wecker/Alarm und Splitter-Instanzen.
  • Splitter hat sich beim starten von Symcon mehrfach verbunden.

Version 3.63:

  • Neue Statusvariablen in den Player-Instanzen für Dauer in Sekunden und Spielzeit in Sekunden.

Version 3.62:

  • LSQ_PlayUrlSpecial & LSQ_PlayUrlSpecialEX für besondere Streams wie spotify:playlist:....

Version 3.61:

  • Konfigurator hat teilweise falsche Einträge angezeigt.
  • Konfigurator für Battery-Devices war ohne Funktion.
  • Alle abgekündigten Funktionen entfernt.
  • Dokumentation aktualisiert.

Version 3.60:

  • Unter bestimmten Umständen wurde nicht erkannt das ein Player die Wiedergabe gestartet hat.
  • Bei aktuell nicht verbundenen Playern wird kein falsches Coverbild geladen.
  • Hat ein Player die Verbindung zum LMS verloren, so wurde die Power-Variable nicht korrekt gesetzt.
  • Connected Variable von der Player-Instanz entfernt, es wird jetzt der Status der Instanze bei nicht verbundenen Playern auf 104 (inaktiv) gesetzt.
  • Neue Instanz-Funktionen für Player (SetSync, UnSync und GetSync).
  • Layout der Konfigurationsseiten aufgeräumt.
  • Fehlende Übersetzungen in Variablenprofilen ergänzt.
  • Neue Statusvariable Master welche anzeigt ob ein Player ein Master einer Gruppe ist.
  • Neue Statusvariable um Sync-Members auszuwählen, oder Sync zu beenden.
  • Statusvariable Player wählen im Splitter ermöglicht die Auswahl von mehreren Playern für eine Sync-Gruppierung.
  • Splitter hat bei Verbindungsaufbau nicht zuverlässig die Playlisten geladen.

Version 3.51:

  • Discovery kommt auch mit Hostnamen zurecht.
  • Schreibfehler korrigiert.

Version 3.50:

  • Fix deprecated restore_include_path in Squeezebox-Battery Instanz.

Version 3.40:

  • Fix HTML-Playlist wurde immer neu in Variable geschrieben, auch bei keiner Änderung.
  • Discovery Instanz sucht nicht mehr selbstständig nach neuen Server.

Version 3.30:

  • Fix Fehlermeldungen im Wecker behoben.
  • Fix Fehlermeldung im Splitter bei deaktivierter HTML-Playlist behoben.
  • Zusätzlicher Fix für Fehlermeldung beim Profil der TrackList.

Version 3.23:

  • Fix Fehlermeldung beim Profil der TrackList

Version 3.22:

  • Anpassungen für den Module-Store

Version 3.21:

  • Fix Bitrate und Samplesize Datentypen

Version 3.20:

  • Release für IPS 5.1 und den Module-Store

Version 3.10:

  • Bugfix für Konfigurator wenn keine Batterie-Geräte vorhanden sind.

Version 3.00:

  • Release für IPS 5.0
  • Discovery-Instanz enthalten, welche einen LMS im Netzwerk automatisch findet.

Version 2.03:

  • Fixes für PHP 7.3

Version 2.02:

  • Fixes für Fehlermeldungen wenn der LMS-Scanner aktiv war.

Version 2.01:

  • Fixes für IPS 5.0

Version 2.0:

  • Komplett überarbeitete Version für IPS 4.3 und höher

Version 1.0:

  • Erstes offizielles Release

4. Spenden

Die Library ist für die nicht kommerzielle Nutzung kostenlos, Schenkungen als Unterstützung für den Autor werden hier akzeptiert:

PayPal:

Wunschliste:
Wunschliste

6. Lizenz

IPS-Modul:
CC BY-NC-SA 4.0

Hi,

danke für das wunderbare Modul.
Leider gibt es jedoch Probleme mit dem Alarm… ich habe sogar nach dem Upgrade alle Alarme und Player Instanzen gelöscht. Bekomme jedoch immer den selben Fehler:

Capture.PNG

Danach habe ich eine unanmed Instance und mein Root Knoten wird umbenannt.

IPS Version ?
Und wann kommt diese Fehler?
Michael

4.4 IP-Symcon 4.4, Ubuntu, 19/02/2018, 36a7b6fcaa27

Wenn ich eine Player Instanz auswähle und sage „Create Alarm“.

LMS Versiont ist übrigens recht aktuell 7.9.2 nightly von vor einigen Wochen.

Keine Ahnung was da bei dir falsch läuft.
Habe extra noch mal ein leeres IPS 4.4 neu installiert.
Öffne bitte einmal die Einstellungen vom LMSSplitter und wähle den Reiter Debug.
Dann eine Wecker-Instanz über den Konfigurator erzeugen. Eventuell kommt da etwas unerwartetes vom Server zurück.

Das dein Ubuntu nicht auf deutsch steht, ist so gewollt ?

Michael

Hallo Michael,

ja englisch ist gewollt. Pure Gewohnheit, da ich die Begriffe im englischen immer exakter finde und im Fehlerfalle findet man auch schnell etwas für eine Systemmeldung.

Keine Ahnung, was heute los war, aber diesmal klappte das Alarm anlegen.
Möglicherweise, weil ich den Splitter explizit geöffnet hatte?
Beim Alarm selber hatte ich zunächst noch einen Error 101 oder so ähnlich. Nach dem Symcon restart war auch der weg und alles sieht friedlich und schön aus.
Danke nochmal für den schnellen Support.

mhh… komisch. Da ich alles anlegen konnte und keinen Status 101 hatte.
Den Splitter kann man nicht explizit öffnen :eek:

Das geht nur im Client-Socket.
Wenn der aber inaktiv ist, kann der Konfigurator auch keine Geräte finden und dir anzeigen.

Irgendwas passt da also nicht.

Michael

Kann ich noch irgendwas testen und/oder debuggen?
Im Augenblick scheint ja alles zu laufen.
Ein kleiner Bug könnte noch vorhanden sein: All Alarms im LMS setzen hat keine Auswirkungen auf das Symcon Modul und kann auch per Request State nicht aktualisiert werden. Setze ich es in Symcon, zeigt mir der LMS es korrekt an.

Der globale Alarm an/aus?
Mhhh… schaue ich mir morgen an.

Wenn du weißt wie ich den Fehler beim erzeugen nachstellen kann, wäre das hilfreich.
Michael

Hoi Michi,

habe wieder ein alt bekanntes Problem, mit der neuen Version. Nach einem Server neustart funktionieren die Geräte nicht mehr muss immer den Socket trennen und wieder verbinden sowie rescan auslösen. Danach geht es.

wenn ich es auf Beta belasse läuft alles gut. Updaten geht leider nicht mehr.
sq.JPG

Das letzte mal hast du mir das Beta empfohlen da es darin behoben ist. Hattest auch Recht. die Beta läuft super :slight_smile:

Danke

Liebe Grüsse

Manuela

Der aktuelle Master ist 1:1 die alte Beta4.3.
Darum gibt es den Beta Zweig auch nicht mehr.
Da hat sich nichts geändert.
Sicher das das Modul aktuell ist?
Michael

Momentan benutze ich die beta.

Gesendet von iPhone mit Tapatalk

Die Beta gibt es nicht mehr.
Das ist die Master geworden…
Michael

Danke mit dem Master Zweig läuft es.

<3

Merci

Gesendet von iPhone mit Tapatalk

Wo und wie setzt du das den im LMS, über das WebFront des LMS ?
Das funktioniert tatsächlich nicht, fix kommt nachher.

Michael

Edit: Ist jetzt online.

Super, all alarm geht nun :slight_smile:

Ich habe nun mal eine weitere Alarm Instanz angelegt. Diese zeigt mir auch den Fehler 101 an:


TXT: 08/05/2018 19:02:14.00 | Send LMSData->Address | 96:ad:f0:XX:XX:XX
HEX: 08/05/2018 19:02:14.00 | Send LMSData->Address | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
TXT: 08/05/2018 19:02:14.00 | Send LMSData->Command:0 | alarm
HEX: 08/05/2018 19:02:14.00 | Send LMSData->Command:0 | 61 6C 61 72 6D 
TXT: 08/05/2018 19:02:14.00 | Send LMSData->Command:1 | update
HEX: 08/05/2018 19:02:14.00 | Send LMSData->Command:1 | 75 70 64 61 74 65 
TXT: 08/05/2018 19:02:14.00 | Send LMSData->Data:0 | id%3A206065c8
HEX: 08/05/2018 19:02:14.00 | Send LMSData->Data:0 | 69 64 25 33 41 32 30 36 30 36 35 63 38 
TXT: 08/05/2018 19:02:14.00 | Send LMSData->Data:1 | dow%3A0%2C1%2C2%2C3%2C4%2C5%2C6
HEX: 08/05/2018 19:02:14.00 | Send LMSData->Data:1 | 64 6F 77 25 33 41 30 25 32 43 31 25 32 43 32 25 32 43 33 25 32 43 34 25 32 43 35 25 32 43 36 
TXT: 08/05/2018 19:02:14.00 | Send LMSData->needResponse | true
HEX: 08/05/2018 19:02:14.00 | Send LMSData->needResponse | 74 72 75 65 
TXT: 08/05/2018 19:02:14.00 | Response LMSData->Address | 996:ad:f0:XX:XX:XX
HEX: 08/05/2018 19:02:14.00 | Response LMSData->Address | XXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
TXT: 08/05/2018 19:02:14.00 | Response LMSData->Command:0 | alarm
HEX: 08/05/2018 19:02:14.00 | Response LMSData->Command:0 | 61 6C 61 72 6D 
TXT: 08/05/2018 19:02:14.00 | Response LMSData->Command:1 | update
HEX: 08/05/2018 19:02:14.00 | Response LMSData->Command:1 | 75 70 64 61 74 65 
TXT: 08/05/2018 19:02:14.00 | Response LMSData->Data:0 | id:206065c8
HEX: 08/05/2018 19:02:14.00 | Response LMSData->Data:0 | 69 64 3A 32 30 36 30 36 35 63 38 
TXT: 08/05/2018 19:02:14.00 | Response LMSData->Data:1 | dow:0,1,2,3,4,5,6
HEX: 08/05/2018 19:02:14.00 | Response LMSData->Data:1 | 64 6F 77 3A 30 2C 31 2C 32 2C 33 2C 34 2C 35 2C 36 
TXT: 08/05/2018 19:02:14.00 | Response LMSData->needResponse | true
HEX: 08/05/2018 19:02:14.00 | Response LMSData->needResponse | 74 72 75 65 


Ist im Moment reproduzierbar. Ich lösche den Alarm, der Fehler kommt wieder wenn ich den Alarm aufmache. In der Kopfzeile steht: Instance in an unkown status with code 101.

Mesages:
08/05/2018 19:02:14 | KernelMT | InstanceManager: Error for Instance #19699, Message EM_CHANGEACTIVE: <br />
<b>Warning</b>: Creating default object from empty value in <b>/var/lib/symcon/modules/IPSSqueezeBox/SqueezeBoxAlarm/module.php</b> on line <b>561</b><br />
<br />

<b>Catchable fatal error</b>: Argument 1 passed to LSA_AlarmList::Update() must be an instance of LSA_Alarm, instance of stdClass given, called in /var/lib/symcon/modules/IPSSqueezeBox/SqueezeBoxAlarm/module.php on line 562 and defined in <b>/var/lib/symcon/modules/IPSSqueezeBox/SqueezeBoxAlarm/module.php</b> on line <b>281</b><br />

08/05/2018 19:02:14 | KernelMT | InstanceManager: Error for Instance #19699, Message EM_CHANGECYCLICTIMEFROM: <br />
<b>Fatal error</b>: Call to a member function ArrayToTime() on boolean in <b>/var/lib/symcon/modules/IPSSqueezeBox/SqueezeBoxAlarm/module.php</b> on line <b>584</b><br />

Fehler gefunden, Fix online.
Der entschiedene Hinweis fehlte :wink:

Dieses Verhalten tritt nur auf, wenn im Player kein Wecker eingerichtet ist.

Michael

Hi Michael,

danke für deinen unermüdlichen Einsatz!!
Ja, die Instanzen werden nun auch für Radio Player angelegt, welche aktuell keinen Alarm haben… jedoch…
das ganze dauerte ungewöhnlich lang, so dass ich versehentlich 3 Instanzen angelegt hatte.
Zwischendurch war sogar der gesamte Strukturbaum leer. Ich war schon leicht geschockt… Nach dem Öffnen waren dann 3 Instanzen da von denen eine unbenannt war und weniger Inhalt als die 2 korrekt angelegten hatten.

Das Log sah so aus:

Deine Fehler sehen immer merkwürdiger aus :slight_smile:
Zumal die Fehler bedeuten dass in einer IPS Funktionen Daten fehlen.
Kannst du dazu einen Debug der Wecker Instanz liefern? Weil dort sollten diese fraglichen Daten auftauchen.
Wenn bei dir aber allgemein alles träge ist, kann es auch einfach ein Laufzeitproblem sein. Hast dein IPS genug ‚Dampf‘ ?
Oder sind gar alle PHP-Slots belegt?
Da sind einige Meldung mit No answer im Log.
Und die ganzen InstanceManager Meldungen sollten da auch nicht auftauchen, außer irgendwas ‚überholt‘ oder blockiert sich da gegenseitig.
Michael