Antworten
Mrz 07, 2016 - 01:00
Mit Hilfe von IP-Symcon in Verbindung mit NEO und dem Modul IP-Symcon kann Sonos in NEO visualisiert werden.
Die folgenden Funktionen mit Statusrückmeldung stehen zur Verfügung.
Anzeige von
- Coveranzeige
- Album
- Artist
- Position
- Dauer
Steuerung und Anzeige mit Status von
- Volume
- Play
- Pause
- Stop
- Previous
- Next
- Group
- Group Volume
- Bass
- Treble
- Balance
- Mute
- Crossfade
- Balance
- Radiostations aufrufen
- Senden von Ansagen über Sonos
- Playmode
Einrichtung:
Vorraussetzung:
- Funktionsfähiges IP-Symcon in der Version 4 auf einer der Plattformen Raspberry Pi, Apple OS X, Ubuntu und Windows
- Installiertes und konfiguriertes Sonos PHP Modul für IP-Symcon 4
https://github.com/tkugelberg/SymconS...
- NEO mit freigeschalteten IP-Symcon Plugin
Konfiguration
- NEO ist zur Zeit nicht in der Lage Boolean Variablen mit dem IP-Symcon Modul zu togglen, daher muss zum Togglen von Werten ein Script in IP-Symcon aufgerufen werden
- Zunächst ergänzen wir also Scripte um dann bei Mute, Loudness und Crossfade in NEO einen Kippschalter benutzten zu können.
Dazu legen wir eine neue Kategorie in IP-Symcon an unter der die Scripte installiert werden sollen.
Jetzt kopieren wir den Inhalt unter folgendem Link
Script für IP-Symcon zum automatischen Anlegen von Toggle Scripten zum Schalten mit NEO
in ein leeres Script in IP-Symcon ergänzen oben die Objekt ID der angelegten Kategorie unter der die Scripte angelegt werden sollen, speichern und führen dann das Script aus. Jetzt sind für alle vorhandenen Sonos Geräte in IP-Symcon jeweils ein Script für Mute, Crossfade und Loudness angelegt worden.
- In NEO ist nun erneut ein Import der Geräte von IP-Symcon durchzuführen, damit alle neu angelegten Scripte auch verfügbar sind.
- Jetzt legen wir für die Werte jeweils ein Element in NEO an mit folgenden Einstellungen:
Title, Album, Artist, Position, Laufzeit als Textfeld mit status
Mute, Crossfade, Loudness jeweils als Button mit status
Gerät das zugehörige Toggle Script in IP-Symcon Befehl run
Wenn gewünscht noch ein jeweils ein zusätzliches Textfeld mit formatted status zur Anzeige des Status als Text.
Slider für Bass, Treble, Volume, Groupvolume, Balance, Sleeptimer mit folgenden Einstellungen
Bass
Aktion Bass set value
Status Bass status
Erweiterte Optionen
Intervall -10 / 10
Schritt 1
Treble
Aktion Treble set value
Status Treble status
Erweiterte Optionen
Intervall -10/10
Schritt 1
Volume
Aktion Volume set value
Status Volume status
Erweiterte Optionen
Intervall 0 / 100
Schritt 1
Groupvolume
Aktion Groupvolume set value
Status Groupvolume status
Erweiterte Optionen
Intervall 0 / 100
Schritt 1
Balance
Aktion Balance set value
Status Balance status
Erweiterte Optionen
Intervall -100 / 100
Schritt 1
Sleeptimer
Aktion Sleeptimer set value
Status Sleeptimer status
Erweiterte Optionen
Intervall 0 / 100
Schritt 1
Wenn gewünscht kann zusätzlich noch jeweils ein Textfeld mit dem Wert als formatted status angelegt werden.
Für Play, Pause, Stop, Previous, Next müssen wir nun einen Button anlegen, dabei muss jedem Button Statusgrafiken zugeordnet werden die individuell importiert werden. Bezeichnung der Grafiken ist state_0.png, state_1.png, state_2.png, state_3.png, state_4.png, default.png, undefined.png
Die Grafik mit dem Wert des Buttons (s.u.) ist für den jeweiligen Button die aktive Grafik, die restlichen Grafiken jeweils der inaktive Modus.
Als Wert des Buttons geben wir an
Previous
Aktion Status set value: 0
Status Status status
Play
Aktion Status set value: 1
Status Status status
Pause
Aktion Status set value: 2
Status Status status
Stop
Aktion Status set value: 3
Status Status status
Next
Aktion Status set value: 4
Status Status status
Playmode
Für Playmode machen wir das gleiche wie oben bei den Buttons für Play. Wir legen jeweils 6 Statusgrafiken individuell für jeden Button an.
Werte für die Buttons bei Aktion
Normal Status set value: 0
Repeat All Status set value: 1
Repeat One Status set value: 2
Shuffle no Repeat Status set value: 3
Shuffle Status set value: 4
Shuffle repeat one Status set value: 5
Jetzt brauchen wir noch das Cover. Da NEO zur Zeit keine Möglichkeit bietet das Cover über das IP-Symcon Modul und das Grafikelement einzubinden müssen wir das Webseitenelement nutzten. IP-Symcon verfügt über einen Webserver auf dem wir die notwendige Seite ablegen. In IP-Symcon legen wir einen ordner unterhalb von webfront/user mit dem Namen neo an. Alternativ kann die Webseite auch auf einem anderen Webserver liegen da wir die daten zum Cover über die JSON-API auslesen, am einfachsten ist es die Seite einfach unter dem neu erstellten Verzeichnis neo abzulegen.
Wir nennen die Seite im Verzeichnis SonosCover.php später können wir dann in NEO ein Webseitenelement einbauen und die Seite mit URL
http://{IP Adresse vom IP-Symon Server}:3777/user/neo/SonosCover.php
aufrufen.
Zur Vorbereitung der Webseite benötigen wir noch weitere Unterordner unterhalb vom Ordner neo wir nennen den Ordner js für Javascript und einen Ordner css für ein Cascading Style Sheet.
Dann laden wir uns von der Seite
http://www.netzgesta.de/reflex/
die datei reflex.js und legen diese in den Ordner js ab. Dann legen wir die Datei neowebelement.css unterhalb vom Ordner css an und kopieren dann den Inhalt von hier ein.
Unterhalb vom Ordner neo legen wir die Datei SonosCover.php an.
Wir kopieren den Inhalt von dem Script hier ein. Nun müssen wir noch den User, Passwort und die ObjektID in der Seite anpassen damit das Cover ausgelesen wird.
User Emailadresse (Nutzername (Emailadresse) die beim Registrieren von IP-Symcon verwendet wurde)
Passwort Passwort für den Fernzugriff auf IP-Symcon. Falls der Fernzugriff auf IP-Symcon noch nicht eingerichtet worden ist ist dies wie hier (Fernzugriff IP-Symcon) beschrieben nachzuholen.
ObjektID 5 stellige Zahl der Variable CoverURL der Sonos Instanz in IP-Symcon.
Mrz 07, 2016 - 06:52
Vielen Dank für die Mühe mit der Erklärung. IP-Symcom wird immer interessanter.
EIne Frage habe ich noch, können auch Gruppen angelegt/bearbeitet werden?
Grüße
Mrz 07, 2016 - 07:25
Hier sehen wir jetzt die Werte der einzelnen Gruppen.
das sind die Werte die wir dann Statusgrafiken in NEO zuweisen müssen um die Zugehörigkeit zu einer Gruppe zu visualisieren. state_0.png wäre also Zugehörigkeit zu keiner Gruppe.
In NEO müssen wir jetzt noch einen Button mit den entsprechnden Statusgrafiken anlegen.
Die Werte für den Button sind dann z.B. für keine Gruppe
Aktion MemberOfGroup setvalue:0
Status MemberOfGroup status
Gruppe mit Wert 12345
Aktion MemberOfGroup setvalue:12345
Status MemberOfGroup status
In einem Textfeld wählen wir als Status
MemberofGroup formatted status
dann bekommen wir in NEO den Namen der Gruppe angezeigt nicht den Wert.
Mrz 07, 2016 - 18:55
Neuen Kommentar hinzufügen