Sonos mittels PHP Skript steuern
Einklappen
X
-
Das betrifft leider nahezu alle Streaming Anbieter. Die technischen Adressen dahinter sind meistens dynamisch, da sich ja auch der Inhalt der PL ständig ändert.Anmerkung: Bitte keine Fragen mehr per PN sondern direkt im Forum damit andere mithelfen und mitprofitieren können.
Bzgl. Sonos Plugin supporte ich nur noch die jeweils aktuelle Version NUR auf dem LoxBerry, ich kann keine VM Unterstützung mangels Hardware geben. Herzlichen Dank! -
Hallo Liver_64
Habe eine Frage und zwar wenn ich den Gong mit MessageID 100 abspielen lasse dann ist er immer in einer Endlosschleife. Geht das nich anderes wenn er einmal abgespielt wurde das er wieder den Status hernimmt welchen die Box gehabt hat? DankeKommentar
-
Schick mal noch ein &action=playmode&playmode=normal dazu. Kannst ja nachher auch wieder ein &action=playmode&playmode=REPEAT_ALL nach dem Gong senden dann sollte es klappen.. (Siehe Readme.md)Kommentar
-
Hallo Liver_64,
erst einmal Respekt und Anerkennung für dieses Projekt.
Aus meiner Sicht erweitert es den Funktionsumfang und die Interaktionsmöglichkeiten von Loxone / Sonos erheblich.
Ich habe das ganze mal auf einer Art Raspberry nachgebaut und in der Loxone Config hinterlegt.
Wenn ich den Server mit dem Script direkt per Browser rufe, dann funktioniert die Ansage des Textes.
Wenn ich es allerdings über Loxone versuche passiert gar nichts. Es wird kein Temp-MP3 angelegt und auch kein Log geschrieben.
Hast du bzw. ihr eine Idee für mich wo ich schauen kann?
Viele GrüßeKommentar
-
ja klar das Problem lag wieder zwischen den Ohren So geht`s. Super !!! Jetzt gehts direkt nach Sonos und die Lautstärkedifferenz beim unterschiedlichen bedienen ist weg.
Mich würde aber trotzdem noch interessieren wie ich GetMedia, GetPositionInfo, Status, GetTransportSettings noch einbinde.
wie hast Du das mit der Lautstärke gemacht?
Wenn ich bei mit die Radiosender durchschalte und per Sonos App die Lautstärke korrigiere, wir beim nächsten Radiosender wieder die Standard Lautstärke eingestellt.
GrußKommentar
-
Hallo,
nachfolgend ein kleines HowTo für die Installation.
Bitte um Rückmeldung ob was ergänzt oder entfernt werden soll.
Sonos PHP How To auf einem RPI.
Image herunterladen und auf SD-Karte kopieren:
Apache und PHP5 nach folgender Anleitung Installieren:
http://www.raspberrypi-tutorials.de/software/apache2-und-php5-auf-dem-raspberry-pi-installieren.htmlDer Raspberry Pi ist ein vielseitiger und kostengünstiger Einplatinencomputer, der sich für eine breite Palette von Projekten und Anwendungen eignet.
WinSCP:
Mit dem tool den kompletten Ordner von „Liver_64“ nach /home/pi/sonos kopieren.
Putty und Samba:
Mit Putty auf das RPI verbinden.
Samba nach der Anleitung von „scharrin“ installieren und einrichten:
raspberrypi# sudo apt-get install samba samba-common-bin
Verzeichnis für die Ablage der MP3-datein anlegen:
In meinem Fall: /var/www/loxone/mp3/
Folgende Zeile in die Datei /etc/samba/smb.conf eingetragen bzw. angefügt:
[sonosmp3]
comment = Sonos-Freigabe MP3
path = /var/www/loxone/mp3/
writeable = yes
guest ok = yes
In der config.php benötigt man dann folgende Einträge:
'messagePath' => '//raspberrypi/sonosmp3/',
'messageStorePath' => '/var/www/loxone/mp3/',
das funktioniert einwandfrei!
Im messagePath ist der "raspberrypi" der Hostname (muss im Netzwerk auflösbar sein) oder die IP-Adresse des Raspberry. Dir farblich markierten "Strings" müssen zusammenpassen.
messagePath ist das Verzeichnis der MP3-Dateien aus Sicht des Sonos.
messageStorePath ist das selbe Verzeichnis aus Sicht des Raspberry.
PHP-Dateien kopieren:- In das Verzeichnis Sonos wechseln
- cd /home/pi/sonos
- sämtliche Dateien nach var/www/html kopieren
- sudo cp *.* /var/www/html/
- Rechte vom html Verzeichnis anpassen
- Sudo chmod 777 html
- Rechte vom mp3 Verzeichnis anpassen
- cd /var/www/loxone
- sudo chmod 777 mp3
Airport-Gong Datei kopieren:- mit google nach der Datei suchen
- die mp3 Datei mit WinSCP nach /home/pi/mp3 kopieren
- mit Putty die Datei in das Verzeichnis /var/www/html/ kopieren
- cd /home/pi/mp3/
- sudo cp *.* /var/www/html/
config.php anpassen:
Wie “Liver_64” schon beschrieben hat, müssen folgende Informationen aktualisiert werden:
IP Adresse der Sonos-Lautsprecher
Bezeichnung der Zone
API-Key von VoicesRSS.org im file eintragen
file_gong anpassen à entspricht der etwas weiter oben beschriebenen Gong Datei.
IP-Adresse vom Miniserver anpassen
TTS Engine anpassen à 1001
Test der Installation:
Mit folgendem Befehl kann die Funktion geprüft werden:Es sollte nun ein Gong inkl. des gesprochenen Textes „test“ auf dem Lautsprecher 192.168.2.21 in der Zone kueche ertönen.
Kommentar
-
Hi Rik,
danke für die tolle Aufstellung. Ich habe das ganz vor 2 Tagen, zwar mit einem ODROID, so realisiert.
Beim ersten Mal hat es wegen den Berechtigungen bzw. Pfaden nicht gleich funktioniert und beim zweiten Mal hat die TTS Engine (1001) noch nicht gepasst.
Der dritte Versuche war dann erfolgreich. Auf Loxone Seite war noch wichtig nicht den DNS-Namen, sondern die IP des Web-Servers anzugeben und schon funktionierte die erste Ausgabe.
VG
- In das Verzeichnis Sonos wechseln
-
Kannst du direkt machen, wenn der Radio unter Meine Radiosender drin ist.
Auszug aus der README Datei. (README = Liesmich :-P)
## Lädt die angegebene Radioliste unter "Meine Radiosender" aus Sonos
http://DEINE_IP/DEIN_VERZEICHNIS/son...TION&volume=15Kommentar
-
Hallo Thunder007,
die Musiksteuerung habe ich eher vernachlässigt, da benutze ich dann doch die Sonos App. Bei mir steht die Hausautomation und TTS im Vordergrund. Dazu habe ich ca. 15 verschiedene MP3 files als numerische Dateien abgelegt, die ich dann je nach Anwendung aufrufe, generiert habe ich Sie mit der TTS funktion und dann entsprechend umbenannt. Ansonsten gibt es viele TTS Ansagen wie z.B.:
- Alarmanlage: Haus verlassen und ein Fenster ist noch auf -> TTS mit Ansage welches Fenster noc hoffen ist, dann Abbruch Alarm scharf schalten
- Alarmanlage: Haus verlassen und alle Fenster sind geschlossen -> TTS mit Ansage mit Hinweis das in 5 Minuten Alarm scharf geschaltet wird.
- Alarmanlage: Wenn Anwesenheit Scharfstellung und Alarm -> TTS Ansage mit gong welches Fenster betroffen ist (kam noch nie)
- Alarmanlage: Statusmeldung der Fenster gegen 22:00h bei Anwesenheit -> TTS Ansage ggf. kann Alarm bei Gute Nacht nicht scharf geschaltet werden da Fenster offen ist/sind
- Alarmanlage: Falls bei scharfer Alarmanlage anwesend die HST oder Tür von innen geöffnet wird -> TTS Hinweis dass nach dem Schließen die Alarmanlage in ca. 2 Minuten automatisch scharf geschaltet wird.
- Alarmanlage: stiller Alarm und TTS Hinweise wenn Bewegungsmelder deaktiviert wurden und wenn Auto Alarmschaltung deaktiviert wurde.
- Alarmanlage: Alarmauslösung akustischer Alarm -> Laden von PL, Volume auf 80% und abspielen Sirene bzw. Hundebellen, dann Rammstein
- Wetter: TTS aktuelle Wettervorhersage beim Frühstück
- Wetter: TTS Vorhersage für kommenden Tag gegen 22:00h
- Wetter: Sturmwarnung
- Uhrzeit: fixe Uhrzeitdurchsage mit Text Hinweis um 7:20h wenn Kids zur Schule müssen (nur an Schultagen)
- Musik: Bei eintreten morgens in den Wohnraum geht PL an, unterschiedliche Sender je Person
- Musik: Beim Betreten des Hauses unterschiedliche PL je nach Person und Tageszeit (iButton)
- Hinweise: Wenn Gartentor oder Garage länger als 5 Minuten offen steht, Waschmaschine, Trockner fertig, in Winter nach 30 Minuten welches Fenster offen steht, wenn HST geschlossen wird dann Hinweis das in 10 Minuten der Garten stromloss geschaltet wird (nur abends und anwesend), Türgong, wenn Haustür länger als 20 Minuten offen
- Media: TTS Hinweis wenn ich per Visu den TV im OG ausschalte. Dann haben die Kids noch ca. 20 Sekunden bis er ausgeht.
- Sonos: TTS Ansage des Titels und des Interpreten per Taster (Kids wollen öfter Infos haben wenn PL läuft)
das war es so im Groben
Gruß OliverAnmerkung: Bitte keine Fragen mehr per PN sondern direkt im Forum damit andere mithelfen und mitprofitieren können.
Bzgl. Sonos Plugin supporte ich nur noch die jeweils aktuelle Version NUR auf dem LoxBerry, ich kann keine VM Unterstützung mangels Hardware geben. Herzlichen Dank!Kommentar
-
Hi Marcus,
bzgl. Uhrzeit ist die Ansage im Script enthalten. Die Syntax lautet ...&action=sendmessage&clock&volume=35 und nutzt die Uhrzeit deines Webservers, nihct die des MS (Achtung: Uhrzeiten synchronisieren), ebenso die Wettervorhersage, diese lautet ...&action=sendmessage&weather&volume=35. Lies bitte die Readme, da steht alles bzgl. Wetter drin (basierend auf Wunderground), vorher kannst du dir noch den Text ggf. anpassen (Datei: w2s.php).
Wegen den Fenstern nutze ich folgende Funktion und hänge am letzten Statusbaustein die TTS dann einfach dran:
Ich such noch immer nach einer eleganten Lösung die mir vor verlassen den Hauses anzeigt/ansagt (Tasker) welche meiner Fenster/Türen noch offen sind. Ich hatte
Zusätzlich habe ich mir noch eine Funktion erstellt, welche in Kombination mit Bewegungsmeldern mir erlaubt trotz scharf geschalteter Alarmanlage anwesend die HST bzw. die Haustür zu öffnen ohne das Alarm ausgelöst wird (Hintergund ist das ich a: Raucher bin und b: ab und an unseren Hund noch in den Garten lasse). Die BWM sind bei anwesend außer Funktion, von daher kann ich sie dafür klasse nutzen. Die kommen nur bei abwesend und Hund nicht da zum Tragen.
Hoffe geholfen zu haben
Grüße Oliver -
Danke Oliver, ich probiere die Sachen diese Woche gleich mal aus.
Gruß Marcus -
Hallo Oliver,
Danke für deine ausführliche Beschreibung. Ich habe es geschafft den Miniserver and den Rasperry anzubinden und es funktioniert einwandfrei. Jetzt wollte ich die Alarmanlage mit den gleichen Bedingungen nachbau, wie du es gemacht hast. Ich stoße aber an die Grenze, weil ich nicht ganz weiß, wie ich folgendes umsetzen soll: - Alarmanlage: Haus verlassen und alle Fenster sind geschlossen -> TTS mit Ansage mit Hinweis das in 5 Minuten Alarm scharf geschaltet wird.
Wir hast du die TTS Durchsage umgesetzt und vor allem an welchen Ausgang hast du diese angeschlossen. Am Q Ausgang nutzt es mir nichts, da erst in 5 Minuten scharf geschaltet wird. Am AQT nutzt es auch nichts, weil die Alarmanlage keinen Fehler erkennt und somit keinen Text ausgibt.
Bitte um Deine Hilfe!
Danke
Markus
-
-
Guude zsamme,
gibt es denn in unser Community nicht einen php Experten der etwas unterstützend tätig sein könnte? Ich bin mit meinem php Latein am Ende und komme nicht signifikant weiter. Folgende Funktion gilt es zu realisieren:
- individuelle Erstellung einer Gruppe aus Liste von Playern
- setzen der Lautstärke je Player für TTS
- speichern und wiederherstellen des Ursprungzustandes jedes Players der Gruppe
- Neue Sonos Funktionen (GroupVolume, GroupMute, SnapshotGroupVolume, RelativeGroupVolume, BecomeCoordinatorOfStandaloneGroup) -> werden für die ersten 2 Punkte benötigt
ERGÄNZUNG: Die Codes sind bereits vorhanden, bedürfen aber noch der Fehlersuche bzw.Optimierung da Sie derzeit nicht funktionieren.
wäre toll wenn sich jemand melden könnte.
Grüße OliverZuletzt geändert von Liver_64; 31.05.2016, 09:52.Anmerkung: Bitte keine Fragen mehr per PN sondern direkt im Forum damit andere mithelfen und mitprofitieren können.
Bzgl. Sonos Plugin supporte ich nur noch die jeweils aktuelle Version NUR auf dem LoxBerry, ich kann keine VM Unterstützung mangels Hardware geben. Herzlichen Dank!Kommentar
-
Hi Oliver,
ich komme zwar ehr aus der Java Ecke, versuche aber gerne dir zu helfen.
Wo ist das Problem bzw. wie wollen wir vorgehen?
Gruß Marcus -
Hallo Marcus,
erst einmal danke für dein Angebot, ich bin dann doch ein ganzes Stück weiter gekommen und habe auch ein Update gepostet. Wie sieht es denn generell mit deinen Sonos Kenntnissen aus? Wie fit bist du hier?
Das nächste Thema ist aus verschiedenen Zonen eine Gruppe zu erstellen, dann eine T2S spielen und den Zusand der jeweiligen Zone wiederherstellen.
Prinzipiell weiß ich wie es mit einer Schleife läuft, nur im Detail steckt mal wieder das Problem ,-)
Lieben Gruß Oliver
-
-
Anmerkung: Bitte keine Fragen mehr per PN sondern direkt im Forum damit andere mithelfen und mitprofitieren können.
Bzgl. Sonos Plugin supporte ich nur noch die jeweils aktuelle Version NUR auf dem LoxBerry, ich kann keine VM Unterstützung mangels Hardware geben. Herzlichen Dank!Kommentar
-
Ich hab da wohl ein Update verpasst. Habe Version 1.4.8 in der sonos2.php und finde in der Readme nichts zum Auslesen. (resp. nur das, wo steht nur im Browser verwenden)
Finde nichts mit loxgettitel oder dergelichen wie du es im Screenshot angegeben hast.. -
Habe das ganze in der sonos2.php gefunden, blick aber noch nicht ganz was deine Eingänge machen damit der Text ankommt.. Hast du eine Loxone Beispieldatei? -
Habs geschnalt, läuft alles einwandfrei. Habs in der README aber immernoch nicht gefunden, habs anhand der Sonos2.php und deinem Screenshot reproduziert..
-
Kommentar