[Neues Modul] StreamRadio

Begonnen von gemx, 08 Januar 2014, 19:31:54

Vorheriges Thema - Nächstes Thema

Leinad

Sorry, ich bins schon wieder...

Zerbreche mir gerade den Kopf, wie ich mit einem Befehl zum nächsten Sender in der Liste springen kann.

Hat jemand eine Idee wie man das umsetzen könnte?

Ich möchte das Radio mit einem Wandtaster bedienen und mit kurzem Tastendruck den nächster Sender auswählen.

fiedel

#241
Du könntest z.B. eine Variable inkrementieren und je nach erreichtem Wert einen anderen Befehl abstzen (Radio spiele Sender X).
Hier mal ein Beispiel von mir, womit ich 3 Lampen nacheinander mit einem Taster durchschalte. Da ist sogar noch die Log- Funktion zum weiterentwickeln dabei. Wichtig: "l_state" muss bei "attr global userattr ..." eingetragen werden. Die Variable mit "-1" wird nicht verwendet, die kannst du aber nutzen um mit 2 Tastern auf und ab zu schalten. Kannst dein Programm dann ja auch wieder hier reinstellen.

# Weiterschaltfunktion Licht mit Taster

define Func_FBHM1_Btn_1PS notify FB_HM_1_Btn_01.Short.* { \
\
my $light_state = AttrVal("Func_FBHM1_Btn_1PS","l_state",2) ;;\
my $light_cntup = AttrVal("Func_FBHM1_Btn_1PS","l_state",2) + 1 ;;\
my $light_cntdn = AttrVal("Func_FBHM1_Btn_1PS","l_state",2) - 1 ;;\
Log 1, "light_state:$light_state , light_cntup:$light_cntup , light_cntdn:$light_cntdn ";; \
\
if(!$defs{Res_l_stateS_A}) { \
fhem("define Res_l_stateS_A at +00:00:30 attr Func_FBHM1_Btn_1PS l_state 1") ;;\
}\
if ($light_state == 1) { \
fhem("attr Func_FBHM1_Btn_1PS l_state 2") ;;\
fhem("set Beleuchtung_Gar_02 on-for-timer 300") ;;\
}\
elsif ($light_state >= 4) { \
  if($defs{Res_l_stateS_A}) {fhem("delete Res_l_stateS_A")} ;;\
fhem("attr Func_FBHM1_Btn_1PS l_state 1") ;;\
fhem("set Beleuchtung_Gar_04 off") ;;\
}\
elsif ($light_state >= 2) { \
fhem("attr Func_FBHM1_Btn_1PS l_state $light_cntup") ;;\
fhem("set Beleuchtung_Gar_0$light_state off") ;;\
fhem("set Beleuchtung_Gar_0$light_cntup on-for-timer 300") ;;\
}\
}
attr Func_FBHM1_Btn_1PS l_state 1
FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

Leinad

#242
Danke! Absolut cool... habs irgendwie hinbekommen! (Obwohl ich eine Zeile im Code nicht verstehe  ::) Habe ich unten angehängt... vielleicht kannst es mir kurz erklären?)

Also... kurzer Tastendruck hoch, schaltet die Sender durch... oder wenn das Radio aus war, schaltet der Tastendruck den alten Sender wieder ein.
Kurzer Tastendruck runter schaltet das Radio aus, wiederholter Tastendruck runter schaltet das Radio auf dem alten Sender wieder ein.

Hier meine zwei notifys... vielleicht kann ja jemand was damit anfangen:


Func_SRadio_weiterschalten


Wandtaster_1_Btn1:Short.* {
my $Radio_state = AttrVal("Func_SRadio_weiterschalten","R_state",2);
my $Radio_cntup = AttrVal("Func_SRadio_weiterschalten","R_state",2) + 1;
}
if ($SRadio_state <1 ){
fhem("attr Func_SRadio_weiterschalten R_state 1") ;
}
if ($Radio_state == 1) {
fhem("attr Func_SRadio_weiterschalten R_state $Radio_cntup") ;
fhem("set SRadio PLAY SWR1") ;
}
elsif ($Radio_state == 2) {
fhem("attr Func_SRadio_weiterschalten R_state $Radio_cntup") ;
fhem("set SRadio PLAY SWR3") ;
}
elsif ($Radio_state == 3) {
fhem("attr Func_SRadio_weiterschalten R_state $Radio_cntup") ;
fhem("set SRadio PLAY Bayern3") ;
}
elsif ($Radio_state == 4) {
fhem("attr Func_SRadio_weiterschalten R_state $Radio_cntup") ;
fhem("set SRadio PLAY DasDing") ;
}
elsif ($Radio_state == 5) {
fhem("attr Func_SRadio_weiterschalten R_state $Radio_cntup") ;
fhem("set SRadio PLAY FFH 80er") ;
}

elsif ($Radio_state >= 6) {

fhem("attr Func_SRadio_weiterschalten R_state 1") ;
fhem("set SRadio PLAY Hitradio FFH") ;
}
}



Func_SRadio_aus

Wandtaster_1_Btn2:Short.* {
my $Radio_cntdn = AttrVal("Func_SRadio_weiterschalten","R_state",2) -1;

if ((Value("SRadio")) eq "playing") {
   fhem ("set SRadio STOP");
fhem ("attr Func_SRadio_weiterschalten R_state $Radio_cntdn") ;
   }
else {
     fhem ("trigger Wandtaster_1_Btn1 Short");
  }
}




Was ich nicht verstehe sind folgende Zeilen:

if(!$defs{Res_l_stateS_A}) { \
fhem("define Res_l_stateS_A at +00:00:30 attr Func_FBHM1_Btn_1PS l_state 1") ;;\

Warum machst du das? Und was passiert da genau? l_state müsste doch schon einen Wert haben?

In meinem Beispiel will ich ja den alten Wert behalten...  damit ich nicht irgendwie einen undefinierten Zustand bekomme habe ich Werte <1 abgefangen. Ist das nötig?





fiedel

Hey, cool dass du es hinbekommen hast! Sowas hatte ich für das Radio auch diffus im Hinterkopf, aber im Moment wirklich null Zeit zum tüfteln. Vielen Dank fürs reinstellen!

Die ominöse Zeile macht folgendes: Wenn Res_l_stateS_A nicht bereits vorhanden ist ( if(!$defs{Res_l_stateS_A} ) -> definiere dieses at und setze damit in 30 sek den Wert von "l_state" auf 1. Also quasi eine Initialisierungsfunktion für das Zählwerk. Damit stelle ich sicher, dass wenn ich 1 mal drücke und Lampe 1 geht an, beim nächsten Mal wieder zuerst Lampe 1 an geht und nicht Lampe 2.
FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

Leinad

Ok, jetzt ist es klar... danke!

Ich habe nun noch die Sendernamen mit ivona.com/ als .mp3 gespeichert und lasse mir diese ansagen, damit ich auch eine Rückmeldung über den eingestellten Sender habe.

Einfach klasse was alles möglich ist  :D

Danke nochmal für deine Hilfe.

accessburn

Jetzt mal ne andere doofe Frage:

Warum schaffe ich es nicht den Room "Radio" mit einem Icon auszustatten?
Werd bald blöd bei so einem Kinderkram  ;D
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

kvo1

Zitat von: accessburn am 17 September 2015, 17:42:29
Jetzt mal ne andere doofe Frage:

Warum schaffe ich es nicht den Room "Radio" mit einem Icon auszustatten?
Werd bald blöd bei so einem Kinderkram  ;D
- weil es das icon nicht gibt ?
- weil es bei "attr WEBxxxx roomIcons...." falsch angegeben ist .

zeig doch mal die def´s
RPi1: mit CUL: HM-CC-RT-DN,HM-ES-PMSw1-Pl,HM-LC-BL1-FM,HM-LC-Bl1PBU-FM,HM-LC-SW1-PL2,HM-SCI-3-FM,HM-SEC-SC-2,KFM-Sensor
RPi2: Viessmann(optolink) mit 99_VCONTROL.pm,
Cubietruck: Wheezy / Apache / Owncloud
Cubietruck: Armbian(Jessie) / fhem 5.7 / LMS 7.9
RPi3: (Test) mit 7" Touch  &  HM-MOD-RPI-PCB

ChristianR

Hallo zusammen,

ich war bis hierhin stiller Mitleser und möchte mich nun auch mal zu Wort melden...  ;D
Folgende Konstallation habe ich bisher nachgebaut:

Voraussetzungen für StreamRadio auf dem Pi ausserhalb von FHEM --> Funktioniert soweit über die Konsole, Musik wird über meinen Bluetoothlautsprecher wiedergegeben.
StreamRadio in FHEM eingerichtet --> Funktioniert soweit auch, Musik wird ebenfalls über die Bluetoothlautsprecher wiedergegeben
TTS in FHEM eingerichtet (gem. Wiki aber den Klinkenanschluss ignoriert) --> Funktioniert nur bedingt über Bluetooth, da die Ausgabe nur abgehakt ausgegeben wird und etwas vom Anfang und Ende fehlt. In beiden Modulen habe ich das aodev über alsa:device=bluetooth definiert.

Nach der TTS Einrichtung wollte ich das Radio wieder benutzen und nun habe ich sporadisch Fehler welche sich wie folgt darstellen:
FHEM gibt beim Radio keinen Mucks mehr von sich
Putty Konsole probiert einen Stream zu starten und anstatt: starting playback... endet es mit Audio: no audio
Neustart vom Pi und erneuter Versuch den Stream zu starten funktioniert. Bis er irgendwann wieder mit obrigen Fehler abbricht.

Ich habe die Vermutung ob es evtl. daran liegen könnte, dass ich über diesen einen Bluetoothdongle gleichzeitig PRESENCE, TTS und STREAMRADIO nutze? Kann das sein?
Wenn jemand weitere Informationen benötigt und mir helfen möchte, reiche ich auch gerne noch benötigte Logeinträge oder Konfigurationen nach. Wollte den Post nur nicht direkt ellenlang aufblasen und mit vielleicht unnötigen Infos überschwemmen...  ;)

Vielen Dank vorweg.

ChristianR

Niemand eine Idee?  ;)

Übergangsweise nutze ich derzeit Online Radio über meine Tablet UI als direkten Streamzugriff.
Somit wird die Musik sofort auf dem genutzten Endgerät (Wand-Tablet, Handy oder Notebook) wiedergegeben. Lautstärkeregeleung erfolgt ebenfalls über das Endgerät selbst.
Somit auch eine prima Sache, aber das StreamRadio-Bluetooth-Problemchen möchte ich auf Dauer doch noch beseitigen wenn es geht...

Vielen Dank für eure Unterstützung!

Atze

@ChristianR
Ich hatte/habe die gleichen Probleme nachdem ich ein paar mal TTS benutze. Ausserdem wurden beim TTS über BT immer Wörter am Anfang/Ende "verschluckt".

Mittlerweile nutze ich das Squeezeboxmodul mit dem LMS (Logitech Media Server) welches mir mehr möglichkeitet bietet und auch TTS mitbringt. (http://forum.fhem.de/index.php?topic=17667.0)

Jetzt kann ich in allen Räumen BT-radio syncron streamen , z.B. Wetterdurchsagen machen und die Anwesenheitserkennung über PRESENCED läuft auch.

Gruß Andreas

FHEM 5.8 , RPi 2 / CUL 3.2 / JEELINKnano - PCA301 / nanoCUL a-culfw 1.05.03
HMS: rm1002, s300th / FHT: fht8v-3, fht80tf
FS20: fs20st, fs20sm8, fs20s8m, fs20rsu, fs20rbm, fs20pce, fs20pcs, fs20ue1, fs20irp2, fs20dwt, fs20rpt-3, fs20str-2, fs20kse
IT: ITDM-250, ITLS-16, ITW-852, IT-1500
G-Data Milight

ChristianR

Hi Andreas,

danke für den Hinweis!
Klingt interessant und werd ich mir mal anschauen. Bei Bedarf komme ich sicher nochmal auf dich zurück.  ;)

Gruß Christian

ChristianR

Zitat von: Atze am 14 Oktober 2015, 16:52:45
@ChristianR
Ich hatte/habe die gleichen Probleme nachdem ich ein paar mal TTS benutze. Ausserdem wurden beim TTS über BT immer Wörter am Anfang/Ende "verschluckt".

Mittlerweile nutze ich das Squeezeboxmodul mit dem LMS (Logitech Media Server) welches mir mehr möglichkeitet bietet und auch TTS mitbringt. (http://forum.fhem.de/index.php?topic=17667.0)

Jetzt kann ich in allen Räumen BT-radio syncron streamen , z.B. Wetterdurchsagen machen und die Anwesenheitserkennung über PRESENCED läuft auch.

Gruß Andreas

Hi Andreas,

kannst du mir bitte etwas über deine genutzte Hardware in dieser Kombination berichten, bzw. als Beispiel deine Integration in FHEM erläutern/posten?
Habe noch nicht ganz durchschaut was ich an zusätzlichen Geräten evtl. noch benötige...
FHEM läuft bei mir auf nem RasPi2 im Keller (dort angeschlossen der Bluetoothdongle). Der connected sich mit einem ganz billigen Bluetoothlautsprecher (S10).
Zum testen reicht das erstmal, bevor ich ihn gegen einen Leistungsstärkeren eintausche der dann das Badezimmer im EG "beschallen" soll.  ;)

Danke für deine Mühe,
Gruß Christian

Atze

auch wenn es hier nichts mit dem eigentlichen Thema zu tun hat, der Admin möge mir verzeihen )  ::)
@ChristianR

Hallo Christian,
Zusätzliche Hardware (ausser BT-Dongle und Lautsprecher) brauchst du nicht.
Ich geh mal davon aus das dein BT-Lautsprecher mit dem rpi verbunden ist.

- Installation LMS & player  : http://www.gerrelt.nl/RaspberryPi/wordpress/tutorial-stand-alone-squeezebox-server-and-player-for-bbq/
Danach ist der Mediaserver unter http://<DEINE-IP>:9000 zur konfiguration oder Bedienung erreichbar

- Einbindung in Fhem : http://www.fhemwiki.de/w/index.php?title=Squeezebox_Modul&redirect=no#Erstmalig  und hier http://forum.fhem.de/index.php/topic,17667.0.html

Ich hab 2 rpi's mit fhem2fhem verbunden, so kann ich in 3 Räumen unterschiedliche oder sync. Musik hören

MASTER > LMS & Player mit Bluetooth zur Stereoanlage
SLAVE > 2 x Player. Einer per Klinke und einer per Bluetooth

Gruss Andreas

PS: der Wavemaster Mobi-2 ist ein relativ guter günstiger Lautsprecher
FHEM 5.8 , RPi 2 / CUL 3.2 / JEELINKnano - PCA301 / nanoCUL a-culfw 1.05.03
HMS: rm1002, s300th / FHT: fht8v-3, fht80tf
FS20: fs20st, fs20sm8, fs20s8m, fs20rsu, fs20rbm, fs20pce, fs20pcs, fs20ue1, fs20irp2, fs20dwt, fs20rpt-3, fs20str-2, fs20kse
IT: ITDM-250, ITLS-16, ITW-852, IT-1500
G-Data Milight

ChristianR

Danke für die schnelle Rückmeldung und verzeiht die OT Anfrage...  ;)
Ich gelobe Besserung!

Doublefant

Hi,
danke für eure Arbeit, das Modul funktioniert bei mir problemlos.
Ein Stolperstein war die Mixer Einstellung, deshalb hatte die Lautstärkeeinstellung nicht direkt funktioniert.
Das lies sich aber mit der Wiki Einrichtungshilfe aber leicht lösen.

Ich habe zwar eine ähnliche Eigenart wie auch schon andere hier beschrieben haben, Lautstärke bis 60% stille und erst ab dann wird es lauter, finde ich aber nicht weiter schlimm.

Ein nächster Schritt wird wohl das Remotemodul sein, dass man Tasten für Sender, Start, Stop und Lautstärke hat. Buttons finde ich "handlicher als ein Dropdownmenu und Slider, ist aber Geschmacksache. Hat das jemand schon so bei sich umgesetzt? Es gab hier irgendwo ein Screenshot, allerdings ohne Code.

Außerdem habe ich den Wunsch, das Modul als Wecker zu benutzen.
Die Funktion soll ähnlich dem wakeup-light sein. Es soll eine Rampe ablaufen, die in vorgegebener Zeit das Radio von ganz leise immer lauter werden lässt. Leider habe ich dazu als Anfänger noch keine Idee wie eine Umsetzung aussehen könnte. Möglicherweise geht es mit einer modifizierten selbst geschriebenen Funktion des wakeup-lights in der 99_myultis Datei.

Für Ideen oder Hinweise wäre ich euch sehr dankbar.