Haus-Radio

Begonnen von Sturi2011, 04 Juli 2013, 21:31:57

Vorheriges Thema - Nächstes Thema

Sturi2011

Hi,

ich hatte schon länger vor ein Haus-Musiksystem zu basteln.
Nach verschiedenen Versuchen mit ATV2 und XBOX habe ich das
nun direkt über meinen Linuxserver zu realisieren begonnen.

Hier die ersten Codeschnipsel.

In der fhem.cfg
############### Radio
define Radio remotecontrol
attr Radio rc_iconpath icons/remotecontrol
attr Radio rc_iconprefix black_btn_
attr Radio room Radio
attr Radio row00 :blank,MUTE
attr Radio row01 VOLDOWN2,VOLUP2
attr Radio row02 PLAY,STOP
define weblink_Radio weblink htmlCode {fhem("get Radio htmlcode", 1)}
attr weblink_Radio room Radio
define n_rcl notify Radio {BlockingCall("Receiver",$EVENT."|".$value{Sender})}

define Sender dummy
attr Sender eventMap Ostseewelle:edge.live.mp3.mdn.newmedia.nacamar.net/ostseewellelive/livestream.mp3 Antenne-MV:stream.hoerradar.de/antennemv-mp3.m3u N-Joy:www.ndr.de/resources/metadaten/audio/m3u/ndrloop29.m3u NDR1-Radio-MV:www.ndr.de/resources/metadaten/audio/m3u/ndr1radiomv.m3u NDR-Info:www.ndr.de/resources/metadaten/audio/m3u/ndrinfo.m3u
attr Sender setList state:Ostseewelle,Antenne-MV,N-Joy,NDR1-Radio-MV,NDR-Info
attr Sender webCmd state
attr Sender room Radio


in der 99_myUtils.pm
use Blocking;
sub
Receiver($$@)
{

 my ($string) = @_;
 my ($Befehl, $Sender) = split("\\|", $string);
my ($tempo) ="";
Log 1, "Receiver aufgerufen mit Befehl: $Befehl";
Log 1, "Und Sender: $Sender";
if ($Befehl eq "VOLUP2"){$tempo=qx(amixer set 'Front' 3+;)}
if ($Befehl eq "VOLDOWN2"){$tempo=qx(amixer set 'Front' 3-;)}
if ($Befehl eq "MUTE"){$tempo=qx(amixer set 'Front' toggle;)}
if ($Befehl eq "PLAY"){
my $PLString ="";
my $Playlist = index($Sender, ".m3u");
if ($Playlist > -1){ $PLString="-playlist"};
Log 1, "PLString ist : $PLString";
$tempo=qx(/usr/bin/mplayer -nolirc $PLString http://$Sender);
}
if ($Befehl eq "STOP"){$tempo=qx(killall mplayer);}
}


Damit kommt aus der Soundkarte der Livestream.
Dieser kann dann über das Haus verteilt werden (Audiobus / etc.)

Gruß Andreas

fiedel

Hi Andreas,

das ist eine sehr schöne Lösung, die ich bei Gelegenheit mal nachbauen werde! Im Moment hab ich das so ähnlich, nur mit einem einzigen Sender, fester Lautstärke und per wget und madplay. Dafür kann ich das "Radio" per FS20- Tastendruck ein- und ausschalten. Abgesehen davon ist es nicht sehr komfortabel, deshalb freue ich mich über deine Lösung.

Viele Grüße

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

Sturi2011

Hi,

dann warte noch eine Woche. Ich implementiere das Ganze gerade als Modul.

Gruß Andreas

T.ihmann

Coole Idee. Schön wäre es, wenn man verschiedene Linuxrechner ansprechen könnte (ggf. Raspberry Pi's im Haus verteilt). Dann könnte man über fhem verschiedene Rechner steuern und verschiedene Musik / Sender abspielen...

Wie wäre es, wenn man zusätzlich noch Dateien von einem Netzwerklauf abspielen könnte ?

Nur so als Ideen

bsl02

Hallo,
passt zwar nicht direkt, aber interessant für Haus-Radio Anwendungen könnte auch MagicPlay werden (Open-Source-Alternative zu Apples Airplay). Alle Clients sollen synchron laufen.

Für mich interessant: Mittels RPi´s und alten Lautsprechern günstige WLan-Lautsprecher bauen.
http://www.golem.de/news/magicplay-open-source-alternative-zu-apples-airplay-1307-100188.html

Gruß, Stefan
RPi3 (FHEM) / CUL V3 868 (FS20) / nanoCUL868 (HM) / RFXtrx433 (IT & ELRO) / MAX!Cube (Thermostate, Fenster) / Bluetooth (presence Handy) / Sonoff mit Tasmota // Audio: RPi3 mit "max2play"-Image (Squeezeserver+Player) / Video: Synology-NAS mit TVheadend, Triax TSS400 Sat-IP Converter

thoweiss

Kuckt mal hier:

http://www.ip-symcon.de/forum/threads/18255-Lowcost-Multiroom-Audio-mit-IPS-und-Pulseaudio

Die Kollegen von IPS haben das mit Pulseaudio und MPD umgesetzt...

Ich quäle mich gerade mit UPNP/DLNA rum, habe aber noch keine PERL-Libary gefunden sie ich verstehe

Sturi2011

Hallo,

das mit den gebündelten Soundkarten für verschiedene Kanäle finde ich gut -> eventuell nächste Version

Gruß Andreas

Sturi2011

Hi,

hier nun eine erste Version der 74_WebRadio.pm

define <name> WebRadio                          erzeugt ein Gerät WebRadio
define <weblink_name> weblink htmlCode {fhem("get <name> htmlcode", 1)} < erzeugt den entsprechenden Weblink
set <name> PLAY                         startet Playback mit der ersten Senderurl
set <name> CHANGE2 <senderurl without http://>  wechselt zur angegebenen Senderurl und startet Playback  
set <name> MUTE               schaltet auf Stumm und zurück. Der Zustand wird gewechselt
set <name> VOLUP2             lauter
set <name> VOLDOWN2             leiser
attr <name> SenderListe <Sendername>|<SenderURL without leading http://> <next Sendername>|<next SenderURL without leading http://>  definiert die Senderliste

bei mir sieht die Definition folgendermaßen aus:

define WR1 WebRadio
define weblink_WR1 weblink htmlCode {fhem("get WR1 htmlcode", 1)}
attr WR1 SenderListe Ostseewelle|edge.live.mp3.mdn.newmedia.nacamar.net/ostseewellelive/lives Ostseewelle|tream.mp3 Antenne-MV|stream.hoerradar.de/antennemv-mp3.m3u Ostseewelle|N-Joy|www.ndr.de/resources/metadaten/audio/m3u/ndrloop29.m3u Ostseewelle|NDR1-Radio-MV|www.ndr.de/resources/metadaten/audio/m3u/ndr1r Ostseewelle|adiomv.m3u NDR-Info|www.ndr.de/resources/metadaten/audio/m3u/ndrinfo.m3u


Voraussetzung ist ein installierter mplayer, die alsa-utils und die Icons von Remotecontrol.
WebRadio benutzt Blocking.pm um ein blockieren des Interfaces zu verhindern und killall für das Umschalten.
In einer der nächsten Versionen wird Stop / Senderwechsel über kill Prozessid erfolgen.

Viel Spaß beim Testen

Gruß Andreas

Sturi2011

Hallo,

hier nun die nächste Version mit kill anstelle von Kilall.
In dieser Version bleibt der eingestellte Sender beim Neustat / Stop+Play erhalten.

Gruß Andreas

Sturi2011

Hi,

noch ein kleiner Bugfix - die aktuelle Version hat im Dropdown den als letztes gewählten Sender preselected.
Momentan arbeite ich an einer Version, die die Auswahl des Audiodevices anbietet, um mehrere Instanzen des Ganzen
über mehrere Soundkarten für mehrere Räume anbieten zu können. Fehlermeldungen / Verbesserungswünsche gerne hier.

Gruß Andreas

Dieter100

Hallo Andreas,

ich bin gerade dabei Dein Modul zu probieren und habe folgenden Fehler:
Wenn ich die Radiostation ausgewählt habe, kann ich diese hören, aber alle weiteren
Aktionen wie Stop, Mute ...funktionieren danach nicht mehr.
Hat sich in letzter Zeit etwas geändert?

Viele Grüße
Dieter

Sturi2011

Hallo Dieter,

ich bin in letzter Zeit nicht allzu viel dazu gekommen am Radio weiter zu arbeiten.
Das wird sich aber vermutlich nächste Woche ändern. Dann sollte das Modul für
den neuen Fernseher fertig sein und die OW und die HUE Geschichte laufen.

Gruß Andreas

drdownload

Das Theme Multi-Room-Audio mit FHEM hat mich auch schon länger beschäftigt, aber ich habe mich noch nicht für eine Richtung entscheiden können. Das Einzige wobei ich mir sehr sicher bin, dass RPis die Basis sein werden (bzw. andere Linux-basierende Devices)

Möglich sind als Software-Untergrund:

Squeezebox-Server (mit squeezd)
pulseaudio
mpd
magicplay

Vielleicht könnte sich ja FHEM auf eine Lösung konzentieren. Bei mir sind die Anforderungen wahrscheinlich ähnlich wie bei den meisten: Ich habe eine Home-Server mit meinem Musikarchiv und würde gerne zentral in Räumen Musik machen können + Radiostreams.
CUL 868 Slow-RF (FS20 Aktoren, Sender, FHT8V), CUL 868 (WMBUS-Empfang), Jeelink (PCA301), WS3600 (WH3080 über USB-Basis), Bewässerung mit ESP-Easy und Proplanta, RFXTRX433 Home-Easy Empfang und Senden, Oregon TH, WS001 TH), Blackbean IR, Mopidy-Snapcast MR Audio, Kodi, Forum-LED-Controller,

Sturi2011

Hi,

dann schau dir mal das Projekt Plex an. Das ist bei mir die aktuelle Grundlage der ganzen Multimediasuppe - natürlich mit angeklebtem VDR, Samba für Backup der Fotosammlung usw.
Das Projekt, die Apps und Oberflächen sowie die großartige Indizierung der Medienbibliotheken haben mich sehr begeistert.

Gruß Andreas

drdownload

Plex kenne ich schon länger, aber leider bieten die keinen Linux-basierenden Client (abgesehen davon, dass sie noch auf einer alten XBMC-Codebasis laufen, neue Versionen zuerst Abonennten zu Verfügung gestellt werden etc.)
CUL 868 Slow-RF (FS20 Aktoren, Sender, FHT8V), CUL 868 (WMBUS-Empfang), Jeelink (PCA301), WS3600 (WH3080 über USB-Basis), Bewässerung mit ESP-Easy und Proplanta, RFXTRX433 Home-Easy Empfang und Senden, Oregon TH, WS001 TH), Blackbean IR, Mopidy-Snapcast MR Audio, Kodi, Forum-LED-Controller,