Nabend zusammen,
da gaert mit dem 1.19 Update dankenswerterweise den Weg geschaffen hat, dass Bausteine recht einfach untereinander Informationen austauschen koennen - ohne irgendwelche (mitunter) komplexen Mechanismen wie memcache, Semaphores, APC oder was auch immer (im Regelfall erstmal nicht verfuegbar ist) benutzen zu muessen - hab ich nu mal wieder meinen bisherigen Stand des Squeeze Bausteins aus der Schublade geholt...
Das Ganze hat momentan eher POC Charakter (was ein Grund ist, wieso es noch keine vefuegbare Version davon gibt; der zweite Grund ist der, dass ich jetzt erstmal alles wieder auf "KO-Kommunikation" umschreiben muss), aber bevor ich da jetzt weiter dran arbeite wollte ich mal in die Runde fragen in welchem Funktionsumfang da eigentlich Bedarf bestehen wuerde. Also so, wie rdeckard in einem anderen Thread angefragt hat, moechte ich gern die Entwicklung hier teilen damit am Ende nicht etwas raus kommt, mit dem "nur ich" etwas anfangen kann
Da das Thema doch relativ umfangreich ist (besser: sein kann), hab ich mal einen Thread dazu eroeffnet und taete mich freuen, wenn der eine oder andere hier Wuensche aeussern wuerde.
Das bisherige Konzept basiert auf der bewaehrten Kommunikationsform, sprich:
-Es gibt einen zentralen Daemon welcher der Kommunikation mit dem LMS etabliert, aufrecht erhaelt und mit den einzelnen Client-LBS kommuniziert (wie schon am Satzanfang erwaehnt, handelt es sich dabei um einen LBS mit Daemon-Teil).
-Fuer jeden Player (oder jedes Anzeigegeraet, falls es selber nicht "playen" kann) wird ein einzelner LBS erforderlich (dieser LBS kommt ohne EXEC-Teil aus).
-Player werden (hier zumindest) anhand der MAC, nicht anhand des Namens identifiziert (was dann auch der einzige "Pflichteingang" am Client-LBS waere).
-Player- und Daemon-LBS kommunizieren ueber 2 zentrale interne KOs, eines fuer die Meldungen vom LMS zum Player, das andere fuer Befehle die zum Daemon geschickt werden.
-Die Entwicklung laeuft gegen einen LMS 7.9.0, ob das Ergebnis mit aelteren Versionen funktionieren wird, kann ich also nicht garantieren (ich wuerde aber ohnehin jedem das Update empfehlen, zumindest bei mir hat es sich gelohnt).
*Meine* bisherige Vorstellung der endgueltigen Implementierung umfasst das folgende:
-Jeder Player(LBS) erhält Informationen über den aktuellen Zustand des Players (Name, Signalstaerke, Modell, Lautstaerke, Power, Play/Pause/Stop, usw usf) die auf KOs gelegt werden koennen.
-Jeder Player(LBS) erhält Infos über den aktuellen Titel, Album, Interpret, Genre, Cover (als URL), Position, Dauer uswusf des momentan gespielten Titels.
-Es koennen auf Player-Basis "einfache" Kommandos abgegeben werden, also zB "Power", "Play", "Pause", "Stop", "Next", "Previous", "Playlist xyz", "Volume +", "Volume -", "Volume <absolut>".
-Es sollten auf individueller (also pro Player) bzw globaler Ebene Durchsagen ermoeglicht werden - das brauche ich zB fuer unsere Tuerklingel, ist also wichtig
Was evtl fuer den einen oder anderen interessant sein koennte, aber nicht in der aktuellen To-Do-List liegt, sind so Sachen wie:
-aktuelle Playlist inkl Position anzeigen
-verfuegbare Playlisten anzeigen
-detaillierte Infos ueber Alben oder Kuenstler anzeigen
-und natuerlich das ganze Zeuchs mit "spiel alles von diesem Kuenstler" oder "aus jenem Genre"
-Alarme verwalten
Jetzt war mein Plan natuerlich nicht, eine LMS GUI zu schreiben; da gibts bereits genug gute und frei verfuegbare, es geht dabei mehr um die sinnvolle Integration in eine Visu und die einfache bzw direkte Verfuegbarkeit von oft benutzten Funktionen. Auch hatte ich nicht vor, so Dinge wie "Playlisten in der Visu organisieren" oder "Playlist anzeigen und dann direkt einen Titel anspringen" zu implementieren.
Starten wuerde ich also erstmal mit der obigen, *Meine*-Liste.
Jetzt ist mir bei der bisherigen Implementierung bereits aufgefallen, dass die Ausgaenge des Client-LBS unuebersichtlich zahlreich werden, ich muss das irgendwie begrenzen :/
Was man natuerlich immer machen kann (und deswegen steht da oben auch "Sammlung") ist: einzelne Funktionen in andere LBS aufzusplitten. Also zB so Dinge wie "Kuenstler Informationen" in einen eigenen LBS auszugliedern - wenn das dann jemand braucht, kann er den LBS ankorken und mit den Daten tun und lassen was er moechte. Sowas erfordert aber natuerlich im Kern einige Wege die am liebsten jetzt und nicht erst in zwei Monaten gehen wuerde, daher die Rundfrage
Davon ab: ich bin die naechste Zeit etwas kurz angebunden, versuche aber das - soweit mir moeglich - in benutzbare Regionen zu pushen. Je weniger esoterische Wuensche gemeldet werden, desto schneller geht das - natuerlich
Die Frage richtet sich also vornehmlich - aber natuerlich nicht nur - an Leute die bereits die eine oder andere LMS Implementierung im Einsatz haben.
Ich hoffe auf Rueckmeldungen de(s/r) einen oder anderen
gruesse :: Michael
da gaert mit dem 1.19 Update dankenswerterweise den Weg geschaffen hat, dass Bausteine recht einfach untereinander Informationen austauschen koennen - ohne irgendwelche (mitunter) komplexen Mechanismen wie memcache, Semaphores, APC oder was auch immer (im Regelfall erstmal nicht verfuegbar ist) benutzen zu muessen - hab ich nu mal wieder meinen bisherigen Stand des Squeeze Bausteins aus der Schublade geholt...
Das Ganze hat momentan eher POC Charakter (was ein Grund ist, wieso es noch keine vefuegbare Version davon gibt; der zweite Grund ist der, dass ich jetzt erstmal alles wieder auf "KO-Kommunikation" umschreiben muss), aber bevor ich da jetzt weiter dran arbeite wollte ich mal in die Runde fragen in welchem Funktionsumfang da eigentlich Bedarf bestehen wuerde. Also so, wie rdeckard in einem anderen Thread angefragt hat, moechte ich gern die Entwicklung hier teilen damit am Ende nicht etwas raus kommt, mit dem "nur ich" etwas anfangen kann

Da das Thema doch relativ umfangreich ist (besser: sein kann), hab ich mal einen Thread dazu eroeffnet und taete mich freuen, wenn der eine oder andere hier Wuensche aeussern wuerde.
Das bisherige Konzept basiert auf der bewaehrten Kommunikationsform, sprich:
-Es gibt einen zentralen Daemon welcher der Kommunikation mit dem LMS etabliert, aufrecht erhaelt und mit den einzelnen Client-LBS kommuniziert (wie schon am Satzanfang erwaehnt, handelt es sich dabei um einen LBS mit Daemon-Teil).
-Fuer jeden Player (oder jedes Anzeigegeraet, falls es selber nicht "playen" kann) wird ein einzelner LBS erforderlich (dieser LBS kommt ohne EXEC-Teil aus).
-Player werden (hier zumindest) anhand der MAC, nicht anhand des Namens identifiziert (was dann auch der einzige "Pflichteingang" am Client-LBS waere).
-Player- und Daemon-LBS kommunizieren ueber 2 zentrale interne KOs, eines fuer die Meldungen vom LMS zum Player, das andere fuer Befehle die zum Daemon geschickt werden.
-Die Entwicklung laeuft gegen einen LMS 7.9.0, ob das Ergebnis mit aelteren Versionen funktionieren wird, kann ich also nicht garantieren (ich wuerde aber ohnehin jedem das Update empfehlen, zumindest bei mir hat es sich gelohnt).
*Meine* bisherige Vorstellung der endgueltigen Implementierung umfasst das folgende:
-Jeder Player(LBS) erhält Informationen über den aktuellen Zustand des Players (Name, Signalstaerke, Modell, Lautstaerke, Power, Play/Pause/Stop, usw usf) die auf KOs gelegt werden koennen.
-Jeder Player(LBS) erhält Infos über den aktuellen Titel, Album, Interpret, Genre, Cover (als URL), Position, Dauer uswusf des momentan gespielten Titels.
-Es koennen auf Player-Basis "einfache" Kommandos abgegeben werden, also zB "Power", "Play", "Pause", "Stop", "Next", "Previous", "Playlist xyz", "Volume +", "Volume -", "Volume <absolut>".
-Es sollten auf individueller (also pro Player) bzw globaler Ebene Durchsagen ermoeglicht werden - das brauche ich zB fuer unsere Tuerklingel, ist also wichtig

Was evtl fuer den einen oder anderen interessant sein koennte, aber nicht in der aktuellen To-Do-List liegt, sind so Sachen wie:
-aktuelle Playlist inkl Position anzeigen
-verfuegbare Playlisten anzeigen
-detaillierte Infos ueber Alben oder Kuenstler anzeigen
-und natuerlich das ganze Zeuchs mit "spiel alles von diesem Kuenstler" oder "aus jenem Genre"
-Alarme verwalten
Jetzt war mein Plan natuerlich nicht, eine LMS GUI zu schreiben; da gibts bereits genug gute und frei verfuegbare, es geht dabei mehr um die sinnvolle Integration in eine Visu und die einfache bzw direkte Verfuegbarkeit von oft benutzten Funktionen. Auch hatte ich nicht vor, so Dinge wie "Playlisten in der Visu organisieren" oder "Playlist anzeigen und dann direkt einen Titel anspringen" zu implementieren.
Starten wuerde ich also erstmal mit der obigen, *Meine*-Liste.
Jetzt ist mir bei der bisherigen Implementierung bereits aufgefallen, dass die Ausgaenge des Client-LBS unuebersichtlich zahlreich werden, ich muss das irgendwie begrenzen :/
Was man natuerlich immer machen kann (und deswegen steht da oben auch "Sammlung") ist: einzelne Funktionen in andere LBS aufzusplitten. Also zB so Dinge wie "Kuenstler Informationen" in einen eigenen LBS auszugliedern - wenn das dann jemand braucht, kann er den LBS ankorken und mit den Daten tun und lassen was er moechte. Sowas erfordert aber natuerlich im Kern einige Wege die am liebsten jetzt und nicht erst in zwei Monaten gehen wuerde, daher die Rundfrage

Davon ab: ich bin die naechste Zeit etwas kurz angebunden, versuche aber das - soweit mir moeglich - in benutzbare Regionen zu pushen. Je weniger esoterische Wuensche gemeldet werden, desto schneller geht das - natuerlich

Die Frage richtet sich also vornehmlich - aber natuerlich nicht nur - an Leute die bereits die eine oder andere LMS Implementierung im Einsatz haben.
Ich hoffe auf Rueckmeldungen de(s/r) einen oder anderen

gruesse :: Michael
Kommentar