Hier nun, was der Plugin können soll:

Prinzipielles Ziel:
Der Plugin soll eine Bridge bereitstellen, der einen Musikstream als
Input bekommt und daraus dann ein Hue System von Phillips als DiscoLicht
steuert. Die API dazu is offengelegt
(https://www.developers.meethue.com/philips-hue-api).

Idee:
Ich würde gerne ein c-Programm als Bridge verwenden, welches ähnlich den
Bridges von philippe44 (https://github.com/philippe44) als Player im LMS
erkannt und angesteuert wird. Ich könnte auf den Bridges von Philippe
aufbauen. Das ganze mit Perl im LMS zu implementieren scheint mir wenig
sinnvoll. Falls es doch einfach gehen sollte, wäre ich über einen
Hinweis und evtl. Hilfe dankbar.

Implementierung:
Um die HueBridge überhaupt ansteuern zu können, muss diese erst einmal
erkannt/gefunden werden. Das geschieht per UPnP und funktioniert soweit
schon mit LMS. Die Perl Routinen funktionieren soweit. 

Sobald die HueBridge erkannt ist, muss sie mit der Anwendung verbunden
werden. Dazu wird der HueBridge an Ihre IP Adresse ein JSON-Request
geschickt und die HueBridge antwortet mit einem UserName. Dieser muss
gespeichert werden und wird ab dann immer bei der
Kommunikation/Steuerung der HueBridge verwendet. Auch das funktioniert
in Perl soweit.

Letztlich möchte ich nun für den Plugin eine GUI schreiben, mit der sich
das Ganze komfortabel steuern lässt:
1. "Discover": Es sollen alle vorhandenen HueBridges auf Knopfdruch
gesucht und gefunden werden. Der Suchvorgang als UPnP Discober mit den
LMS Boardmitteln ist nicht dauerhaft an, sondern wird nur nach Klick
gestartet. Derzeit ist er auf eine Dauer von 60 Sekunden eingestellt.
2. "Connect": Die gefundenen HueBridges sollen dann in einer Tabelle mit
ihrem Namen und der IpAdresse angezeigt werden. Die entsprechende
HueBridge wird danach per Knopfruck gepairt. Ich dachte da an einen
"Connect"-Button in jeder Zeile der Tabelle, der dann die entsprechende
Perl-Routine auslöst. Die Perl-Routine muss logischweise die IpAdresse
der HueBridge, die verbunden werden soll, von der GUI übergeben
bekommen. Sobald die Verbindung erfolgreich ist, sollen die notwendigen
Parameter der neu verbundenen HueBridge in den Plugin-Prefs gespeichert
werden. Das klappt mit purem Perl auch schon.
3. "Anzeigen mit Option Disconnect": Die GUI vom Plugin soll nun immer
die verbundenen HueBridges anzeigen und eine Option zum
Löschen/Disconnect bieten.

Generell: Nicht verbundene HueBridges sollen immer wieder neu erkannt
werden müssen, bereits verbundene/gepairte sollen aus den Plugin-Prefs
in die Tabelle geladen werden. Dazu muss eine Abfrage rein, welche
untersucht ob eine gefundene HueBridge bereits verbunden sind. Diese
Abfrage ist denke ich aber eher trivial.

Bisherige Schwierigkeiten und Einordnung:
- Disablen der Buttons, wenn ein Discover oder Connect läuft. (->
Kosmetik; später)
Workaround: Einfach nicht klicken.
Status: Disablen funktioniert im Hauptdokument, nicht aber im DIV, der
die entdeckten HueBridges anzeigt.

- Neu Laden der Inhalte/Aktualiserungen. (-> Kosmetik; später)
Workaround: Händisch neu laden.
Status: Wenn ich das automatisch machen lasse, dann werden die Buttons
im entsprechenden DIV nicht disabled.

- Aus dem HTMl Teil die IpAdresse an die Perl-Routine übergeben und
diese starten. (-> Wichtig!; jetzt)
Workaround: IpAdresse hart verdrahten.
Ansteuern der Routine geht, aber nicht, wenn ich die IpAdresse als
Variable übergeben will.
Die entsprechende for-Schleife aus dem basic.html des MusicScanners
funktioniert bei mir nicht
(https://github.com/Logitech/slimserver/blob/public/7.9/Slim/Web/Settings/Server/Basic.pm#L100
bzw.
https://github.com/Logitech/slimserver/blob/public/7.9/HTML/EN/settings/server/basic.html#L77).
Hier wird die entsprechende Perl-Routine nur für den Connect-Button
mit loop.index=0 ausgelöst, nicht aber für den Connect-Button des
loop.index=1.
Eine Überprüfung, ob die Indizes überhaupt existieren sagt: Ja.

Auch die Möglichkeit, die das Template-Toolit anbietet, bekomme ich
nicht hin
(http://template-toolkit.org/docs/manual/Variables.html#section_Subroutines).

Mein Vorgehen wäre also nun, die Buttons funktionstüchtig zu bekommen.

Macht das soweit Sinn?
Wo liegt der Fehler bei der Implementierung der Button-Funktion (Also
Klick mit Übergabe der IpAdresse)?
Gerne kann ich den Code entsprechen Entschlanken und dann in den Github
stellen, das werde ich sowieso machen...


------------------------------------------------------------------------
chincheta0815's Profile: http://forums.slimdevices.com/member.php?userid=42904
View this thread: http://forums.slimdevices.com/showthread.php?t=106735

_______________________________________________
slimserver-de mailing list
[email protected]
http://lists.slimdevices.com/mailman/listinfo/slimserver-de

Antwort per Email an