Autor Thema: neues Modul: 98_MediaList.pm zur Erstellung einer Playlist für TabletUI  (Gelesen 10726 mal)

Offline Shadow3561

  • Full Member
  • ***
  • Beiträge: 193
So, habe es hinbekommen.
Hatte ein anderes Modul MediaList heruntergeladen, aus folgendem Fred https://forum.fhem.de/index.php/topic,53863.msg578201.html#msg578201.

Mit dem klappte die Übergabe der Playlist an MPD nicht.
Habe jetzt das Modul aus diesem Fred installiert und die Übergabe der Playlist klappt.
Nun besteht nur wieder das Problem, dass in keine Ordner gewechselt werden kann, die Leerzeichen erhalten.

Mfg

Offline Tobias

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3426
Hi,
ich habe im ersten Post das Modul nochmal aktualisiert. Bitte nimm mal das.
Ich habe gerade getestet, übergabe MPD klappt, Leerzeichen in Verzeichnispfaden klappt auch.

Wenn die Übergabe an den MPD nicht klappt, musst du genau sagen wo was nicht funktioniert.
Was ist als CacheFileDir definiert?
Was steht in diesem Folder drin nachdem du auf "Play currentdir" gedrückt hast?
Was steht in m3u Datei drin?
Wie ist der MPD konfiguriert?
Was gibt der MPD bei einem "get playlists" aus?
Hast du dich an den Wikiartikel gehalten?
FHEM auf Cubitruck mit Homematic, MAX, PCA301, Panstamp-Sensoren, RPi mit 2x 1wire, RPi mit Text2Speech.
Maintainer der Module: DbLog, Text2Speech, SprinkleControl, Sprinkle, TrashCal, MediaList

Offline accessburn

  • Sr. Member
  • ****
  • Beiträge: 873
  • Lecker Raspberry-Cocktail!
    • TRcoding
Huhu,
hab das sehr interessantes Modul eingebaut und soweit funktioniert es jetzt über ein gemountetes Verzeichnis vom NAS.

Jedoch macht das FTUI 2.6.2 Probleme, kannst du mal schauen?
« Letzte Änderung: 15 Februar 2017, 15:26:39 von accessburn »
Wezzy Rpi2b> FHEM, Elro, Intenso, FTUI, Jeelink v3, Max!Cube, Fire5, Foscam, NAS, Fritz!Box + Fon, Max!Wandthermostat, Amazon Echo
Wezzy Rp3b> OctoPi
Jessie Rp3b> UPNP, NAS, Pi-Hole

Offline C0mmanda

  • Full Member
  • ***
  • Beiträge: 289
Mahlzeit,

ich versuche seit Stunden das Plugin zum funktionieren zu bewegen doch leider will es nicht klappen... :(

Ich versuche MediaList mit einem MPD-Player zu verwenden.
Das einlesen usw scheint auch gut zu funktionieren.
Ich bekomme die Ordnerstruktur, die Playlist-Readings, eben alles wie es sein soll.
Der MPD-Player für sich genommen funktioniert auch.

Wenn ich jedoch die Playlist übergeben will (set <MediaList> Play playlist) stürzt FHEM sofort ab.
Im Log, auch mit verbose 4, steht nur:

Can't use an undefined value as a symbol reference at ./FHEM/98_MediaList.pm line 313.

Eine Idee wo ich hier ansetzen kann?

Danke!

gruß
CmdA

Offline C0mmanda

  • Full Member
  • ***
  • Beiträge: 289
Konnte das Problem nun lösen, der Fehler lag in falschen Zugriffsrechten.
Leider bin ich nur einen kleinen Schritt weiter denn funktionieren tut es noch immer nicht.

Die Playlist wird nicht (korrekt) an MPD weitergegeben.
Die Musik ist auf dem MPD-Device unter /storage/music erreichbar.

Medialist ist wie folgt eingerichtet:

define MyMediaList /media/music

Attribute:

attr MyMediaList MediaList_CacheFileDir /opt/fhem/cache/
attr MyMediaList MediaList_PathReplaceFrom /media/music/
attr MyMediaList MediaList_PathReplaceTo /storage/music/
attr MyMediaList MediaList_PathReplaceToPic /storage/music/
attr MyMediaList MediaList_PlayerDevice MPD_Kueche
attr MyMediaList MediaList_mkTempCopy symlink

Die Readings werden alle korrekt befüllt, bis hin zum playlist_json im MPD-Device.
Leider kann der MPD aber nichts abspielen, ich bekomme die Fehlermeldung "Bad Song Index".

Aufgefallen ist mir das im playlist_json Reading der Pfad nicht geändert ist. Dort steht weiterhin /media/music/.
Ich vermute es müsste hier bereits /storage/music sein.

Im Cache-Verzeichnis von FHEM wird die Playlist befüllt, allerdings mit dem Inhalt:

MyMediaList_Volbeat 13 Thanks.mp3
MyMediaList_Volbeat 04 Fallen.mp3
MyMediaList_Volbeat 10 Magic Zone.mp3
MyMediaList_Volbeat 08 16 Dollars.mp3
MyMediaList_Volbeat 02 Heaven Nor Hell.mp3
MyMediaList_Volbeat 05 A Better Believer.mp3
MyMediaList_Volbeat 03 Who They Are.mp3
MyMediaList_Volbeat 06 7 Shots.mp3
MyMediaList_Volbeat 09 A Warrior's Call.mp3
MyMediaList_Volbeat 12 Being 1.mp3
MyMediaList_Volbeat 11 Evelyn.mp3
MyMediaList_Volbeat 07 A New Day.mp3
MyMediaList_Volbeat 01 The Mirror And The Ripper.mp3

Weiterhin befinden sich dann im cache-Verzeichnis symlinks wie folgt:

MyMediaList_Volbeat 02 Heaven Nor Hell.mp3 -> /media/music/Volbeat/Beyond Hell - Above Heaven - 2010/Volbeat 02 Heaven Nor Hell.mp3

Auf dem MPD-Device selbst wird keine Playlist erstellt/gefüllt.

MPD ist gemäß Wiki konfiguriert:

auto_update "yes"
save_absolute_paths_in_playlists "no"
follow_outside_symlinks "yes"
filesystem_charset "UTF-8"
In der mpd.conf muss das Musik-Verzeichnis und das PlaylistVerzeichnis identisch sein.

Bin mit meinem Latein im Moment am Ende... :(
Bin für jede Hilfe dankbar!

gruß
CmdA

Offline knopf_piano

  • Full Member
  • ***
  • Beiträge: 322
Hi,
ich hab die files wie im wiki angegeben angelegt, krieg aber keine Anzeige.
wenn ich im template direkt den mpd/medialist angebe, seh ich zumindest die frames und knöpfchen...
kann einer mal eine junktionierende file-struktur der 2/3-Dateien reinhängen.
Greets!
zotac nano, Bananapi-R1, fhem-trunk, hmlan, jeelink, zwave, tablet-ui,  pywws, raspi, yamaha-671, ufs910-titan

Offline knopf_piano

  • Full Member
  • ***
  • Beiträge: 322
ein
set MyMediaList Play führt nach einigen Sekunden zum Absturz von FHEM...
hab ich auch bei mir
foldendes def bei mir:
define MyMediaList MediaList /media/data_server/music/
attr MyMediaList MediaList_CacheFileDir /media/data_server/music/____fhemTmp/
attr MyMediaList MediaList_PathReplaceFrom /media/data_server/music/
attr MyMediaList MediaList_PlayerDevice KnopfMPD
attr MyMediaList MediaList_mkTempCopy symlink

die tablet_ui hab ich irgendwie jetzt,
so ganz klappt die Anzeige bei mir noch nicht, die listen werden rechts/links hinsichtlich des aktuellen verzeichnisses nicht befüllt
ich hab die mal angehängt
zotac nano, Bananapi-R1, fhem-trunk, hmlan, jeelink, zwave, tablet-ui,  pywws, raspi, yamaha-671, ufs910-titan

Offline Shadow3561

  • Full Member
  • ***
  • Beiträge: 193
Hi,
ich habe im ersten Post das Modul nochmal aktualisiert. Bitte nimm mal das.
Ich habe gerade getestet, übergabe MPD klappt, Leerzeichen in Verzeichnispfaden klappt auch.

Wenn die Übergabe an den MPD nicht klappt, musst du genau sagen wo was nicht funktioniert.
Was ist als CacheFileDir definiert?
Was steht in diesem Folder drin nachdem du auf "Play currentdir" gedrückt hast?
Was steht in m3u Datei drin?
Wie ist der MPD konfiguriert?
Was gibt der MPD bei einem "get playlists" aus?
Hast du dich an den Wikiartikel gehalten?

Hallo,
Es klappt jetzt alles wie gewünscht.
Danke für die Hilfe.

Mfg

Offline Tobias

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3426
Hi,
Also bei einem mpd muss das replaceto Attribut auf das in mpd definierte music Verzeichnis zeigen. Wie im Wiki beschrieben muss das das music und playlist Verzeichnis dasselbe sein.

Gesendet von meinem Leap mit Tapatalk

FHEM auf Cubitruck mit Homematic, MAX, PCA301, Panstamp-Sensoren, RPi mit 2x 1wire, RPi mit Text2Speech.
Maintainer der Module: DbLog, Text2Speech, SprinkleControl, Sprinkle, TrashCal, MediaList

Offline C0mmanda

  • Full Member
  • ***
  • Beiträge: 289
Also ich versuche seit 2 Tagen das Modul ans laufen zu bekommen aber es will einfach nicht klappen.... (siehe 5 Postings weiter oben).

Irgendwo liegt noch ein Fehler, es kommt einfach keine Playlist bei MPD an.
Müssen noch irgendwelche speziellen Dateirechte beachtet werden?
Wie wird die Playlist überhaupt an MPD übertragen?

Offline Tobias

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3426
Also ich versuche seit 2 Tagen das Modul ans laufen zu bekommen aber es will einfach nicht klappen.... (siehe 5 Postings weiter oben).

Irgendwo liegt noch ein Fehler, es kommt einfach keine Playlist bei MPD an.
Müssen noch irgendwelche speziellen Dateirechte beachtet werden?
Wie wird die Playlist überhaupt an MPD übertragen?
Also, nun mal zu dir: Das cachefiledir muss dementsprechend auch auf /storage/music zeigen.
Das replaceTo benötigst du nicht

technisch fuktioniert es  beim MPD so:

1. Die abzuspielenden mp3s werden in das CachefileDir = MPD MusicDir per symlink gelegt. Damit sind sie für den MPD zugreifbar
2. Die Dateien werden ohne Pfad in die Playlist Datei m3u aufgenommen. Die Playlist liegt ebenfalls im CachefileDir = MPD PlaylistDir
3. Der MPD kann nun auf die Playliste und auf die Dateien zugreifen und spielt sie ab
FHEM auf Cubitruck mit Homematic, MAX, PCA301, Panstamp-Sensoren, RPi mit 2x 1wire, RPi mit Text2Speech.
Maintainer der Module: DbLog, Text2Speech, SprinkleControl, Sprinkle, TrashCal, MediaList

Offline C0mmanda

  • Full Member
  • ***
  • Beiträge: 289
Also, nun mal zu dir: Das cachefiledir muss dementsprechend auch auf /storage/music zeigen.
Das replaceTo benötigst du nicht

technisch fuktioniert es  beim MPD so:

1. Die abzuspielenden mp3s werden in das CachefileDir = MPD MusicDir per symlink gelegt. Damit sind sie für den MPD zugreifbar
2. Die Dateien werden ohne Pfad in die Playlist Datei m3u aufgenommen. Die Playlist liegt ebenfalls im CachefileDir = MPD PlaylistDir
3. Der MPD kann nun auf die Playliste und auf die Dateien zugreifen und spielt sie ab

Danke für die Erläuterung.
Ich denke dann weiß ich auch wo das Problem liegt.
Der MPD-Player läuft auf einem anderen Client als FHEM. Da kann dein Plugin natürlich nicht einfach in das MPD-music-dir schreiben.
Ich dachte die Playlist wird per JSON oder sowas übertragen...

Denke das kann ich nur lösen wenn ich das MPD-music-dir auf dem FHEM-Client mounte.

Melde mich wenn ich das ausprobieren konnte :)

Danke!
grtz

Offline Tobias

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3426
hab ich auch bei mir

so ganz klappt die Anzeige bei mir noch nicht, die listen werden rechts/links hinsichtlich des aktuellen verzeichnisses nicht befüllt

Wenn fhem abstürzt, passen meinstens die Berechtigungen des cacheFileDirs nicht. Das habe ich leider noch nicht mit einem eval abgefangen.
Wenn das TabletUI leer bleibt, müssen auch die Readings "playlist_current" und "playlist" im MediaList-Device leer bleiben. "playlist_current" bleibt nur dann leer wenn im aktuell gewählten Verzeichnis keine *.mp3" Dateien gefunden werden
FHEM auf Cubitruck mit Homematic, MAX, PCA301, Panstamp-Sensoren, RPi mit 2x 1wire, RPi mit Text2Speech.
Maintainer der Module: DbLog, Text2Speech, SprinkleControl, Sprinkle, TrashCal, MediaList

Offline C0mmanda

  • Full Member
  • ***
  • Beiträge: 289
Ich habs nun ENDLICH hinbekommen.

Musik liegt auf einem NAS:

MPD-Device (RasPi): Musiklaufwerk gemountet auf "storage/music".
FHEM-Device (Intel NUC): Musiklaufwerk ebenfalls gemountet auf "storage/music".

(Die richtigen Schreibrechte haben mir etwas zu schaffen gemacht :( )
Es funktioniert auch nur wenn ich auf beiden Devices die gleiche Ordnerstruktur beim mounten verwende.


MyMedialist attr cacheFileDir /storage/music/
MyMediaList attr PlayerCommand playlist KUE_MPD
MyMedialist attr mkTmpCopy none

Damit funktioniert es nun endlich.

Schick wäre jetzt noch wenn auch *.m4a Dateien unterstützt würden, da habe ich nämlich einige von.
Wäre das möglich?

gruß
CmdA
« Letzte Änderung: 22 Februar 2017, 07:45:40 von C0mmanda »

Offline Tobias

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3426
Hi,
Zitat
Es funktioniert auch nur wenn ich auf beiden Devices die gleiche Ordnerstruktur beim mounten verwende.
Eigentlich nicht, du musst natürlich die MediaList Definition und das Cachefiledir anpassen.
Bei Sonos Geräten ist das einfacher... die können echte UNC Pfade....

m4a Dateien gehen auch mit anpassung, ungetestet:

Suche mal nach
return undef if ($file !~ m/\.mp3$/i);   # keine mp3 Endung ersetze durch
return undef if ($file !~ m/(\.mp3|\.m4a)$/i);   # keine mp3/m4a Endung
Allerdings weiß ich dann nicht, wie sich die genutzten mp3 Bilbliotheken verhalten
use MP3::Tag;
use MP3::Info;
FHEM auf Cubitruck mit Homematic, MAX, PCA301, Panstamp-Sensoren, RPi mit 2x 1wire, RPi mit Text2Speech.
Maintainer der Module: DbLog, Text2Speech, SprinkleControl, Sprinkle, TrashCal, MediaList