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
