[Neues Modul] StreamRadio

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

Vorheriges Thema - Nächstes Thema

fiedel

Sehr schön!  ;) Das ist schon richtig so. Du musst aber jetzt testen welches Attribut für die Lautstärkeeinstellung deines amixers funktioniert. Dazu habe ich weiter oben schon viel geschrieben. Ich denke, dass es daran liegt. Zuerst mal muss sich die Lautstärke per "set Radio_Kueche VOLUME 50" in der Eingabezeile beeinflussen lassen. Dann stimmt das Attr. und dann sollte auch der Slider gehen.

Gruß

Frank
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

coolice

Ist da normal das bei von 01 bis 75% eigentlich nur rauschen zu hören ist?

fiedel

Nö, eigentlich nicht. Schlechter Empfang bei dir???  ;D
Benutzt du BT- Lautsp.? Da soll es Probleme geben. Bei mir hängen passive Portispeaker direkt am Headphone- Out des Dreamplug.
Der amixer hat übrigens auch noch einen Parameter für die Vorverstärkung (Gain). Dazu hab ich im TTS- Thread was geschrieben. Ggf. stimmt damit was nicht bei deinem System.
Falls du weitere Hilfe brauchst, musst du mehr zu deinem System schreiben und was du schon herausgefunden und probiert hast...
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

coolice

Hallo,

ich möchte gerne die Lautstärke des Streamradios über meine HM-RC-12 mit einem langen Tastendruck regeln. Ich schalte das Radio über eine Taste (kurz drücken) an und über die andere aus.
Jetzt habe ich versucht das Ganze so zu lösen CUL_HM_HM_RC_12_1DAD8E_Btn_11:Long.* set  Dum_Volume_D -1
Wie ihr euch sicher denken könnt hat es nicht funktioniert. Kann mir jemand verraten wie es aussehen sollte?

Grüße
Mirco

fiedel

Das hier kennst du ja sicher schon von weiter oben im Thread:


# Radio ein- und ausschalten und Lautstärkeregelung per Dimmfunktion
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 "off") { \
    fhem("set SRadio PLAY Radio Fritz");;\
  } \
  if ($R_State eq "on") { \
    fhem("set SRadio STOP");;\
  } \
  if ($R_State eq "dimdown" and $Vol_plus >= 100) { \
    fhem("set Dum_Volume_D 100");;\
  } \
  if ($R_State eq "dimup" and $Vol_minus <= 0) { \
    fhem("set Dum_Volume_D 0");;\
  } \
  if ($R_State eq "dimdown" and $Vol_plus <= 100) { \
    fhem("set Dum_Volume_D $Vol_plus");;\
  } \
  if ($R_State eq "dimup" and $Vol_minus >= 0) { \
    fhem("set Dum_Volume_D $Vol_minus");;\
  } \
}


Ich mache das ja hier mit einem FS20-4-fach- Wandtaster, von dem ich zwei Buttons dafür nutze. Du musst jetzt nur das "on, off, dimup, dimdown" anpassen, wie dein Sender es liefert. "my $R_State = (ReadingsVal("Radio", "state", "off"))" ist dabei der Wandtaster. Wenn dein Sender nur "short" und "long" liefert, musst du noch eine Abfrage einbauen, ob das Radio gerade ein oder aus ist. Und/oder du unterscheidest anhand des Tasternamens. Leider kenne ich diese FB nicht, aber der Event Monitor hilft dir dabei.

Gruß

Frank
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

basti1986

Hallo!
Erstmal Danke für das tolle Modul!
Aber leider funktioniert der Volume Slider noch nicht bei mir, vielleicht habt ihr ja eine Idee woran es liegen könnte.
Die Konstellation ist die folgenden:
-RaspberryPi mit USB SoundCard
-amixer controls:
numid=4,iface=MIXER,name='Headphone Playback Switch'
numid=5,iface=MIXER,name='Headphone Playback Volume'
numid=2,iface=MIXER,name='Mic Playback Switch'
numid=3,iface=MIXER,name='Mic Playback Volume'
numid=6,iface=MIXER,name='Mic Capture Switch'
numid=7,iface=MIXER,name='Mic Capture Volume'
numid=8,iface=MIXER,name='Auto Gain Control'
numid=1,iface=PCM,name='Playback Channel Map'

Die Musik läuft immer mit der vollen Lautstärke, nur das Regeln dieser mittels Slider funktioniert nicht :(

Vielen Dank für eure Hilfe :)

Beste Grüße,
Basti


fiedel

Hi Basti,

probier mal, ob direkt im Radiomodul die Lautst. funktioniert! Wenn ja, stimmt ggf. der Name im set Vol.- Kommando des Slider nicht.

Gruß

Frank
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

basti1986

Hi Frank,

leider nein. Eine Änderung der Lautst. direkt im Radiomodul zeigt keine Auswirkung.

VG,
Basti

fiedel

#128
Dann müsstest du so lange mit den amixer- Settings rumprobieen, bis das im Radio geht. Mein erster Tipp:
attr SRadio volume_command amixer cset numid=5 -- %s%%
Ansonsten auch mal den amixer deinstallieren und neu installieren oder sowas. Aber das müsste gehen, wenn du die richtige "Zahl" findest. Hier hab ich mich dazu ausgelassen.  ;)
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

basti1986

Leider auch nicht, dann werde ich noch ein wenig try&error betreiben :)
Trotzdem Vielen Dank!

fiedel

Hast du diese Modulversion im Einsatz? Die nehme ich aktuell immer noch. Ansonsten viel Erfolg!
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

duu75

Ich bin am Verzweifeln.

Kriege zwar das Radio zum Laufen aber mit der Lautstärkeeinstelle SET NAME volume ...  komme ich kein Stück weiter.
Habe auf einem Notebook den Ubuntuserver laufen und der amixer funktioniert sauber wenn ich das Ganze per ssh auf der Konsole eingebe.

amixer cset numid=1 74
-> Ergebnis:
numid=1,iface=MIXER,name='Master Playback Volume'
  ; type=INTEGER,access=rw---R--,values=2,min=0,max=74,step=0
  : values=74,74
  | dBscale-min=-74.00dB,step=1.00dB,mute=0


Wenn ich in FHEM mit SET VOLUME eine Lautstärke eingebe in verschiedenen Versionen (50,100,50%,100%,1000,1000%..) stellt mit der amixer die Lautstärke immer wieder auf 0 runter.

Es sieht so aus, als ob bei der Befehlsübergabe nichts mit übergeben wird, denn wenn ich per ssh "amixer cset numid=1" ohne was eingebe, macht er auch auf 0.

Das richtige numid=1 habe ich eigtl. m.W. erwischt, weil Volumecontrol über ssh geht sauber mit amixer.

amixer controls
->
numid=8,iface=CARD,name='HDMI/DP,pcm=3 Jack'
numid=14,iface=CARD,name='HDMI/DP,pcm=7 Jack'
numid=20,iface=CARD,name='HDMI/DP,pcm=8 Jack'
numid=2,iface=MIXER,name='Master Playback Switch'
numid=1,iface=MIXER,name='Master Playback Volume'
numid=26,iface=MIXER,name='PCM Playback Volume'
numid=5,iface=MIXER,name='Capture Switch'
numid=4,iface=MIXER,name='Capture Volume'
numid=9,iface=MIXER,name='IEC958 Playback Con Mask'
numid=15,iface=MIXER,name='IEC958 Playback Con Mask',index=1
numid=21,iface=MIXER,name='IEC958 Playback Con Mask',index=2
numid=10,iface=MIXER,name='IEC958 Playback Pro Mask'
numid=16,iface=MIXER,name='IEC958 Playback Pro Mask',index=1
numid=22,iface=MIXER,name='IEC958 Playback Pro Mask',index=2
numid=11,iface=MIXER,name='IEC958 Playback Default'
numid=17,iface=MIXER,name='IEC958 Playback Default',index=1
numid=23,iface=MIXER,name='IEC958 Playback Default',index=2
numid=12,iface=MIXER,name='IEC958 Playback Switch'
numid=18,iface=MIXER,name='IEC958 Playback Switch',index=1
numid=24,iface=MIXER,name='IEC958 Playback Switch',index=2
numid=3,iface=MIXER,name='Analog Mic Boost Capture Enum'
numid=7,iface=MIXER,name='Beep Playback Switch'
numid=6,iface=MIXER,name='Beep Playback Volume'
numid=27,iface=MIXER,name='Digital Capture Volume'
numid=13,iface=PCM,name='ELD',device=3
numid=19,iface=PCM,name='ELD',device=7
numid=25,iface=PCM,name='ELD',device=8


Steige auch nicht so ganz durch die Modulkonfig durch.
Wofür steht die Variable beim amixer %s%%?
Die wird ja nirgend gefüllt mit einem Wert.
Sehe nur die Umrechung der Log. Werte in lineare $Vol Variable.
Da fehlt mir der Programmierhintergrund.
Wieso geht das bei den meisten und bei mir wird immer auf 0 gesetzt durch fhem?

Mein fhem User hat auch audio Rechte. Daran kann es auch nicht liegen.
id fhem
uid=999(fhem) gid=20(dialout) Gruppen=20(dialout),29(audio)

In FHEM habe ich einige Notifys mit mpg123 und MP3-Files zur Sprachausgabe als Bestätigungsquittung, die gehen auch 1A sauber.

Woran kann es liegen?

DerFrickler

Ist Euer StreamRadio Modul irgendwo verfügbar und besteht die Möglichkeit einer Stummschaltung für den Zeitraum in dem Text2Speech eine Ausgabe macht? In etwa so wie beim Navigationsgerät im Pkw; davon ausgehend dass es fest eingebaut ist.

Aktuell starte ich meinen Stream immer noch per Terminal Eingabe.. mplayer -playlist http://www.rockantenne.de/webradio/channels/classic-perlen.m3u, wobei die Text2Speech Ausgaben leider etwas untergehen.

Gruß!

fiedel

#133
@duu75: Sieht mir auch nach der "1" aus. Lies dir mal den weiter oben verlinkten Post von mir zu dem Thema durch. Du musst dich da ein Mal mit den amixer- Settings durchwursteln. Wichtig zum Testen ist, das Modul oder FHEM nach Änderungen neu zu laden/starten.
Mit dem Modul das ich in meinem letzten Post verlinkt habe, geht das auf jeden Fall alles.

@DerFrickler: Siehe oben - das hier zuletzt verlinkte Modul geht. Einfach runterladen, in den FHEM- Ordner kopieren, das Radio definieren und FHEM neu starten. Das mit dem "Radio aus bei Meldungen" hab Ich bereits gelöst. Ich glaub das habe ich weiter vorn in diesem Thread schon gepostet. Prinzip ist: Ein "Sounddummy" auf den die Meldungen geschickt werden wie z.B.: "set Sounddummy Ein Fenster ist noch offen" und ein Notify. Das Notify hat als Variable ob das Radio gerade an ist und welchen Sender. Kommt eine Meldung rein, wird der Sender und die Lautstärke gemerkt, das Radio ausgeschaltet  (für eine feste Zeit) und die Lautstärke hochgedreht. Danach Radio wieder ein mit altem Sender und Lautstärke. Ungelöst ist nur die Zeit, die das Radio aus ist. Ich habe bisher keinen Weg gefunden eine Rückmeldung zu bekommen, wann das TTS- Modul mit der Ansage fertig ist. Daher verwende ich eine feste Zeit, die in etwa passt.

Ganz schön chaotisch das Ganze. Muss endlich mal den Wikieintrag schaffen...  ;) Eigentlich müsste daraus ein Modul "Soundproxy" werden, das zentral alles regelt, was in FHEM Töne produziert. Oder diese Logik könnte auch in TTS eingebaut werden, sodass TTS immer wenn eine Meldung reinkommt, das was gerade dudelt stummschaltet und die Lautstärke anpasst.
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

DerFrickler

Falls die Version 0.5 aktuell ist, dann funktioniert es leider noch nicht "out-of-the-Box". Währenddessen Text2Speech fröhlich weiter brabbelt bleibt das Radio stumm: 

Die Definition:

define streamradio StreamRadio /opt/fhem/StreamRadio.txt
attr streamradio room Test
attr streamradio telnetport 7072
attr streamradio volume_command amixer cset numid=1 -- %s%%

Das LogFile nach dem "Einschalten":

2014.12.21 22:48:28 1: PERL WARNING: Use of uninitialized value $pls{"\n"} in concatenation (.) or string at ./FHEM/74_StreamRadio.pm line 262.
2014.12.21 22:48:28 1: PERL WARNING: Use of uninitialized value $pls{"\n"} in index at ./FHEM/74_StreamRadio.pm line 264.
2014.12.21 22:48:28 1: PERL WARNING: Use of uninitialized value $current in index at ./FHEM/74_StreamRadio.pm line 264.
2014.12.21 22:48:28 1: PERL WARNING: Use of uninitialized value $current in string ne at ./FHEM/74_StreamRadio.pm line 264.
2014.12.21 22:48:28 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/74_StreamRadio.pm line 270.
2014.12.21 22:48:31 1: PERL WARNING: Use of uninitialized value in string ne at ./FHEM/74_StreamRadio.pm line 144.
2014.12.21 22:48:31 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/74_StreamRadio.pm line 163.
2014.12.21 22:48:33 1: PERL WARNING: Odd number of elements in hash assignment at ./FHEM/74_StreamRadio.pm line 225, <$proc> line 18.

Die Events:

22:48:33  streamradio Bitrate: 128kbit/s
22:48:33  streamradio Genre: Rock
22:48:32  streamradio StationName: ROCK ANTENNE Classic Perlen
22:48:31  streamradio playing
22:48:31  streamradio StreamURL: http://www.rockantenne.de/webradio/channels/classic-perlen.m3u


Das LogFile nach dem "Ausschalten":

2014.12.21 22:53:41 1: PERL WARNING: Odd number of elements in hash assignment at ./FHEM/74_StreamRadio.pm line 225, <$proc> line 18.

Die Events:

22:52:21  streamradio stopped
22:52:21  streamradio StreamTitle:
22:52:21  streamradio Bitrate:
22:52:21  streamradio Genre:
22:52:21  streamradio StationName:
22:52:21  streamradio StreamURL:


Vergleiche ich jetzt mal die StreamRadio Definition mit der von Text2Speech, dann springt mir folgender Unterschied gleich ins Auge: define tts.VoiceOutput Text2Speech hw=0.0

Zudem kann ich unter "top" keinen mplayer Prozess erkennen, zumindest keinen andauernden. Dieser erscheint nur zu den Ausgaben von Text2Speech.


Gruß,...