MP3-Player in FHEM realisieren

Begonnen von accessburn, 24 März 2016, 13:39:19

Vorheriges Thema - Nächstes Thema

accessburn

Hallo,

ich möchte gerne mein System erweitern mit folgender Idee:

Ich stecke einen USB-Stick auf dem MP3s sind ein, die Lieder werden eingelesen und ich kann dann steuern mit den normalen Elementen (Play, Pause, Vor, Zurück).
Kein Sonos o.ä., sondern direkt über den PI.

Geht sowas? Wenn ja, wie?
Wäre nett über ein paar (leicht verständliche) Stichworte und Tips von euch.


Liebe Gräße aus Ffm und schonmal frohe Ostern,
Toby
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

Otto123

Hallo Toby,
Stichwort kann ich: 8)

              Squeeze Player bzw Box
             

Schöne Ostern
Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

accessburn

Warum hab ich das gefühl da ist ein "muhahaha" versteckt :-)
Ich hab mir das mal kurz angesehen, sieht irgendwie nicht so leicht aus wie ich mir das vorgestellt hatte.
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

Otto123

Ja Sonos ist wesentlich einfacher  8)
Aber bevor ich Sonos geholt habe, habe ich mich mit Squeezeplayer beschäftigt. Ich fand den vom Konzept und einfacher Bedienbarkeit richtig gut. Und wenn ich immer die Posts sehe, hier im FHEM Forum beschäftigen sich viele damit.
Ich weiß nicht mehr wie meine Testumgebung aussah, aber ich fand es damals nicht schwierig.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Wzut

Zitat von: accessburn am 24 März 2016, 13:39:19
Ich stecke einen USB-Stick auf dem MP3s sind ein, die Lieder werden eingelesen und ich kann dann steuern mit den normalen Elementen (Play, Pause, Vor, Zurück).
Kein Sonos o.ä., sondern direkt über den PI.
Das kann MPD , Lieder abspielen mit mpc ( gibt es als Konsolenversion oder auch Klicki-Bunti ), kann auch Radiostreams wiedergeben.
Fernsteuern mit fhem mit dem Modul 73_MPD
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

accessburn

Funktioniert auf anhieb.
Internals:
   CHANGED
   HOST       localhost
   INTERVAL   30
   MY ALSA DEVICE on
   NAME       myMPD
   NR         426
   PORT       6600
   PRESENT    1
   STATE      play
   TYPE       MPD
   VERSION    MPD 0.16.0
   VOLUME     82
   Readings:
     2016-03-25 17:54:10   artist          DJ Gollum vs. Basslovers United
     2016-03-25 17:54:10   audio           44100:24:2
     2016-03-25 17:54:10   bitrate         192
     2016-03-25 17:54:10   consume         0
     2016-03-25 17:54:10   elapsed         30.453
     2016-03-25 17:54:10   file            DJ Gollum vs. Basslovers United - Narcotic (Money G Video Edit) Official Video.mp3
     2016-03-25 17:54:10   id              2
     2016-03-25 17:54:10   last-modified   2015-03-15T20:47:42Z
     2016-03-25 17:54:10   mixrampdb       0.000000
     2016-03-25 17:54:10   mixrampdelay    nan
     2016-03-25 17:54:10   nextsong        4
     2016-03-25 17:54:10   nextsongid      4
     2016-03-25 17:54:10   playlist        27
     2016-03-25 17:54:10   playlistlength  25
     2016-03-25 17:54:10   pos             2
     2016-03-25 17:52:13   random          1
     2016-03-25 17:54:10   repeat          0
     2016-03-25 17:54:10   single          0
     2016-03-25 17:54:10   song            2
     2016-03-25 17:54:10   songid          2
     2016-03-25 17:53:33   state           play
     2016-03-25 17:54:10   time            217
     2016-03-25 17:54:10   title           Narcotic (Money G Video Edit) Official Video
     2016-03-25 17:54:10   volume          82
     2016-03-25 17:54:10   xfade           0
     Name:
Attributes:
   devStateIcon play:rc_PLAY:stop stop:rc_STOP:play pause:rc_PAUSE:pause
   icon       it_radio
   room       MP3



Die Frage wäre jetzt, wie bringe ich mpc dazu das update immer auf einen Stick zu fahren der gerade eingesteckt wird, automatisch!?
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

Wzut

#6
hmm , als erstes würde ich usbmount installieren , das stellt schon mal sicher das dein Stick irgendwo unter /media/USBx gefunden wird.
Als zweiten Schritt in der /etc/mpd.conf dieses /media/ als music_directory angeben und zusätzlich noch auto_update aktivieren, dann sollte das passen :
# This setting enables automatic update of MPD's database when files in
# music_directory are changed.
#
auto_update    "yes"


Axo, die letzte Version des 73_MPD Moduls ist noch nicht im svn , zu finden ist es hier : https://forum.fhem.de/index.php?topic=18517.msg400328#msg400328
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

accessburn

Stick gemountet hab ich alles schon. Autoupdate, meinst du es wird dann auch jedesmal die Playlist gecleart und neu angelegt automatisch beim einstecken?
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

Wzut

nein , wieso sollten sich Playlisten automatisch ändern ?
Wenn du mit dem mpd einzelne Files abspielen willst muss er diese in seiner DB finden
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

accessburn

Ah okay, dann hab ich mich vielleicht doof ausgedrückt. Hier ist es oft der Fall das Leute mit eigenen Mixen vorbei kommen. Ich möchte das der Stick beim einstecken ein clear und add auslöst um die neuen Files darin abzuspielen.

Denkst du sowas ist technisch möglich?
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

Wzut

Keine Ahnung wie man das direkt dem mpd beibringen könnte, aber auf fhem Ebene sollte das mit einem notify auf den Event DataBase changed machbar sein.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

accessburn

Ich tippe mal ins blaue und sage, ein Script das permanent auf den USB-Stick testet wäre einfach, jedoch wie wenn es regelmäßig ein anderer ist. Das mount greift nur auf einen einzigen Stick oder nimmt es den nächst besten der gerade eingesteckt wird?

Dann wäre es recht leicht machbar. Auf Inhalt testen, wenn ja, clear & add
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

accessburn

Möchte die Idee anderen nicht vorenthalten und auch mal wieder für gelächter unter den richtigen Programmierern sorgen :-)

cfg
define mp3add dummy
attr mp3add room MP3
attr mp3add setList on off
define mp3readd notify mp3add:on {system("sudo bash /opt/fhem/mp3readd.sh &")}


bash
/etc/init.d/mpd start
mpc clear
mpc update
mpc ls | mpc add
/etc/init.d/mpd restart
wget http://username:passwort@192.168.178.20:8083/fhem?cmd.dummy=set%20myMPD%20play&XHR=1
wget http://username:passwort@192.168.178.20:8083/fhem?cmd.dummy=set%20mp3add%20off&XHR=1


ftui
<marquee><div data-type="label" data-device="myMPD" data-get="artist" class="inline"></div> - <div data-type="label" data-device="myMPD" data-get="title" class="inline"></div></marquee>
<div data-type="switch" data-device="myMPD" data-icon="fa-chevron-left" data-set-on="previous" data-set-off="previous" data-on-color="#AA6900" data-off-color="#AA6900" data-background-icon="-"  class="inline"></div>
<div data-type="switch" data-device="myMPD" data-get="STATE" data-get-on="play" data-get-off="stop" data-icon="fa-play" data-background-icon="-" data-set-device="myMPD" data-on-color="#aa6900" data-off-color="#505050" class="inline"></div>
<div data-type="switch" data-device="myMPD" data-icon="fa-chevron-right" data-set-on="next" data-set-off="next" data-on-color="#AA6900" data-off-color="#AA6900" data-background-icon="-" class="inline"></div>
<div data-type="button" data-device="mp3add" data-icon="fa-sun-o" data-background-icon="-" data-get-on="on" data-get-off="on" data-set-device="myMPD" data-on-color="#aa6900" data-off-color="#505050" class="inline"></div>


Beim drücken des "fa-sun-o"-Buttons wird das Bash ausgelöst auf on gesetzt und ausgelöst.
Die Playlist wird gecleart, neu eingelesen und der Player gestartet per wget, damit auch der play-button auf on springt.
Anschließend wird der "fa-sun-o"-Button wieder auf "off" gesetzt. Ich stelle mir vor es ist ein Ladenbutton den man immer anklicken muss wenn man einen neuen USB-Stick einsteckt oder den Inhalt des Sticks einfach ändert.


Es darf gemeckert werden  8)
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

Wzut

Zitat von: accessburn am 25 März 2016, 22:17:57
und auch mal wieder für gelächter unter den richtigen Programmierern sorgen :-)
Sorry, verstehe ich nun nicht so ganz ....
Es gibt bei fhem meist 20 verschiedene Wege zum Ziel, wenn du nun deinen gefunden hast und damit glücklich bist ist es doch perfekt ?
Obwohl .... irgendwie reizt mich jetzt doch das Thema Stickwechsel automatisch erkennen , DB auto Updaten und default Playlist generieren :)
Mal schauen wenn ich wieder mal am MPD Modul schraube ob da nicht doch noch der Groschen fällt.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

accessburn

Ja zufrieden bin ich nicht, aber es funktioniert :-)
Wenn du solche Spielereien dann einbaust und ich dich drauf geschupst habe freut es mich.
Trotzdem wäre es cool wenn da ein "Profi" mal drüber schauen würde ob da vielleicht auch im FTUI-Bereich optimierbar sind. Denn diese Art und weise ist bestimmt nicht die beste :-)
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