NEWS
Projektvorstellung Multiplayer
-
Hallo Community,
ich plane mein erstes größeres iobroker-Projekt hier vorzustellen. Die ersten Ergebnisse sehen schon gut aus und ich frage mich, ob es vielleicht auch für andere interessant ist.
Also nun zum Projekt:
Im Vis einen Player darstellen, der in der ersten Stufe den Chromcast Audio Player und den VLC-Player unterstützt. Da beide Player sich die Musik von einem Webserver holen können, sind die Zugriffe hierüber realisiert worden. Damit braucht man keinen Playerzugriff auf die Musik einzurichten.
Neben der Musik werden auch die zugehörigen Metadaten (ID3Tags) ausgewertet und dargestellt. Da es eine einheitlichen Darstellung im VIS gibt, ist die Anpassung der Playerfunktionalitäten hierbei sehr interessant.
Soweit mir bekannt kann der Chromcast-Player keine M3U Dateien abspielen. Also muß iobroker diese Aufgabe für diesen Player übernehmen. Wenn jemand wie ich bereits mehrere Chromcast-Player im Einsatz hat, kann man über den Multiplayer jeden Player einzelnt steuern. Der PC gestützte VLC-Player wird über das HTTP-Interface gesteuert und kann selbst Playlisten verarbeiten. Da es für diesen Player noch keinen Adapter mit Status-Informationen gibt, habe ich kurzerhand eine eigenes Interface entwickelt.
Ich muss allerdings sagen, dass ich nicht der beste Programmierer bin, aber Spass an den iobroker-Möglichkeiten habe. Vielleicht findet sich ja jemand, der an diesem Projekt mitarbeiten möchte.
Wie dem auch sei, ich würde mich über eure Meinung zu diesem Player freuen.
Achso noch eine Anmerkung: Ich bin nicht bereit für die existierenden Multiroom-Lösungen (Sonos u.a.) mehrere Tausend Euro auszugeben, um das Haus mit Musik zu versorgen. Wozu habe ich den iobroker.
1055_player1.png -
Sehr schönes Player! Ich werde es in eine Suche probieren, wenn ich wieder zurück nach Hause bin.
Ich habe in jedes Zimmer ein Chromecast Audio und meine Musik zu spielen. Meine Musik ist auf einen Apache Webserver und mit dem mp3 Plugin (http://search.cpan.org/~lds/Apache-MP3-4.00/MP3.pm) erzeuge ich dinamische Playlisten.
Chromecast kann nicht direkt meine abspielen aber das iobroker Chromecast Adapter kann. Ich habe dieses Funktion in Dezember addiert. Ich habe aber nicht für jede Datei in der Playliste die Metadaten gelesen, im lade Zeit zu sparen. Das könnte man aber addieren: vielleicht ein thread, dass async die einzige mp3s metaden prozesiert nach das erstes Lid gespielt wird…
Sent from my VKY-L29 using Tapatalk
-
Hallo vegetto,
das der chromecast-Adapter Playlisten abspielen kann wusste ich nicht. Ich habe es auch direkt ausprobiert, erhalte aber eine Fehlermeldung.
in url2play habe ich die lokale Datei /opt/iobroker/sound/m3u/test.m3u eingetragen und erhalte die Fehlermeldung
chromecast.0 2017-06-08 21:31:49.682 error at MediaController.onmessage (/opt/iobroker/node_modules/iobroker.chromecast/node_modules/castv2-client/lib/controllers/request-response.js:27:7) chromecast.0 2017-06-08 21:31:49.682 error at /opt/iobroker/node_modules/iobroker.chromecast/node_modules/castv2-client/lib/controllers/media.js:149:23 chromecast.0 2017-06-08 21:31:49.682 error Chromcast AZ - Error playing playlist - Error: queueLoad failed
in der Datei selbst steht
#EXTM3U #EXTINF:265,Adele - Skyfall http://192.168.2.5/Musik/Section1/Adele/Skyfall/Adele - Skyfall.mp3
was mache ich falsch? ich setze den Adapter Version 1.2.3 ein.
Noch ein kleiner Nachtrag: Wenn ich im chromcast-Adapter chromecast.0.Chromcast_AZ.status.playing auf falsch setze und dann wieder auf wahr, dann geht er in den Status BUFFERING und nichts passiert. Hast du dafür auch eine Lösung?
-
Super Projekt…
Verstehe ich das richtig, dass ich auf den vlc-player auf den Tablet zugreifen könnte?
Da auch Radio-stationen in VLC gehen ist das schon sehr interessant
Gesendet von meinem B3-A30 mit Tapatalk
-
Hallo Kamikaze,
Chromecast kann noch local Dateien abspielen: man braucht ein Webserver. Ich benutze Apache2.
Sent from my VKY-L29 using Tapatalk
-
Na hier gibt es Reaktionen, fantastisch.
Erst einmal zu sveni_lee:
Das war ursprünglich mein Plan, da es den VLC Player für diverse Geräte gibt. Leider musste ich ein paar Abstriche machen, dazu gehören auch die Mobilen Geräte, wie Tablet, smartphone, amazon Fire TV u.a. Diese Geräte haben zwar den VLC-Player verfügbar, jedoch soweit ich das bisher ermitteln konnte haben diese Lösungen das HTTP Interface nicht mit an Board. Somit lassen sich diese Geräte nicht fernsteuern.
Aber ich stehe noch am Anfang. Vielleicht gibt es noch andere Möglichkeiten, VLC bietet da einiges.
Jeder der einen Beitrag hierzu leisten kann und sei es nur mit Zusatzinformationen, wohin man schauen sollte, ist herzlich willkommen.
Das mit dem Webserver habe ich irgendwie noch nicht verstanden. Deine Playlisten werden vom Webserver erstellt, soweit kann ich die folgen. Dann hinterlegts du im url2play die Adresse der Playlist, z.B. http://…./philcollins.m3u.
Die wird dann vom Chromcast (alle Lieder in der Playlist) abgespielt?
Das habe ich direkt ausprobiert und siehe da, wenn man es richtig macht, dann funktioniert es auch.
Vielen Dank für diesen Hinweis.
Eine Anmerkung noch: Ich sehe jetzt aber nicht, wo sich der Player gerade befindet. Skip Vorwärts und Rückwärts, also das Steuern in der Playlist fehlen mir doch sehr.
Bitte nicht falsch verstehen, dein Hinweis hat mir sehr geholfen, einige Anpassungen an meinem Projekt vornehmen zu können, die mir die steuerung erleichtert.
Also noch einmal vielen Dank
-
Eine Anmerkung noch: Ich sehe jetzt aber nicht, wo sich der Player gerade befindet. Skip Vorwärts und Rückwärts, also das Steuern in der Playlist fehlen mir doch sehr.
Bitte nicht falsch verstehen, dein Hinweis hat mir sehr geholfen, einige Anpassungen an meinem Projekt vornehmen zu können, die mir die steuerung erleichtert.
Also noch einmal vielen Dank `
Vielen Dank für deine Tolle Erweiterung!
Das Playlist kannst Du mit chromecast.<device name="">.player.jump steuern - wenn Du da 1 schreibst, wechselt es im nächstes Item im Playlist. Bei -1 gehst Du ein Item zurück.
Ich habe im Adapter die Info über dem Playlist als javascript Liste. Würde es helfen, diese Liste auch in iobroker zu sehen? Ich habe in Dezember, wenn ich Playlisten Support addiert habe, kein Konzept, um dem Playlist zu als iobroker State zu zeigen, entwickelt. Ich konnte es als json Variable zeigen und bei schreiben würde ich einfach es zurück am Chromecast senden.</device>
-
Das Playlist kannst Du mit chromecast.<device name="">.player.jump steuern - wenn Du da 1 schreibst, wechselt es im nächstes Item im Playlist. Bei -1 gehst Du ein Item zurück.
Ich habe im Adapter die Info über dem Playlist als javascript Liste. Würde es helfen, diese Liste auch in iobroker zu sehen? Ich habe in Dezember, wenn ich Playlisten Support addiert habe, kein Konzept, um dem Playlist zu als iobroker State zu zeigen, entwickelt. Ich konnte es als json Variable zeigen und bei schreiben würde ich einfach es zurück am Chromecast senden.</device> `
Ups: Jetzt habe ich das erst richtig verstanden, du bist der chromcast Adapter Entwickler. Na dann habe ich ja richtig Glück, gleich den Richtigen auf diesem Sektor zu bekommen.
Ich bin einfach einmal ganz unverschämt und frage dich nach zusätzlichen Erweiterungen im Adapter:
Das springen habe ich ausgeführt und für gut befunden.
Jetzt komme ich noch zu meinem Wünschen:
Mir fehlen folgende Funktionen:
Loop, d.h. das aktuelle Lied wiederholen, bis loop abgeschaltet wird.
Repeat, d.h. die gesamte Playliste in einer Schleife immer wieder abspielen.
Zufällig, d.h. die Liedreihenfolge nach dem Zufallsprinzip festlegen.
Datenbereitstellung:
Den Inhalt der aktuellen Playlist in einem iobroker Objekt verfügbar zu haben wäre super, gemäß deinem Angebot durchaus als JSON Objekt.
Dann noch aufgrund der oben genannten Funktionen die aktuell laufende Liednr.
Sinn und Zweck dieser Wünsche:
Die Funktionen besitzt der VLC-Player und andere Lösungen auch, daher wäre eine Implementierung hierfür auch sinnvoll.
Aufgrund der Daten kann ich das laufende Lied identifizieren und dann die ID3TAG-Informationen bereitstellen.
Meinen Algorithmus hierfür muss ich aber noch einmal umbauen. Das liegt daran, dass dein Ansatz, die Playliste dynamisch zu laden (über einen Webserver) widersprich meinem statischen Ansatz. Bislang suche ich mir die Informationen bereits beim Starten zusammen und baue diese nicht dynamisch ein.
Mein neuer Ansatz lautet, die ID3-Informationen auf dem iobroker zu cachen, sodass nach der ersten Nutzung der Daten diese dauerhaft zur Verfügung stehen.
Problem:
Hast du dir mein Problem mit dem BUFFERING einmal ansehen können?
Also wenn ich im Adapter chromecast.0.Chromcast_AZ.status.playing auf falsch setze, stoppt die Musik. Schalte ich dann aber wieder auf true, dann geht chromecast.0.Chromcast_AZ.player.playerState auf BUFFERING und nichts tut sich mehr. So als ob der gesamte Player weg ist.
-
Ups: Jetzt habe ich das erst richtig verstanden, du bist der chromcast Adapter Entwickler. Na dann habe ich ja richtig Glück, gleich den Richtigen auf diesem Sektor zu bekommen. `
Jaja, sorry ich hätte Dich "warnen" könnenLoop, d.h. das aktuelle Lied wiederholen, bis loop abgeschaltet wird. `
ok - ich mache ein issue auf - https://github.com/angelnu/ioBroker.chromecast/issues/8Repeat, d.h. die gesamte Playliste in einer Schleife immer wieder abspielen. `
Das gibt es - chromecast.<device>.player.repeatMode <- trueZufällig, d.h. die Liedreihenfolge nach dem Zufallsprinzip festlegen. `
ok - https://github.com/angelnu/ioBroker.chromecast/issues/9Den Inhalt der aktuellen Playlist in einem iobroker Objekt verfügbar zu haben wäre super, gemäß deinem Angebot durchaus als JSON Objekt. `
ok - https://github.com/angelnu/ioBroker.chr … /issues/10Meinen Algorithmus hierfür muss ich aber noch einmal umbauen. Das liegt daran, dass dein Ansatz, die Playliste dynamisch zu laden (über einen Webserver) widersprich meinem statischen Ansatz. Bislang suche ich mir die Informationen bereits beim Starten zusammen und baue diese nicht dynamisch ein.
Mein neuer Ansatz lautet, die ID3-Informationen auf dem iobroker zu cachen, sodass nach der ersten Nutzung der Daten diese dauerhaft zur Verfügung stehen. `
Du kannst auch statische playlisten benutzen aber die mussen auch als URL exportiert werden.Problem:
Hast du dir mein Problem mit dem BUFFERING einmal ansehen können?
Also wenn ich im Adapter chromecast.0.Chromcast_AZ.status.playing auf falsch setze, stoppt die Musik. Schalte ich dann aber wieder auf true, dann geht chromecast.0.Chromcast_AZ.player.playerState auf BUFFERING und nichts tut sich mehr. So als ob der gesamte Player weg ist. `
uhm, ich würde ein log brauchen. Dann kannst du in github in einem issue koppieren.Für pause würde ich aber chromecast.<device>.player.paused empfohlen - es ist deutlich schneller und es mach genau am dem Punk weiter.</device></device>
-
Hallo,
also mit so einem Entgegenkommen habe ich nicht gerechnet. Vielen Dank dafür.
Also ein issue habe ich noch nicht gemacht.
Ein Log habe ich hier:
chromecast.0 2017-06-09 20:56:56.585 info Chromcast AZ - Try to play playlist with 1 items chromecast.0 2017-06-09 20:56:56.562 info Chromcast AZ - Try to play url - http://192.168.2.5/Musik/Section1/Stefan%20Waggershausen/Hallo%20Engel/Stefan%20Waggershausen%20-%20Der%20Clown%20ist%20tot.mp3 chromecast.0 2017-06-09 20:56:20.933 info Chromcast AZ - getStatus chromecast.0 2017-06-09 20:56:20.922 info Chromcast AZ - stop chromecast.0 2017-06-09 20:55:59.574 info Chromcast AZ - Playing - http://192.168.2.5/Musik/Section1/Stefan%20Waggershausen/Hallo%20Engel/Stefan%20Waggershausen%20-%20Der%20Clown%20ist%20tot.mp3 chromecast.0 2017-06-09 20:55:57.592 info Chromcast AZ - Playing playlist with 1 items chromecast.0 2017-06-09 20:55:56.129 info Chromcast AZ - Try to play playlist with 1 items chromecast.0 2017-06-09 20:55:56.127 info Chromcast AZ - Player joint chromecast.0 2017-06-09 20:55:56.124 info Chromcast AZ - Connected player chromecast.0 2017-06-09 20:55:56.122 info Chromcast AZ - Default player lauched chromecast.0 2017-06-09 20:55:56.117 info Chromcast AZ - Connected player chromecast.0 2017-06-09 20:55:56.101 info Chromcast AZ - Try to join player chromecast.0 2017-06-09 20:55:53.420 info Chromcast AZ - Try to launch default player chromecast.0 2017-06-09 20:55:53.409 info Chromcast AZ - Try to play url - http://192.168.2.5/Musik/Section1/Stefan%20Waggershausen/Hallo%20Engel/Stefan%20Waggershausen%20-%20Der%20Clown%20ist%20tot.mp3 chromecast.0 2017-06-09 20:55:30.430 info Chromcast AZ - Connected client
Bzgl. der Playlisten werde ich wohl beide Varianten versuchen zu berücksichtigen, einmal über den Player selbst, einmal zur lokalen Ablage. Aber wie dem auch sei, deinen Beitrag weiss ich durchaus zu schätzen.
-
Hallo,
also mit so einem Entgegenkommen habe ich nicht gerechnet. Vielen Dank dafür.
Also ein issue habe ich noch nicht gemacht.
Ein Log habe ich hier:
chromecast.0 2017-06-09 20:56:56.585 info Chromcast AZ - Try to play playlist with 1 items chromecast.0 2017-06-09 20:56:56.562 info Chromcast AZ - Try to play url - http://192.168.2.5/Musik/Section1/Stefan%20Waggershausen/Hallo%20Engel/Stefan%20Waggershausen%20-%20Der%20Clown%20ist%20tot.mp3 chromecast.0 2017-06-09 20:56:20.933 info Chromcast AZ - getStatus chromecast.0 2017-06-09 20:56:20.922 info Chromcast AZ - stop chromecast.0 2017-06-09 20:55:59.574 info Chromcast AZ - Playing - http://192.168.2.5/Musik/Section1/Stefan%20Waggershausen/Hallo%20Engel/Stefan%20Waggershausen%20-%20Der%20Clown%20ist%20tot.mp3 chromecast.0 2017-06-09 20:55:57.592 info Chromcast AZ - Playing playlist with 1 items chromecast.0 2017-06-09 20:55:56.129 info Chromcast AZ - Try to play playlist with 1 items chromecast.0 2017-06-09 20:55:56.127 info Chromcast AZ - Player joint chromecast.0 2017-06-09 20:55:56.124 info Chromcast AZ - Connected player chromecast.0 2017-06-09 20:55:56.122 info Chromcast AZ - Default player lauched chromecast.0 2017-06-09 20:55:56.117 info Chromcast AZ - Connected player chromecast.0 2017-06-09 20:55:56.101 info Chromcast AZ - Try to join player chromecast.0 2017-06-09 20:55:53.420 info Chromcast AZ - Try to launch default player chromecast.0 2017-06-09 20:55:53.409 info Chromcast AZ - Try to play url - http://192.168.2.5/Musik/Section1/Stefan%20Waggershausen/Hallo%20Engel/Stefan%20Waggershausen%20-%20Der%20Clown%20ist%20tot.mp3 chromecast.0 2017-06-09 20:55:30.430 info Chromcast AZ - Connected client
Bzgl. der Playlisten werde ich wohl beide Varianten versuchen zu berücksichtigen, einmal über den Player selbst, einmal zur lokalen Ablage. Aber wie dem auch sei, deinen Beitrag weiss ich durchaus zu schätzen. `
Könntest Du bitte dass Adapter in debug mode konfigurieren und noch Mann das Problem reproduzieren? Im Log sehe ich nur, das denn Adapter ein reconnect gemacht hat: ich weiß aber nicht warum?Hast du mit Pause probieren?
Sent from my VKY-L29 using Tapatalk
-
Hallo,
den debug werde ich gleich durchführen. Jetzt habe ich zum Thema Repeatmode auch einen issue aufgemacht, da ich hierbei eine Fehlermeldung erhalte:
https://github.com/angelnu/ioBroker.chr … /issues/11
chromecast.0 2017-06-09 22:03:40.076 error Chromcast_AZ - Sorry, update for chromecast.0.Chromcast_AZ.player.repeatMode not supported! chromecast.0 2017-06-09 22:03:27.988 error Chromcast_AZ - Sorry, update for chromecast.0.Chromcast_AZ.player.repeatMode not supported! chromecast.0 2017-06-09 21:54:18.432 info Chromcast AZ - Connected client
So den Debug habe ich angehängt.
1055_log.txt -
Hallo,
den debug werde ich gleich durchführen. Jetzt habe ich zum Thema Repeatmode auch einen issue aufgemacht, da ich hierbei eine Fehlermeldung erhalte:
https://github.com/angelnu/ioBroker.chr … /issues/11
chromecast.0 2017-06-09 22:03:40.076 error Chromcast_AZ - Sorry, update for chromecast.0.Chromcast_AZ.player.repeatMode not supported! chromecast.0 2017-06-09 22:03:27.988 error Chromcast_AZ - Sorry, update for chromecast.0.Chromcast_AZ.player.repeatMode not supported! chromecast.0 2017-06-09 21:54:18.432 info Chromcast AZ - Connected client
So den Debug habe ich angehängt. `
Ups, ich hatte das state für repeat addiert aber nicht implementiert X-)Danke für den issue. Ich schaue, was ich in den nächsten Tagen machen kann..
Sent from my VKY-L29 using Tapatalk
-
Ich habe Version 1.3.0 released - da sind alle repeat Möglichkeiten unter chromecast.<device>.playlist.repeat*
Das raw playlist ist unter chromecast.<device>.playlist.raw.
Falls es hilft, kann ich auch Methoden anbieten, um playlists zu verändern: https://github.com/angelnu/castv2-playe … er.js#L171</device></device>
-
Das hört sich ja fantastisch an. Wie kommen ich an das Release dran? Mein iobroker sagt noch, dass die Version 1.2.3. die aktuelle ist.
-
-
Sieh mal hier
http://www.iobroker.net/docu/?page_id=5 … stallieren
Gruß
Rainer `
Danke schön, das hat geholfen.
-
Da bin ich wieder.
Leider muss ich sagen, dass es hier noch ein Problem gibt. Nach der Installation erhalte ich jetzt Fehlermeldungen (Siehe logfile2.txt).
Dann habe ich den Adapter gestoppt, den gesamten Objektbaum gelöscht und neu gestartet.
Ergebnis: Objektbaum wurde wieder aufgebaut, aber die Fehlermeldung kommen immer noch.
Da Entwickler gerne auch noch einen debug wünschen, haben ich diesen in logfile3.txt angehängt.
1055_logfile2.txt
1055_logfile3.txt -
Uhm, ich kann es bei mir nicht reproduzieren aber ich habe eine Vermutung, woher es kommt.
Die Zeile mit Probleme ist /opt/iobroker/node_modules/iobroker.chromecast/lib/chromecastDevice.js:756 :
if ( (id.indexOf(that._NAMESPACE) !== 0) || (state === undefined) || (state.from.indexOf(adapter.namespace) >= 0) ) return;
Bitte ein Gleich von Zeile 756 entfernen so, dass es so ausieht:
if ( (id.indexOf(that._NAMESPACE) !== 0) || (state == undefined) || (state.from.indexOf(adapter.namespace) >= 0) ) return;
Danach Adapter neue starten und schauen, ob das Problem gefixt ist. Wenn ja, würde ich es in git fixen.
-
Uhm, ich kann es bei mir nicht reproduzieren aber ich habe eine Vermutung, woher es kommt.
Die Zeile mit Probleme ist /opt/iobroker/node_modules/iobroker.chromecast/lib/chromecastDevice.js:756 :
if ( (id.indexOf(that._NAMESPACE) !== 0) || (state === undefined) || (state.from.indexOf(adapter.namespace) >= 0) ) return;
Bitte ein Gleich von Zeile 756 entfernen so, dass es so ausieht:
if ( (id.indexOf(that._NAMESPACE) !== 0) || (state == undefined) || (state.from.indexOf(adapter.namespace) >= 0) ) return;
Danach Adapter neue starten und schauen, ob das Problem gefixt ist. Wenn ja, würde ich es in git fixen. `
Davor habe ich auch am meisten Angst, wenn ich meine Lösung präsentiere und die Probleme nicht nachstellen kann.
Aber deine Vermutung hat dich nicht getäuscht. Problem ist gefixt. Adapter läuft und ich werde die Funktionen jetzt testen.
Repeat single funktioniert schon einmal.
Rest werde ich berichten, wenn ich alles getestet habe. Wahrscheinlich morgen abend.