Hallo,
Für Anwender findet sich eine super Doku hier:
SB-FHEM AnwenderdokuFür Entwickler:
siehe auch:
http://www.fhemwiki.de/wiki/DevelopmentGuidelinesAVDie jeweiligen Dateien zur Unterstützung von Squeezebox sind nun im Contrib Bereich von FHEM zu finden:
https://github.com/mhop/fhem-mirror/tree/master/fhem/contrib97_SB_SERVER.pm und 98_SB_PLAYER.pm
Da es immer wieder Schwierigkeiten beim Download aus dem Contrib Bereich gibt:
bitte bei den Modulen auf den Butten "RAW" oben rechts klicken, dann alles markieren und kopieren und das Kopierte in eine Text Datei einfügen. Diese dann speichern
Die Unterstützung für Squeezebox ist zweistufig: ein Modul für den Server und je ein Modul für die Player. Bitte also beide angehängten Dateien in die ./FHEM kopieren und dann mittels shutdown restart FHEM neu starten.
Anlegen muss man nur den Server.
define <name> SB_SERVER <serverip[:cliserverport]> [RCC:rccname] [WOL:wolname] [USER:username] [PASSWORD:password]
Bitte beachten: der CLI-Port ist optional und sollte nur angegeben werden, wenn man diesen auf dem SB-Server verändert hat. Standardmässig ist das 9090
RCC: falls man für den Rechner, auf dem der SB-Server läuft in FHEM ein RCC Device angelegt hat, so kann der FHEM-SB-Server diesen aufwecken. Sprich man klickt in FHEM beim SB-Server auf on und falls der PC aus ist, wird er per RCC aufgeweckt. Der name hinter dem Doppelpunkt ist der name des FHEM-RCC-Devices. Bitte
RCC: angeben.
WOL: gleich wie RCC nur halt mit einem WOL Modul
[USER:username] [PASSWord:password] diese beiden Parameter sind optional. Auf SB-Server seiten kann man die Kommunikation über den CLI Port mittels Usrename und Passwort verriegeln. Falls man dies getan hat, dann hier die beiden Parameter angeben.
Die jeweiligen Player werden selbst erkannt und automatisch angelegt, falls man autocreate eingeschaltet hat. Also einfach den Server anlegen und zurücklehnen. Nach maximal 1 Minute sollten alle Player automatisch angelegt sein.
Falls autocreate ausgeschaltet ist, dann kann man die Player auch manuell anlegen:
define <name> SB_PLAYER <player_mac_adress]> <ampl:FHEM_NAME> <coverart:FHEMNAME>
Die jeweilige MAC Adresse des Players findet man im SB-Server unter Einstellungen
optional kann man ampl:xxx angeben. Hier gibt man bei XXX den Namen eines FHEM Elementes an, das auf on und off reagiert. Dies ist nützlich um z.B. einen Verstärker ein / ausschalten zu können. Bitte auch das amplifier Attribut beachten. Dieses kann man auf on oder play setzen. Der Versärker wird denn entweder mit dem Player ein/ausgeschaltet (on/off) oder bei play/pause vs. stop. Spricht bei playing und paused ist der Verstärker an, bei stopped ist er aus. Somit spart man sich die notifies und entsprechende Rechenlast auf dem FHEM Server
optional kann man coverart:XXX angeben. Unter XXX gibt man den Namen eines FHEM weblink image elementes an. Der Player aktualisiert dann jeweils den Link auf das aktuelle Coverart Bild, so dass man dieses z.B. im Floorplan anzeigen kann.
Mit den Attributen coverartheight und coverartwidth kann man die Breite bzw. Höhe bestimmen.
Sprich einfach ein weblink Elemt mit define mylink weblink image Link.zu.einem.bild.jpg anlegen. Der SB_PLAYER aktualisiert dann den jeweiligen Image Link so dass das aktuelle Coverart z.B. im Floorplan angezeigt wird.
Bitte die Attribute für Höhe und Breite des weblink elementes NICHT verwenden. Größe wird durch den SB_PLAYER gemacht. Sonst geht das nicht
Das
Player unterstützt bisher folgende Kommandos (die via set <name> angegeben werden
play --> startet die Wiedergabe
stop --> Stoppt die Wiedergabe
pause --> toggelt die Wiedergabe (wenn Pause dann Play und wenn Play dann Pause)
pause 1 --> setzt den Player auf Pause egal wie der Zustand zuvor war
pause 0 --> setzt den Player auf Un-Pause egal wie der Zustand zuvor war
channelUp --> spielt das nächste Stück (next)
channelDown --> spielt das vorherige Stück (prev)
volUp --> erhöht die Lautsärke um den Wert, der im Attribut volStep angegeben ist. Per Default 10
volDown --> veringert die Lautsärke um den Wert der im Attribut volStep angegeben ist
volume xx --> xx sollte ein Wert zwischen 0 und 100 sein und setzt die Lautstärke auf den angegebenen Wert (ist im Prinzip Prozent)
volumeStraight -_> gleich wie volume
mute --> schaltet mute um: setzt auf mute, wenn unmuted und setzt auf unmute wenn muted
on --> schaltet den Player ein, falls dieser das unterstützt. Wenn nein, dann macht es play
off --> schaltet den Player aus falls dieser das unterstützt. Wenn nein, dann macht es stop
shuffle on --> schaltet shuffle ein
shuffle off --> schaltet shuffle aus
repeat off|one|all --> schaltet repeat für die aktuelle Playlist in den jeweiligen Modus
show --> zeigt Text auf dem Player an. Dabei folgendes Format:
set sbradio show line1:text der ersten Zeile line2:text der zweiten Zeile duration:ss
das ist glaube ich selbsterklärend
nach duration verschwindet der Text dann wieder
sleep xx --> schaltet den Player nach XX Sekunden aus (und fadet vorher runter)
favorites --> hier wird eine Drop-Down Liste angezeigt, die alle Favoriten der Squeezebox erhält. Durch Auswahl eines dieser Einträge wird die Playlist geleert und dieser Eintrag gespielt.
talk xxx --> der jeweilige Player spricht den Text, der angegeben wurde
set myplayer talk Hallo Welt ich war da
playlist track|album|artist xxx --> hiermit kann man gezielt etwas aus der Datenbank anspielen. Der SB-Server scheint aber etwas pciky zu sein bezgl. korrekter Schreibweise.
set myplayer playlist track Satisfaction
set myplayer playlist album Best of
set myplayer playlist artist Whitesnake
playlist genre artist album --> spielt die jeweils angebene Tracks, die auf das Suchkriterium passen. Stern ist wildcard
set myplayer playlist * Whigfield *
statusRequest --> macht einen Update der Readings
sync --> hier wird eine Liste der Player angezeigt, mit denen man eine Gruppe bilden kann (Multiroom). Der angezeigte Player ist dann der Master
unsync --> nimmt den Player wieder aus der Gruppe raus
playlists --> hier werden, wie bei den Favoritn, die Serverseitig definierten Playlisten zu Auswahl angezeigt
Und dann kann man bis zu zwei
Alarme setzen
set sbradio alarm1 set 5 12:23:17
set sbradio alarm2 set 4 17:18:00
der erste Parameter ist der Wochentag (mit So = 0), der zweite ist die Uhrzeit
Löschen der Alarme
set sbradio alarm1 delete
set sbradio alarm2 delete
Lautsärke setzen mit:
set sbradio alarm1 volume xx
set sbradio alarm2 volume xx
Enable / Disable des Alarms mit:
set sbradio alarm1 enable
set sbradio alarm2 enable
set sbradio alarm1 disable
set sbradio alarm2 disable
Alle Alarme ein|aus
set sbradio allalarms enable
set sbradio allalarms disable
Und als Schmankerl kann man auch CLI Kommandos an den Player schicken
cliraw --> schickt Kommandos an den Player. Die jeweilige Player-ID (MAC Adresse) wird automatisch eingefügt.
Bsp.
set sbradio cliraw mixer volume 50
Also hier die Player-ID NICHT einfügen; sie wird vom Modul eingefügt.
Die Antwort des Players auf die Anfrage findet sich dann im lastunknowncmd Reading des Players.
Der Player besitzt das Attribut donotnotify. Mit diesem kann man Einstellen, ob der Player ein FHEM Notify bei jeder Änderung der Readings lostritt. Per default ist das ausgeschaltet; der Player erzeugt dann nur ein Notify, wenn sich state (on/off) ändert aber nicht, wenn z.B. das nächste Stück angespielt wird. Ein Notify erzeugt signifikante Rechenlast im FHEM Server und so mancher Radio Sender wechselt ja alle paar Sekunden die Anzeige. Jeder dieser Anzeigenwechsel würde dann zu einem Notify auf dem FHEM Server führen.
Am Player kann man auch die Zielsprache der talk Funktion einstellen: de, en, fr, ... für die jeweilige Sprache. der hier gesetzte Wert wird so 1.1 an die Google TTS Engine übergeben. In der FHEM Oberfläche kann man ein paar Sprachen auswählen. Wer eine andere Sprache möchte, dann einfach das attribut in der fhem.cfg manuell setzen.
Das Attribut ttslink enthält den Pfad zur TTS Engine. Als Default ist hier Google eingestellt.
Mit dem Attribut volumeLimit kann man eine maximale Lautstärke vorgeben, die bei den set Kommandos volume und volumeUp beachtet wird. Es können Werte von 0 bis 100 vergeben werden. Ein Limit von 100 bedeutet Funktion ist aus.
Der
Server unterstützt folgende Kommandos
renew --> erneuert die Verbindung zum Server, falls dieser down war
abort --> stoppt die Verbindung zum Server
cliraw --> hiermit kann man beliebige Kommandos des CLI Interface an den Server schicken
rescan --> startet das Durchsuchen der Musikdatenbank des SB-Servers
statusRequest --> holt alle möglichen Infos vom Server und den Playern und aktualisiert dann die Readings
ToDo:
- Szenario ohne SB Server / mit Playern die mit mysqueezebox.com verbunden sind unterstützen
- die URL der Cover-Art holen, so dass man die Cover Art dann z.B. in einem Floorplan anzeigen kann.
Nebenbemerkung:
der SB_SERVER hat kein state Reading. Die Variable power zeigt on | off. Die Variable STATE zeigt connected | disconnected an. Dies sagt aber nur etwas darüber aus, ob FHEM überhaupt auf Ethernet zugreifen kann. Wenn man den SB-Server PC in hibernate fährt, bleibt STATE auf connected. Wenn man also Verstärker etc. schalten will, dann muß man das power Reading nehmen.