Squeezebox mit Homematic steuern

abuzze
Beiträge: 2
Registriert: 22. Oktober 2011 21:42
SqueezeBox: Duet
SqueezeBox: Radio

Squeezebox mit Homematic steuern

Beitrag von abuzze »

Hallo
Ich möchte meine Squeezebox im Badezimmer von der Homematic (Haussteuerung) ansteuern. Licht an SB an Licht aus SB aus.Hat jemand erfahrungen damit? Und kann mir jemand ein Beispiel schreiben zb. Die Play und Stop Funktion. :roll:
GerDirkO
Beiträge: 1
Registriert: 13. April 2012 18:08
SqueezeBox: Radio
SqueezeBox Server läuft auf: Qnap TS-219P+

Re: Squeezebox mit Homematic steuern

Beitrag von GerDirkO »

Hallo,

keine Ahnung ob das noch irgendwie ein aktuelles Problem ist – vermutlich zwar nicht, aber falls jemand nochmal so was vor hat:

Es gibt prinzipiell die Möglichkeit zusätzliche Programme auf eine Homematic zu installieren und dann über Telnet-Steuerungsbefehle Anweisungen an einen Squeezebox-Server zu schicken.

Oder aber man nutzt einfach das Bordmittel 'Wget'

Dazu erstellt man ein Skript das bspw. so aussieht:
string stdout;
string stderr;
system.Exec("wget -O /dev/null -q http://192.168.1.10:9000/status.html?p0=power&p1=1&player=192.168.1.11")


Was nun passiert ist recht einfach: Der Server mit der IP 192.168.1.10 holt das Gerät mit der IP '192.168.1.11' aus dem Standby. - Mehr nicht!

Ich erkläre nun mal den Aufbau eines Skripts:
'string stdout;' & 'string stderr;'
//Für die Homematic unbedingt benötigt
ACHTUNG: Ohne diese kann die Homematic abstürzen oder Befehle ignorieren und muss dann neu gestartet werden!!!

system.Exec("
// Das System soll den Inhalt des ' (" ' und ' ") ' ausführen – hierbei handelt es sich um linuxtypische Befehle.

wget -O /dev/null
//wget lädt die URL herunter und schriebt den Inhalt nach /dev/null – Naja so wie jemand mit Kreide was in Granit fräst, denn wie jeder Linuxfreund weiß ist ' /dev/null ' nicht beschreibbar, es dient halt einfach dazu das wget auf die URL zugreift ohne schaden anzurichten.

-q
// sagt das es keinen Output geben soll (quiet)

http://[IP des Squeezeboxservers]:[Sein Port – üblich: 9000]
//welcher Server soll es sein

/status.html
//was soll aufgerufen werden? – status.html

?p0=[Befehl0]&p1=[Befehl1]&p2=[Befehl2]&p3=[Befehl3]&p4=[Befehl4]
//stellen alle die Parameter:
p0= bedeutet: Was soll grundsätzlich gemacht werden bspw. ' power ' wenn ich ein oder ausschalten will, ' play ' wenn die Playliste die geladen ist abgespielt werden soll oder ' mixer ' wenn ich die Lautstärke ändern will.
&p1= ist dann schon mal genauer
bei ' p0=power ' bewirkt die ' 1' das einschalten die ' 0 ' das ausschalten – der Befehl ist damit komplett und man kann noch den Player bestimmten
bei ' play ' sollte des nicht nötig sein (nutze den befehlt nicht)
' mixer ' erwartet hier was nun getan werden soll bspw. ' volume ' wenn man die Lautstärke kontrollieren will
&p2= ist nochmal eine Stufe weiter – bei ' ?p0=mixer&p1=volume ' kann hier nun gesagt werden ob ich einen Fixwert will bspw. will ich die Lautstärkestufe 25 dann einfach ' 25 ' eintragen.
Bei bestimmten befehlen wären dann natürlich noch ' &p3/4= ' dabei.

&player=[IP des zu steuernden Geräts] //hat man mehrere will man vermutlich sagen welches Gerät denn nun gemeint ist

") //schließt das ganze dann ab.

Eine komplette Liste der Befehle mit allem was so dazu gehört liefert die Hilfe des Squeezebox Servers. Zu erreichen über den ' Hilfe '-Link unten links
' Hilfe > Technische Informationen > The Squeezebox Server Remote Control/Squeezebox Server Web Interface '

Ich stelle hier nun einfach mal ein Beispiel dafür das die Squeezebox im Bad die Playlist 'Bad' mit der Lautstärke 25 abspielt.

string stdout;
string stderr;
system.Exec("wget -O /dev/null -q http://192.168.1.10:9000/status.html?p0=power&p1=1&player=192.168.1.11")

Einschalten

string stdout;
string stderr;
system.Exec("wget -O /dev/null -q http://192.168.1.10:9000/status.html?p0=mixer&p1=volume&p2=25&player=192.168.1.11")

Volume auf 25 setzen

string stdout;
string stderr;
system.Exec("wget -O /dev/null -q http://192.168.1.10:9001/status.html?p0=playlist&p1=play&p2=bad&player=192.168.1.11")

Playliste ' Bad ' starten.

Das ganze habe ich in drei Skripts gepackt die jeweils im Abstand von einer Sekunde starten (lediglich die Adressen, den Port und den Playlistnamen habe ich geändert.)
Das ganze in einem Skript zu starten habe ich auch auf verschiedene weisen versucht immer mit dem Ergebnis das der Player zwar eingeschaltet wurde, doch das war es dann, ich vermute einfach mal das der Server etwas Abstand zwischen den Aufträgen braucht.

Wenn man die Playlist (Songweise) mischen will geht das so:

string stdout;
string stderr;
system.Exec("wget -O /dev/null -q http://192.168.1.10:9001/status.html?p0=playlist&p1=shuffle&p2=1&player=192.168.1.11")

--- 0=aus; 1=Songweise; 2=Albumweise

Verlässt man nun das Bad, kann man mit
string stdout;
string stderr;
system.Exec("wget -O /dev/null -q http://192.168.1.10:9000/status.html?p0=power&p1=0&player=192.168.1.11")
in der Befehlskette, den Player einfach ausschalten.

Man könnte natürlich auch den Player um x Uhr startet, den Volume-Wert auf 0 setzten, eine Playliste starten und dann die Wiedergabe mit ' ?p0=pause&p1=1 ' pausieren, Volume wieder auf einen Wert setzen (bspw. 20/25) und danach erst die Lichtkopplung machen ( Licht an = ' ?p0=pause&p1=0 ' ; Licht aus = ' ?p0=pause&p1=1 '. Um X Uhr schaltet man dann den Player mittels ' ?p0=power&p1=0 ' wieder ab.

Ich hoffe dies ist dem ein oder anderen nützlich und macht das ganze etwas verständlicher.

Und denkt dran im Hauptmenü des Servers könnt Ihr unter ' Hilfe > Technische Informationen > The Squeezebox Server Remote Control/Squeezebox Server Web Interface ' die Befehle ansehen, allerdings gibt es da gerne einen Fehler, im Erläuterungsfeld wird dann mal geschrieben man müsse bspw. ' p1 ' mit ' 1 ' festlegen, dabei meinen die ' p2 ', wie es auch im obersten Bereich der Tabelle zu sehen ist.

PS: Der Inhalt von system.Exec("[...]") enthält keinen Zeilenumbruch
Tuxtom007
Beiträge: 5
Registriert: 29. April 2012 08:59
SqueezeBox: Radio
SqueezeBox Server läuft auf: Barebone-System, 18 Hgz Atom-Dual-Core, Win7 64Bit

Re: Squeezebox mit Homematic steuern

Beitrag von Tuxtom007 »

Hallo,

ich nutze auch die Hometativ für diverse Steuerungsaufgaben wie Heizung, Licht usw.

Allerdings läuft bei mir das ganze dann über einen seperaten Homeautomatisierungs-Server mit entsprechender Software drauf. Die Homematic-Zentrale ist für den somit nur die Schnittstelle in das Funktnetz.

Auf dem Server baue ich gerade eine zentrale Musikverteilung auf Basis des LMS mit Squeezeboxen inkl. zentralem Wecker, gesteuert und Virtualisiert von der Homeautomatisierungs-Software.
Ein Verknüpfung zu einem Homematic-Aktor währe darüber nur wenige Zeilen PHP-Script.

Da aber der LMS derzeit ziemlich rumzickt, komme ich mit dem Project nicht weiter.
prof.dr.m
Beiträge: 218
Registriert: 18. März 2011 14:09
SqueezeBox: Radio
SqueezeBox: Radio
SqueezeBox: Radio
SqueezeBox: Touch
SqueezeBox: Duet
SqueezeBox Server läuft auf: DS-109+
+Verbatim Pocket Drive 1,8" 250GB an SBT

Re: Squeezebox mit Homematic steuern

Beitrag von prof.dr.m »

Hallo GerDirkO
ich nutze zwar kein Homemagic, aber ein großes DANKE für deine ausführliche Beschreibung!
Dragonfly
Beiträge: 4
Registriert: 17. Mai 2012 12:09
SqueezeBox: Radio
SqueezeBox Server läuft auf: DiskStation

Re: Squeezebox mit Homematic steuern

Beitrag von Dragonfly »

Hallo an alle!
Hier http://www.fhz-forum.de/viewtopic.php?f ... 995#p64995 sind wir auch am basteln!

Habe dort auch beschrieben, wie man User und PWD in die URL intigriert.

LG Tom
abuzze
Beiträge: 2
Registriert: 22. Oktober 2011 21:42
SqueezeBox: Duet
SqueezeBox: Radio

Re: Squeezebox mit Homematic steuern

Beitrag von abuzze »

:D Danke für die Anleitung.
Aber wie kann ich direkt eine Internetradiostation starten anstatt einer Playlist? :shock:


Danke im vorraus und Grüße von der Spree
Dragonfly
Beiträge: 4
Registriert: 17. Mai 2012 12:09
SqueezeBox: Radio
SqueezeBox Server läuft auf: DiskStation

AW: Squeezebox mit Homematic steuern

Beitrag von Dragonfly »

Na den Sender in einer Playliste speichern.

Gesendet von meinem HTC Desire mit Tapatalk 2
Dragonfly
Beiträge: 4
Registriert: 17. Mai 2012 12:09
SqueezeBox: Radio
SqueezeBox Server läuft auf: DiskStation

Re: Squeezebox mit Homematic steuern

Beitrag von Dragonfly »

Hallo nochmal....

... der von GerDirkO angegebene Code für die HM ist fehlerhaft, da stdout und stderr nicht verwendet werden.

Richtig wäre:

Code: Alles auswählen

string stdout;
string stderr;
string url="http://user:password@192.168.125.1:9000/status.html?p0=playlist&p1=play&p2=test&player=192.168.125.2";
system.Exec("wget -q -O /dev/null " # url, &stdout, &stderr);
Marty
Beiträge: 2
Registriert: 4. April 2012 20:23
SqueezeBox: Touch
SqueezeBox: Radio
SqueezeBox Server läuft auf: Synology

Re: Squeezebox mit Homematic steuern

Beitrag von Marty »

Hallo zusammen,

war auch gerade auf der Suche nach der Möglichkeit meine SB Radio via html zu steuern.
Nutze dazu den Gira Homeserver und laut der Info Liste im LMS konnte ich auch schon einige Befehle erfolgreich ausführen.
Was ich noch nicht ganz verstehe, wieso bei den "Button" Kommandos, die das Benutzen der Fernbedienung simulieren, nur wenige Befehle funktionieren bei meinem Aufbau.
Hätte gerne volume_up/down und die playdisp_1-6 benutzt, leider tut sich da nix.
Hat jemand eine Erklärung dazu ?

Hier nochmal die Befehle vom LMS:

button <code> Simulate a button press from the infrared remote, where <code> is a function name per the Default.map file.

Valid button codes correspond to the functions defined in the Default.map file: add", "brightness_down", "brightness_toggle", "brightness_up", "done", "down", "fire", "jump_fwd", "jump_rew", "left", "left_repeat", "menu_browse_album", "menu_browse_artist", "menu_browse_genre", "menu_browse_music", "menu_browse_playlists", "menu_plugins", "menu_home", "menu_now_playing", "menu_playlist", "menu_pop", "menu_search_album", "menu_search_artist", "menu_search_song", "menu_settings", "muting", "numberScroll_0", "numberScroll_1", "numberScroll_2", "numberScroll_3", "numberScroll_4", "numberScroll_5", "numberScroll_6", "numberScroll_7", "numberScroll_8", "numberScroll_9", "pause", "play", "play_0", "play_1", "playdisp_0", "playdisp_1", "playdisp_2", "playdisp_3", "playdisp_4", "playdisp_5", "playdisp_toggle", "power_off", "power_on", "power_toggle", "repeat_0", "repeat_1", "repeat_2", "repeat_toggle", "right", "right", "scan_end", "scan_fwd", "scan_rew", "search", "shuffle_off", "shuffle_on", "shuffle_toggle", "sleep", "slimtrisButtonHandler_add", "slimtrisButtonHandler_down", "slimtrisButtonHandler_left", "slimtrisButtonHandler_play", "slimtrisButtonHandler_right", "slimtrisButtonHandler_up", "stop", "textsize_large", "textsize_small", "textsize_medium" (on displays that support it), "textsize_toggle", "titleFormat", "up", "volume_down", & "volume_up".

z.B. hab ich folgendes versucht:
http://192.168.1.2:9002/status.txt?p0=b ... %3Af5%3A5c

Mein Aufbau:
Synology NAS mit LMS auf aktuellstem Stand
SB Radio auch auf aktuellem Stand
Marty
Beiträge: 2
Registriert: 4. April 2012 20:23
SqueezeBox: Touch
SqueezeBox: Radio
SqueezeBox Server läuft auf: Synology

Re: Squeezebox mit Homematic steuern

Beitrag von Marty »

Nach ewigem testen, fast bis zum einschlafen hab ich es dann doch hingekriegt.
Es ist so einfach wenn man weiß wie ;)

Der 1.Befehl lautet: button
gefolgt von: preset_1.single (anstelle der 1 können die gewünschten Speicherkanäle 1-6 verwendet werden)

So sieht der funktionierende String aus:

http://192.168.1.2:9002/status.txt?p0=b ... %3Af5%3A5c

Der Player schaltet sich automatisch ein und startet den Programmplatz mit dem hinterlegtem Stream mit der zuletzt gewählten Lautstärke.


Wenn jemand den Volume up/down Befehl zum laufen bringt, wäre super zu wissen wie der lautet...

Gruß
Martin