Modul StreamRadio Einrichtungshilfe: Unterschied zwischen den Versionen

Aus FHEMWiki
Keine Bearbeitungszusammenfassung
(Ersetzung von Forum-Links mit Vorlage Link2Forum)
 
(31 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
'''(in Bearbeitung!)Modul StreamRadio zum hören von Webradiostreams über FHEM und Linux '''
{{Infobox Modul
|Name=StreamRadio
|ModPurpose=WebStreams über MPlayer unter FHEM auf Linux-Plattformen abspielen
|ModType=x
<!-- |ModCategory=?? -->
<!-- |ModCmdRef=StreamRadio -- nicht erforderlich, da Modultyp x -->
|ModForumArea=Multimedia
|ModTechName=74_StreamRadio.pm
|ModOwner=vertretungsweise fiedel}}
{{Randnotiz|RNTyp=y|RNText=Für das Ausprobieren dieser Anleitung sollten die hier verlinkten Modulversionen verwendet werden! Die Modulversion "mit Radiotext" produziert viele Fehler im Log. Das Modul StreamRadio ist insgesamt nicht perfekt und sucht nach einem Developer / Maintainer, der es weiterentwickelt und supportet. Aktuell wird es von einigen Forenmitgliedern in Selbsthilfe unterstützt.}}
''' Modul StreamRadio zum hören von Webradiostreams über FHEM und Linux '''


Diese Anleitung basiert auf diesem Thread: [http://forum.fhem.de/index.php/topic,18531.0.html]<br>   
Diese Anleitung basiert auf diesem Thread: {{Link2Forum|Topic=18531}}<br>   
Download StreamRadio- Modul mit Radiotext (Fehlerbehaftet aber funktionsfähig): [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=11882]<br>  
Download StreamRadio- Modul mit Radiotext (etwas Fehlerbehaftet aber funktionsfähig): [https://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=57348]<br>  
Download StreamRadio- Modul ohne Radiotext: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=17949]<br>
Download StreamRadio- Modul ohne Radiotext: [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=17949]<br>
Download Beispieldatei "WebStreams.txt": [http://forum.fhem.de/index.php?action=dlattach;topic=18531.0;attach=10592]<br>


== Aufgabenstellung ==
== Aufgabenstellung ==
Zeile 11: Zeile 22:
Es handelt sich um ein Device, welches das Abspielen von WebStreams auf dem Raspberry oder anderen vollwertigen Linux- Plattformen ermöglicht. Das Modul kann beliebige WebStreams per MPlayer abspielen und auch deren Metadaten, z.B. aktuell laufender Titel anzeigen. Das ganze wird direkt in der Raumübersicht angezeigt.
Es handelt sich um ein Device, welches das Abspielen von WebStreams auf dem Raspberry oder anderen vollwertigen Linux- Plattformen ermöglicht. Das Modul kann beliebige WebStreams per MPlayer abspielen und auch deren Metadaten, z.B. aktuell laufender Titel anzeigen. Das ganze wird direkt in der Raumübersicht angezeigt.


== Anwendungsbeispiele ==
== Anwendung ==
 
Kommandos innerhalb FHEM:
<nowiki>set <name> PLAY <StreamURL/Stationname aus Playlist>
set <name> STOP
set <name> VOLUME <Lautstärke in %></nowiki>
Attribute:
<nowiki>volume_command: das shell kommando, um die Lautstärke einzustellen. Für den raspi z.B. "amixer cset numid=2 -- %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</nowiki>


== Voraussetzungen Betriebssystem ==
== Voraussetzungen Betriebssystem ==
Installation des mplayer, falls nicht bereits vorhanden:
Es muss ein Internetzugang eingerichtet sein.
  <nowiki>sudo apt-get install mplayer
Installation des mplayer und des amixer, falls nicht bereits vorhanden:
apt-get install alsa-utils</nowiki>
  <nowiki>user@debian:~# sudo apt-get install mplayer
user@debian:~# sudo apt-get install alsa-utils mpg123</nowiki>
Berechtigungen für Benutzer fhem unter Linux vorbereiten.
Berechtigungen für Benutzer fhem unter Linux vorbereiten.
Diese Schritte sind generell (nicht nur für das Radio) notwendig,<br>
Diese Schritte sind generell (nicht nur für das Radio) notwendig, wenn FHEM auf Linux- Shellbefehle zugreifen können soll:  
wenn FHEM auf Linux- Shellbefehle zugreifen können soll:  


Benutzer fhem zu den Gruppen "dialout", "audio", "mail" und "sudoers" hinzufügen:
Benutzer fhem zu den Gruppen "dialout", "audio", "mail" und "sudoers" hinzufügen:
  <nowiki>addgroup fhem dialout  
  <nowiki>user@debian:~# sudo addgroup fhem dialout  
addgroup fhem mail
user@debian:~# sudo addgroup fhem mail
addgroup fhem audio
user@debian:~# sudo addgroup fhem audio
gpasswd -a fhem sudo</nowiki>
user@debian:~# sudo addgroup fhem sudo</nowiki>


Überprüfen kann man die Zuordnung mit:
Überprüfen kann man die Zuordnung mit:
  <nowiki>root@debian:~# groups fhem
  <nowiki>user@debian:~# sudo groups fhem
fhem : dialout mail sudo audio</nowiki>
fhem : dialout mail sudo audio</nowiki>


Bearbeiten der sudo- Konfiguration (damit fhem bei sudo- Zugriffen kein Passwort liefern muss):
Bearbeiten der sudo- Konfiguration (damit fhem bei sudo- Zugriffen kein Passwort liefern muss):
  <nowiki>visudo</nowiki>
  <nowiki>user@debian:~# sudo visudo</nowiki>
Im nun geöffneten Editorfenster unter den ggf. bereits vorhandenen Einträgen folgende Zeile einfügen:
Im nun geöffneten Editorfenster unter den ggf. bereits vorhandenen Einträgen folgende Zeile einfügen:
  <nowiki>fhem    ALL=NOPASSWD: ALL</nowiki>
  <nowiki>fhem    ALL=NOPASSWD: ALL</nowiki>
Datei jetzt speichern und den Rechner neu starten.<br>  
Datei jetzt speichern und den Rechner neu starten.<br>  
'''Achtung:''' Mit diesem Eintrag in die sudo- Konfigdatei werden dem Benutzer fhem weitreichende Befugnisse eingeräumt. Diese können später sinnvoll eingeschränkt werden, indem man den Vollzugriff nur für bestimmte Befehle/Anwendungen freigibt.
'''Hinweis:''' Mit diesem Eintrag in die sudo- Konfigdatei werden dem Benutzer fhem weitreichende Befugnisse eingeräumt. Diese können später sinnvoll eingeschränkt werden, indem man den Vollzugriff nur für bestimmte Befehle/Anwendungen freigibt.
 
 
== Testen des mplayer und auslesen der Steuerbefehle ==
 
 
 


== Testen des mplayer und auslesen der Mixer- Steuerbefehle ==
Absspielen eines Radiostreams auf der Kommandozeile um Funktion bis hier hin zu testen:
<nowiki>user@debian:~# sudo mplayer -ao alsa http://fritz.de/livemp3</nowiki>
Die Lautstärke kann während der Wiedergabe mit "/" und "*" geändert werden.


Für die Steuerung des Mixers von FHEM aus benötigen wir dessen Steuercodes.<br>
Diese lesen wir wie folgt aus:
<nowiki>user@debian:~# sudo amixer controls
numid=1,iface=MIXER,name='PCM Playback Switch'
numid=2,iface=MIXER,name='PCM Playback Volume'
numid=3,iface=MIXER,name='Mic Capture Switch'
numid=4,iface=MIXER,name='Mic Capture Volume'
numid=5,iface=MIXER,name='Auto Gain Control'</nowiki>
Die Anzahl der Steuermöglichkeiten und die zugehörige "numid" variiert von Version zu Version. Für die Einrichtung des Attributs für die Lautstärke des StreamRadio benötigen wir hier die numid des controls "PCM Playback Volume"(2).


Hat man mehrere Soundkarten im System, so kann man sich die Kartennummer per alsamixer und F6 ermitteln (zb. Nummer 4) und dies amixer wie folgt mitteilen
<nowiki>user@debian:~# sudo alsamixer
user@debian:~# sudo amixer -c4 controls</nowiki>


'''Hinweis:''' Sollte durch eventuell zuvor erfolgte Versuche das StreamRadio durch eine falsche numid die Wiedergabe stummgeschaltet haben, kann man sie mit folgendem Befehl einschalten (numid muss auch hier zu den controls des eigenen amixer passen!):
<nowiki>user@debian:~# sudo amixer cset numid=1 -- 1</nowiki>
Es wird der "PCM Playback Switch" von 0 auf 1 gesetzt.


== Definition unter FHEM ==
== Definition unter FHEM ==
Zuerst muss der Telnet- Port geöffnet und frei von Passwortschutz sein (CFG):
<nowiki>define telnetPort telnet 7072</nowiki>
Dann muss in einem sinnvoll gewählten Verzeichnis die Datei "WebStreams.txt" erstellt und gefüllt werden.<br>
Darin wird die Liste der Sender gespeichert in der Form "Sendername|URL":
<nowiki>user@debian:/opt/fhem# sudo nano WebStreams.txt</nowiki>
Mit dem Inhalt (Beispiel, kann selbst erweitert werden):
<nowiki>Eins Live|http://www.wdr.de/wdrlive/media/einslive.m3u
Hitradio FFH|http://streams.ffh.de/radioffh/mp3/hqlivestream.m3u
FFH Top 40|http://streams.ffh.de/ffhchannels/mp3/hqtop40.m3u
FFH 80er|http://streams.ffh.de/ffhchannels/mp3/hq80er.m3u
Radio Fritz|http://fritz.de/livemp3</nowiki>
Und der Berechtigung:
<nowiki>user@debian:/opt/fhem# sudo chown fhem:root WebStreams.txt
user@debian:/opt/fhem# sudo chmod 660 WebStreams.txt</nowiki>


Das Radio selbst wird beispielsweise so definiert (CFG), nachdem es in den FHEM- Modul- Ordner kopiert und geladen wurde (shutdown restart):
<nowiki># Stream Radio:
define SRadio StreamRadio /opt/fhem/WebStreams.txt
attr SRadio telnetport 7072
# attr SRadio volume_command amixer cset numid=2 -- %s%%
attr SRadio room Radio
attr SRadio group Radio</nowiki>


'''Hinweis:''' Das attr. "volume_command" steht standartmäßig (undefiniert) auf "amixer cset numid=2 -- %s%%".<br>
Sollte sich die Lautstärke nicht verstellen lassen, kann die numid entsprechend angepasst werden.<br>
Dazu bitte die Ausgabe von "sudo amixer controls" wie oben gezeigt heranziehen.


== Verwendung ==
== Zusatzfunktion Volume- Slider und Bedienung per FS20- Wandtaster ==
 
Mit dem Slider kan in FHEM die Lautstärke stufenlos verstellt werden. Mit einem FS20- Taster kann bei kurzem Tastendruck das Radio mit dem voreingestellten Sender ein und ausgeschaltet werden. Drückt man die gleichen Tasten lange, fährt die Lautstärke in 10er Schritten hoch, oder herunter.  
 
Einfach in die fhem.cfg einfügen, speichern und an den eigenen Taster anpassen:<br>
 
== Beschreibung der Funktion ==
 
 
== Temporär: Bearbeitungsquellen aus Thread ==
* 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: [Auswählen]
 
testradio|http://bla.com/34.m3u
 
. Eine Sample Datei ist ebenfalls dabei
 
Define
Code: [Auswählen]
 
define streamradio StreamRadio /opt/fhem/log/WebStreams.txt
 
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 %>


<nowiki># Dummy für Volume- Slider
define Dum_Volume_D dummy
attr Dum_Volume_D alias Volume
attr Dum_Volume_D setList state:slider,0,1,100
attr Dum_Volume_D webCmd state
attr Dum_Volume_D room Radio
attr Dum_Volume_D group Volume


Aktuelle Version
# Notify für Volume- Slider
(Update erfolgt immer hier im ersten Posting)
define Func_Volume_N notify Dum_Volume_D {\
my $vol = Value("Dum_Volume_D");;\
fhem "set SRadio VOLUME $vol";;\
}
attr Func_Volume_N room Radio


V0.5
# FS20 Tastenpaar Radio Play/Stop und Vol+/Vol-
* Reading für "state" funktioniert wieder
define Radio FS20 1111 11
* Die Playlist wird nach Namen sortiert angezeigt
attr Radio dummy 1
*  set PLAY kann jetzt auch der Stationname anstelle der URL angegeben werden
attr Radio group Geräte_Taster
* Die Lautstärke veränderung in % sollte jetzt proportional erfolgen
attr Radio icon rc_RADIO
attr Radio room Radio


- V.04 Neues Attribut "aodev", um das aodevice für mplayer festzulegen
# Radio ein-/ ausschalten und Lautstärke einstellen:
- V0.3 Neuer Befehl "VOLUME", Mehr Metadaten, Das MPlayer log wird nicht mehr geparsed sondern direkt STDOUT. Das dürfte deutlich performanter sein
define Func_Radio_Play_N notify Radio:* { \
- V0.2 Umbau auf Benutzung von BlockingCall
\
- V0.1 (initiale Version
  my $R_State = (ReadingsVal("Radio", "state", "off"));;\
  my $Vol_plus = Value("Dum_Volume_D") + 10;;\
  my $Vol_minus = Value("Dum_Volume_D") - 10;;\
\
  if ($R_State eq "on") { \
    fhem("set SRadio PLAY Eins Live");;\
  } \
  if ($R_State eq "off") { \
    fhem("set SRadio STOP");;\
  } \
  if ($R_State eq "dimup" and $Vol_plus >= 100) { \
    fhem("set Dum_Volume_D 100");;\
  } \
  if ($R_State eq "dimdown" and $Vol_minus <= 0) { \
    fhem("set Dum_Volume_D 0");;\
  } \
  if ($R_State eq "dimup" and $Vol_plus <= 100) { \
    fhem("set Dum_Volume_D $Vol_plus");;\
  } \
  if ($R_State eq "dimdown" and $Vol_minus >= 0) { \
    fhem("set Dum_Volume_D $Vol_minus");;\
  } \
}
attr Func_Radio_Play_N room Radio</nowiki>


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.
== Zusatzfunktion Radiowiedergabe bei Text to Speech- Meldungen unterbrechen ==
Funktion fährt für die Ansage die Lautstärke hoch und merkt sich den Sender.<br>
Einfach in die fhem.cfg einfügen, speichern und an den eigenen TTS- Modulnamen anpassen:
<nowiki># Bei TTS- Meldung Radio unterbrechen, Lautstärke hochfahren,
# nach Ansage Radio wieder einschalten, Lautstärke auf alten Wert fahren.
define Func_VolAut_N notify myTTS { \
\
  my $Radio = (Value("SRadio"));;\
  my $Station = ReadingsVal("SRadio", "StreamURL", "");;\
  my $Old_Vol = (OldValue("Dum_Volume_D"));;\
\
  if ($Radio eq "playing") { \
        fhem("set SRadio STOP ;; set Dum_Volume_D 99");;\
        fhem("define Radio_Comeback_A at +00:00:10 set SRadio PLAY $Station;;;; set Dum_Volume_D $Old_Vol");;\
  } \
  if ($Radio eq "stopped") { \
        fhem("set Dum_Volume_D 99");;\
    fhem("define Vol_Res_A at +00:00:10 set Dum_Volume_D $Old_Vol");;\
  } \
}
attr Func_VolAut_N room Radio</nowiki>


Noch offene Punkte
== Einbetten in Tablet-UI ==
- 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
<nowiki><div data-type="select" data-device="streamradio" data-list="STREAMS" data-get="STREAM" data-set="STREAM" class="cell w3x select"></div></nowiki>
- Telnetport der von Blocking.pm erstellt wird ermitteln. Das hat bisher leider noch nicht geklappt.


== Ende ==


[[Kategorie:HOWTOS]]
[[Kategorie:HOWTOS]]

Aktuelle Version vom 19. März 2017, 20:49 Uhr

Modul StreamRadio Einrichtungshilfe
Zweck / Funktion
WebStreams über MPlayer unter FHEM auf Linux-Plattformen abspielen
Allgemein
Typ Inoffiziell
Details
Dokumentation siehe Forum
Support (Forum) Multimedia
Modulname 74_StreamRadio.pm
Ersteller vertretungsweise fiedel
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!
Emblem-question-yellow.svgFür das Ausprobieren dieser Anleitung sollten die hier verlinkten Modulversionen verwendet werden! Die Modulversion "mit Radiotext" produziert viele Fehler im Log. Das Modul StreamRadio ist insgesamt nicht perfekt und sucht nach einem Developer / Maintainer, der es weiterentwickelt und supportet. Aktuell wird es von einigen Forenmitgliedern in Selbsthilfe unterstützt.

Modul StreamRadio zum hören von Webradiostreams über FHEM und Linux

Diese Anleitung basiert auf diesem Thread: Thema
Download StreamRadio- Modul mit Radiotext (etwas Fehlerbehaftet aber funktionsfähig): [1]
Download StreamRadio- Modul ohne Radiotext: [2]
Download Beispieldatei "WebStreams.txt": [3]

Aufgabenstellung

Mit dieser Anleitung soll der unübersichtliche Inhalt des o.g. Ursprungsthreads zusammengefasst werden.

Was kann das Modul?

Es handelt sich um ein Device, welches das Abspielen von WebStreams auf dem Raspberry oder anderen vollwertigen Linux- Plattformen ermöglicht. Das Modul kann beliebige WebStreams per MPlayer abspielen und auch deren Metadaten, z.B. aktuell laufender Titel anzeigen. Das ganze wird direkt in der Raumübersicht angezeigt.

Anwendung

Kommandos innerhalb FHEM:

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

Attribute:

volume_command: das shell kommando, um die Lautstärke einzustellen. Für den raspi z.B. "amixer cset numid=2 -- %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

Voraussetzungen Betriebssystem

Es muss ein Internetzugang eingerichtet sein. Installation des mplayer und des amixer, falls nicht bereits vorhanden:

user@debian:~# sudo apt-get install mplayer
user@debian:~# sudo apt-get install alsa-utils mpg123

Berechtigungen für Benutzer fhem unter Linux vorbereiten. Diese Schritte sind generell (nicht nur für das Radio) notwendig, wenn FHEM auf Linux- Shellbefehle zugreifen können soll:

Benutzer fhem zu den Gruppen "dialout", "audio", "mail" und "sudoers" hinzufügen:

user@debian:~# sudo addgroup fhem dialout 
user@debian:~# sudo addgroup fhem mail
user@debian:~# sudo addgroup fhem audio
user@debian:~# sudo addgroup fhem sudo

Überprüfen kann man die Zuordnung mit:

user@debian:~# sudo groups fhem
fhem : dialout mail sudo audio

Bearbeiten der sudo- Konfiguration (damit fhem bei sudo- Zugriffen kein Passwort liefern muss):

user@debian:~# sudo visudo

Im nun geöffneten Editorfenster unter den ggf. bereits vorhandenen Einträgen folgende Zeile einfügen:

fhem    ALL=NOPASSWD: ALL

Datei jetzt speichern und den Rechner neu starten.
Hinweis: Mit diesem Eintrag in die sudo- Konfigdatei werden dem Benutzer fhem weitreichende Befugnisse eingeräumt. Diese können später sinnvoll eingeschränkt werden, indem man den Vollzugriff nur für bestimmte Befehle/Anwendungen freigibt.

Testen des mplayer und auslesen der Mixer- Steuerbefehle

Absspielen eines Radiostreams auf der Kommandozeile um Funktion bis hier hin zu testen:

user@debian:~# sudo mplayer -ao alsa http://fritz.de/livemp3

Die Lautstärke kann während der Wiedergabe mit "/" und "*" geändert werden.

Für die Steuerung des Mixers von FHEM aus benötigen wir dessen Steuercodes.
Diese lesen wir wie folgt aus:

user@debian:~# sudo amixer controls
numid=1,iface=MIXER,name='PCM Playback Switch'
numid=2,iface=MIXER,name='PCM Playback Volume'
numid=3,iface=MIXER,name='Mic Capture Switch'
numid=4,iface=MIXER,name='Mic Capture Volume'
numid=5,iface=MIXER,name='Auto Gain Control'

Die Anzahl der Steuermöglichkeiten und die zugehörige "numid" variiert von Version zu Version. Für die Einrichtung des Attributs für die Lautstärke des StreamRadio benötigen wir hier die numid des controls "PCM Playback Volume"(2).

Hat man mehrere Soundkarten im System, so kann man sich die Kartennummer per alsamixer und F6 ermitteln (zb. Nummer 4) und dies amixer wie folgt mitteilen

user@debian:~# sudo alsamixer
user@debian:~# sudo amixer -c4 controls

Hinweis: Sollte durch eventuell zuvor erfolgte Versuche das StreamRadio durch eine falsche numid die Wiedergabe stummgeschaltet haben, kann man sie mit folgendem Befehl einschalten (numid muss auch hier zu den controls des eigenen amixer passen!):

user@debian:~# sudo amixer cset numid=1 -- 1

Es wird der "PCM Playback Switch" von 0 auf 1 gesetzt.

Definition unter FHEM

Zuerst muss der Telnet- Port geöffnet und frei von Passwortschutz sein (CFG):

define telnetPort telnet 7072

Dann muss in einem sinnvoll gewählten Verzeichnis die Datei "WebStreams.txt" erstellt und gefüllt werden.
Darin wird die Liste der Sender gespeichert in der Form "Sendername|URL":

user@debian:/opt/fhem# sudo nano WebStreams.txt

Mit dem Inhalt (Beispiel, kann selbst erweitert werden):

Eins Live|http://www.wdr.de/wdrlive/media/einslive.m3u
Hitradio FFH|http://streams.ffh.de/radioffh/mp3/hqlivestream.m3u
FFH Top 40|http://streams.ffh.de/ffhchannels/mp3/hqtop40.m3u
FFH 80er|http://streams.ffh.de/ffhchannels/mp3/hq80er.m3u
Radio Fritz|http://fritz.de/livemp3

Und der Berechtigung:

user@debian:/opt/fhem# sudo chown fhem:root WebStreams.txt
user@debian:/opt/fhem# sudo chmod 660 WebStreams.txt

Das Radio selbst wird beispielsweise so definiert (CFG), nachdem es in den FHEM- Modul- Ordner kopiert und geladen wurde (shutdown restart):

# Stream Radio:
define SRadio StreamRadio /opt/fhem/WebStreams.txt
attr SRadio telnetport 7072
# attr SRadio volume_command amixer cset numid=2 -- %s%%
attr SRadio room Radio
attr SRadio group Radio

Hinweis: Das attr. "volume_command" steht standartmäßig (undefiniert) auf "amixer cset numid=2 -- %s%%".
Sollte sich die Lautstärke nicht verstellen lassen, kann die numid entsprechend angepasst werden.
Dazu bitte die Ausgabe von "sudo amixer controls" wie oben gezeigt heranziehen.

Zusatzfunktion Volume- Slider und Bedienung per FS20- Wandtaster

Mit dem Slider kan in FHEM die Lautstärke stufenlos verstellt werden. Mit einem FS20- Taster kann bei kurzem Tastendruck das Radio mit dem voreingestellten Sender ein und ausgeschaltet werden. Drückt man die gleichen Tasten lange, fährt die Lautstärke in 10er Schritten hoch, oder herunter. Einfach in die fhem.cfg einfügen, speichern und an den eigenen Taster anpassen:

# Dummy für Volume- Slider
define Dum_Volume_D dummy
attr Dum_Volume_D alias Volume
attr Dum_Volume_D setList state:slider,0,1,100
attr Dum_Volume_D webCmd state
attr Dum_Volume_D room Radio
attr Dum_Volume_D group Volume

# Notify für Volume- Slider
define Func_Volume_N notify Dum_Volume_D {\
my $vol = Value("Dum_Volume_D");;\
fhem "set SRadio VOLUME $vol";;\
}
attr Func_Volume_N room Radio

# FS20 Tastenpaar Radio Play/Stop und Vol+/Vol-
define Radio FS20 1111 11
attr Radio dummy 1
attr Radio group Geräte_Taster
attr Radio icon rc_RADIO
attr Radio room Radio

# Radio ein-/ ausschalten und Lautstärke einstellen: 
define Func_Radio_Play_N notify Radio:* { \
\
  my $R_State = (ReadingsVal("Radio", "state", "off"));;\
  my $Vol_plus = Value("Dum_Volume_D") + 10;;\
  my $Vol_minus = Value("Dum_Volume_D") - 10;;\
\
  if ($R_State eq "on") { \
    fhem("set SRadio PLAY Eins Live");;\
  } \
  if ($R_State eq "off") { \
    fhem("set SRadio STOP");;\
  } \
  if ($R_State eq "dimup" and $Vol_plus >= 100) { \
    fhem("set Dum_Volume_D 100");;\
  } \
  if ($R_State eq "dimdown" and $Vol_minus <= 0) { \
    fhem("set Dum_Volume_D 0");;\
  } \
  if ($R_State eq "dimup" and $Vol_plus <= 100) { \
    fhem("set Dum_Volume_D $Vol_plus");;\
  } \
  if ($R_State eq "dimdown" and $Vol_minus >= 0) { \
    fhem("set Dum_Volume_D $Vol_minus");;\
  } \
}
attr Func_Radio_Play_N room Radio

Zusatzfunktion Radiowiedergabe bei Text to Speech- Meldungen unterbrechen

Funktion fährt für die Ansage die Lautstärke hoch und merkt sich den Sender.
Einfach in die fhem.cfg einfügen, speichern und an den eigenen TTS- Modulnamen anpassen:

# Bei TTS- Meldung Radio unterbrechen, Lautstärke hochfahren,
# nach Ansage Radio wieder einschalten, Lautstärke auf alten Wert fahren.
define Func_VolAut_N notify myTTS { \
\
  my $Radio = (Value("SRadio"));;\
  my $Station = ReadingsVal("SRadio", "StreamURL", "");;\
  my $Old_Vol = (OldValue("Dum_Volume_D"));;\
\
  if ($Radio eq "playing") { \
        fhem("set SRadio STOP ;; set Dum_Volume_D 99");;\
        fhem("define Radio_Comeback_A at +00:00:10 set SRadio PLAY $Station;;;; set Dum_Volume_D $Old_Vol");;\
  } \
  if ($Radio eq "stopped") { \
        fhem("set Dum_Volume_D 99");;\
    	fhem("define Vol_Res_A at +00:00:10 set Dum_Volume_D $Old_Vol");;\
  } \
}
attr Func_VolAut_N room Radio

Einbetten in Tablet-UI

<div data-type="select" data-device="streamradio" data-list="STREAMS" data-get="STREAM" data-set="STREAM" class="cell w3x select"></div>

Ende