FHEM - Anwendungen > Multimedia

[Neues Modul] StreamRadio

(1/81) > >>

gemx:
Hallo zusammen,

jetzt ist endlich mein erstes "richtiges" Modul fertig.
Es basiert auf Infos und Ideen aus den beiden anderen Threads, die sich mit ähnlichem beschäftigen, daher schon mal vielen Dank an alle die dort mit gewirkt haben
http://forum.fhem.de/index.php/topic,15346.0/topicseen.html
http://forum.fhem.de/index.php/topic,13650

Es handelt sich um ein Device, welches das Abspielen von WebStreams auf dem Raspberry ermöglicht.
Zusätzlich wird eigentlich nur der mplayer benötigt.

Was kann es?
Beliebige WebStreams per MPlayer abspielen und auch deren Metadaten, z.B. aktuell laufender Titel anzeigen.
Das ganze wird direkt in der Raumübersicht angezeigt, ohne weblink o.ä.
Siehe Screenshots :-)

Installation
* MPlayer, falls nicht schon vorhanden.
--- Code: ---sudo apt-get install mplayer
--- Ende Code ---
* Das angehängte Script "74_StreamRadio" ins Modul Verzeichnis kopieren, also wahrscheinlich nach /opt/fhem/FHEM
* irgendwo eine Datei mit den WebStreams anlegen. Diese Datei sollte pro Zeile immer den Namen des Streams gefolgt von "|" und dann die URL enthalten.
   also z.B.
--- Code: ---testradio|http://bla.com/34.m3u
--- Ende Code ---
. Eine Sample Datei ist ebenfalls dabei

Define

--- Code: ---define streamradio StreamRadio /opt/fhem/log/WebStreams.txt
--- Ende Code ---
unter der Vorraussetzung, dass ihr die WebStreams.txt dort abgelegt habt.

Attribute
volume_command <= das shell kommando, um die Lautstärke einzustellen. Es kann die Platzhalter von sprintf verwendet werden. Für den raspi z.B. "amixer cset numid=1 -- %s%%". Dies ist der Default, nach einem neuen define
telnetport <= Der lokale telnetport für FHEM. Achtung: Es darf keine Authentifizierung eingerichtet sein
aodevice <= -ao Parameter für mplayer, um das output device anzugeben

Commands
set <name> PLAY <StreamURL/Stationname aus Playlist>
set <name> STOP
set <name> VOLUME <Lautstärke in %>


Aktuelle Version
(Update erfolgt immer hier im ersten Posting)

V0.5
* Reading für "state" funktioniert wieder
* Die Playlist wird nach Namen sortiert angezeigt
*  set PLAY kann jetzt auch der Stationname anstelle der URL angegeben werden
* Die Lautstärke veränderung in % sollte jetzt proportional erfolgen

- V.04 Neues Attribut "aodev", um das aodevice für mplayer festzulegen
- V0.3 Neuer Befehl "VOLUME", Mehr Metadaten, Das MPlayer log wird nicht mehr geparsed sondern direkt STDOUT. Das dürfte deutlich performanter sein
- V0.2 Umbau auf Benutzung von BlockingCall
- V0.1 (initiale Version

Das war es auch schon. Als Attribut kann man noch das Logfile für den MPlayer festlegen, welches für die Ermittlung der Metadaten verwendet wird.

Noch offene Punkte
- Da der MPlayer seinerseits auch noch weitere MPlayer Prozesse forked, hat ein Kill direkt auf die PID nicht funktioniert. Derzeit klappt es nur sauber mit killall
- Telnetport der von Blocking.pm erstellt wird ermitteln. Das hat bisher leider noch nicht geklappt.

WICHTIG:
Bitte die Datei 74_StreamRadio.pm aus dem fhemwiki Artikel
http://www.fhemwiki.de/wiki/Modul_StreamRadio_Einrichtungshilfe
entnehmen, und nicht hier aus dem Anhang.
(Dieser Abschnitt wurde vom Admin nach Hinweis von Anwendern hinzugefuegt, da der Autor nicht mehr aktiv ist).

justme1968:
kurz zwei anmerkungen ohne es schon probiert zu haben:

- wenn die mplayer prozesse alle unter dem ersten hängen müsste 'pkill -P' funktionieren

- BlockingCall sollte eigentlich keine performance probleme haben. wenn du es selber mit fork machst und nicht so aufräumst wie es BlockingCall macht wird fhem z.b. bei einem 'shutdown restart' hängen bleiben oder das abziehen und wieder anstecken eines cul geht nicht.

gruss
  andre

gemx:
Also "pkill -P" hatte ich neben vielen anderen Varianten ebenfalls ausprobiert und es hat mir nur einen MPLAYER gekilled, aber nicht den, den MPLAYER selbst geforked hat.
Wegen dem BlockingCall schaue ich gerne nochmal.

Ist ja mein erstes Modul bzw. die ersten Gehversuche in Perl und FHEM

kvo1:
Hallo gemx,

zunächst nur gelesen,nicht getestet (kommt heute noch) .. Hut ab!

Aber was hat es mit den Definitionen
# set <name> <key> <value>
#
# where <key> is one of mute, volume, remoteControl or off
# examples:
# set <name> PLAY <StreamURL>           <Start playback the selected stream>
# set <name> STOP          <Stops playback>

auf sich, kann ich mir hier einen Play und Stop - Button definieren wie beim Haus-Radio ??



gemx:
Ja genau. Man kann auch einen Play und Stop Button bauen.
Ich fand das zwar wie ich das gemacht schöner, wollte aber dennoch die Möglichkeit offen lassen ;-)

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln