Raumfeld via FHEM über Harmony FB steuern

Begonnen von RafaelH, 06 Januar 2018, 23:27:10

Vorheriges Thema - Nächstes Thema

RafaelH

Hallo
Da ich leider wenig bis keine Ahnung habe und stetig am lernen bin hoffe ich auf eure Hilfe. Ich weiss dieses Thema wurde hier auch schon abgehandelt, aber eine einfache wirklich verständliche Lösung habe ich nicht gefunden.
Mein Bedürfnis: Ich möchte gerne mein Raumfeldsystem via FHEM über die Harmony FB steuern.
Momentan habe ich den fakeRoku emuliert, der auch funktioniert.
Ich bin momentan am Problem dass ich meine Raumfeldboxen im FHEM sichtbar machen kann. Wie mache ich das am einfachsten?
Muss ich über die Installation des Raumservers gehen?
Wenn ja bitte ich eine Schritt für Schritt Anleitung für den Raspberry 3 posten (nein ich möchte nicht die Originalgeräte updaten). Bitte keine Links die habe ich glaube ich schon alle durch und funktioniert nicht habe es bspw. mit diesem erfolglos versucht: https://github.com/ChriD/Raumserver/issues/48
Vielen Dank im Voraus

helmut

Nicht direkt zu Deiner FB, aber zur partiellen Steuerung des Raumfeldsystems mein Kommentar dazu hier:

https://forum.fhem.de/index.php/topic,25117.msg711664.html#msg711664

Gruss Helmut
Intelligenz ist die Fähigkeit, Arbeit zu vermeiden, aber dafür zu sorgen, daß die Arbeit gemacht wird.
(Linus Torvalds)

RafaelH

Vielen Dank Helmut für deine Nachricht.
Mir ist nicht ganz klar was mit "meine Raumserver Cubes sind ganz normale DLNA Renderer" gemeint ist?
Mir ist klar was DLNA ist, aber was heisst das für die Einrichtung des Systems? Ist es anschl. immer noch möglich das System trotzdem über die App zu steuern und die "normalen" Funktionen sind immer noch aktiv oder nicht?
Mir ist es prinzipiell egal mit welchem System ich zur Lösung komme, ob DLNA oder Raumserver.
Mein Wunsch ist es das Raumfeldsystem mit App und zusätzlich über eine herkömmliche Fernbedienung steuern zu können.
Danke für deine Mühe.

helmut

Zitat von: RafaelH am 08 Januar 2018, 20:55:29
Mir ist nicht ganz klar was mit "meine Raumserver Cubes sind ganz normale DLNA Renderer" gemeint ist?

Ich muss gestehen, dass ich ich in diesem Thema nicht sattelfest bin, aber wenn ich das richtig
verstanden habe, sind die WLAN-Lautsprecher von Teufel im Sinne von DLNA die Renderer und
die passenden Apps sind Controller.

Diese Rolle als Controller spielt auch fhem mit dem Modul DLNARenderer. Urspruenglich hiess
das Modul DLNAClient. Mit Einfuehrung der Multiroom Funktionalitaet hat dominik es umbenannt.

Zitat von: RafaelH am 08 Januar 2018, 20:55:29
Ist es anschl. immer noch möglich das System trotzdem über die App zu steuern

Ich kann mit verschiedenen Controllern (Apps und fhem) nacheinander Anweisungen an meine
Stereo M schicken, wie zum Beispiel: Spiele Song von Napster (App), setze Lautstaerke (App
oder fhem), spiele URL (fhem). Das Teufel System akzeptiert das zum jeweiligen Zeitpunkt.

Zitat von: RafaelH am 08 Januar 2018, 20:55:29
Mein Wunsch ist es das Raumfeldsystem mit App und zusätzlich über eine herkömmliche
Fernbedienung steuern zu können.

Mit der Einschraenkung auf Auswahl von URLs, Sprachausgabe mit speak und Setzen der
Lautstaerke per fhem-Fernbedienung geht es; mir reicht das. Die App kannst Du weiterhin
nutzen, wie gewohnt.

Gruss Helmut
Intelligenz ist die Fähigkeit, Arbeit zu vermeiden, aber dafür zu sorgen, daß die Arbeit gemacht wird.
(Linus Torvalds)

RafaelH

Danke für deine Nachricht, ich habe mein Raumfeldsystem über ein zweites Netzwerk mit dem Expander laufen, was auch sehr stabil ohne irgendwelche Beanstandungen läuft. Ich werde mal ein Gerät in mein Hauptnetzwerk nehmen, um zu schauen ob es sichtbar wird....
Bei Versuch den DNLARenderer zu installieren bekomme ich folgende Fehlermeldung:
"Cannot load module DLNARenderer"

2018.01.13 19:23:37 0: Can't locate Data/UUID.pm in @INC (you may need to install the Data::UUID module) (@INC contains: . /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.24.1 /usr/local/share/perl/5.24.1 /usr/lib/arm-linux-gnueabihf/perl5/5.24 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl/5.24 /usr/share/perl/5.24 /usr/local/lib/site_perl /usr/lib/arm-linux-gnueabihf/perl-base ./FHEM) at ./FHEM/98_DLNARenderer.pm line 145.
BEGIN failed--compilation aborted at ./FHEM/98_DLNARenderer.pm line 145.

Wie muss ich vorgehen? Danke für deine Hilfe.

Newbie

Hallo RafaelH,

die Forum-Suche spuckt z.B. das aus:

https://forum.fhem.de/index.php/topic,39706.msg515023.html#msg515023

und die nachfolgenden Beiträge


vg Jens
fhem-6.1 (configDB+DbLog)  auf ODROID-XU4

helmut

Hallo Rafael,

zunaechst ist es sicher eine gute Idee, das fhem-System mit "update" auf den aktuellen Stand zu bringen.

Dann lass Dir die DLNARenderer Devices anzeigen. Bei mir sieht das so aus:

"fhem45"> list TYPE=DLNARenderer
DLNASocket-renderer-62
DLNASocket-renderer-63
DLNASocket-renderer-64
DLNA_000055fbd612
DLNA_1825591d526f
renderer

"fhem45"> list DLNA_000055fbd612
Internals:
   CFGFN     
   DEF        uuid:00000000-55fb-d612-0000-000055fbd612
   NAME       DLNA_000055fbd612
   NR         1104
   STATE      playing
   TYPE       DLNARenderer
   UDN        uuid:00000000-55fb-d612-0000-000055fbd612
   READINGS:
     2018-01-14 11:07:51   channel         3
     2018-01-14 11:07:51   currentTrackURI http://mp3channels.webradio.antenne.de/classic-rock-live
     2018-01-14 09:15:34   friendlyName    WZ
     2018-01-14 09:15:34   manufacturer    Raumfeld GmbH
     2018-01-14 09:15:34   manufacturerURL http://www.raumfeld.com/
     2018-01-14 09:15:34   modelDescription Virtual Media Player
     2018-01-14 09:15:34   modelName       Raumfeld Stereo M
     2018-01-14 09:15:34   modelNumber     2
     2018-01-14 09:15:35   multiRoomSupport 0
     2018-01-14 11:07:50   multiRoomVolume 30
     2018-01-12 14:23:47   mute            0
     2018-01-14 09:15:35   presence        online
     2018-01-14 11:07:53   state           playing
     2018-01-14 11:07:51   stream          http://mp3channels.webradio.antenne.de/classic-rock-live
     2018-01-14 11:07:53   transportState  PLAYING
     2018-01-14 09:15:35   transportStatus OK
     2018-01-14 11:07:50   volume          30
   helper:
     caskeid    0
     caskeidClients
Attributes:
   alias      Stereo M
   channel_01 https://wdr-wdr4-live.icecastssl.wdr.de/wdr/wdr4/live/mp3/128/stream.mp3
   channel_02 https://wdr-wdr2-muensterland.icecastssl.wdr.de/wdr/wdr2/muensterland/mp3/128/stream.mp3
   channel_03 http://mp3channels.webradio.antenne.de/classic-rock-live
   channel_04 http://stream.radiorst.de:8000/rst128k
   channel_05 http://mp3.webradio.rockantenne.de:80
   channel_06 http://player.ffn.de/ffn.mp3
   channel_07 http://mp3channels.webradio.antenne.de:80/oldies-but-goldies
   channel_08 http://vtuner.stream.laut.fm/antenne-oldies
   channel_09 http://streams.rpr1.de/rpr-ndw-128-mp3
   channel_10 http://80.252.104.101:8000/beatclub
   room       Wohnzimmer
   ttsLanguage de
   userattr   channel_01 channel_02 channel_03 channel_04 channel_05 channel_06 channel_07 channel_08 channel_09 channel_10 multiRoomGroups ttsLanguage
   webCmd     volume:channel:pauseToggle:stop


DLNA_000055fbd612 ist das Device, das ich mit "defmod" konfiguriert habe. DLNA_1825591d526f ist der
Player (Speaker) der, soweit ich das mitbekommen habe, keiner weiteren Behandlung bedarf und um den
ich mich nicht weiter kuemmere. Meine Taster wirken alle auf das Device:

- set DLNA_000055fbd612 volume ...set DLNA_000055fbd612 speak
- set DLNA_000055fbd612 channel ...
- set DLNA_000055fbd612 speak ...

Ueber das FHEMWEB laesst es sich natuerlich auch bedienen.

Gruss Helmut
Intelligenz ist die Fähigkeit, Arbeit zu vermeiden, aber dafür zu sorgen, daß die Arbeit gemacht wird.
(Linus Torvalds)

RafaelH

Vielen Dank für die Unterstützung!
Der DNLA Renderer läuft, was ja schon mal (für mich  ;))ein grosser Erfolg ist. Nun hat mir der Renderer zwei Boxen direkt zu einem Device gemacht...?
Das heisst wenn ich einen Befehl gebe machen es direkt beide Boxen. Eine dieser beiden Boxen war noch einzel sichtbar, habe die nun aber gelöscht, da die Befehle nicht wirklich sauber durchgelaufen sind.
Kann ich die Raumfeldboxen nicht in den Standby mittels "off" befehlen?
Ich brauche eigentlich nur ON/Off und Vol +/- resp. Play.
Meine nächste Herausforderung wird nun den "fakeRoku" mit dem "Renderer" zu konfigurieren, habt ihr mir vielleicht ein Beispiel?
Nochmals herzlichen Dank.

helmut

Zitat von: RafaelH am 14 Januar 2018, 21:40:09
Nun hat mir der Renderer zwei Boxen direkt zu einem Device gemacht...?
Hallo Rafael,

mir ist nicht ganz klar, was Du mit "Boxen" meinst. Das, was in der Teufel Notation "Speaker" heißt?

Zitat von: RafaelH am 14 Januar 2018, 21:40:09
Kann ich die Raumfeldboxen nicht in den Standby mittels "off" befehlen?
Nach einem "off" an das Device geht der Speaker nach der eingestellten Zeit in den Standby und
kann mit "play"wieder aufgeweckt werden:


   READINGS:
     2018-01-15 14:21:46   channel         1
     2018-01-15 14:21:46   currentTrackURI https://wdr-wdr4-live.icecastssl.wdr.de/wdr/wdr4/live/mp3/128/stream.mp3
     2018-01-15 05:53:52   friendlyName    WZ
     2018-01-15 05:53:52   manufacturer    Raumfeld GmbH
     2018-01-15 05:53:52   manufacturerURL http://www.raumfeld.com/
     2018-01-15 05:53:52   modelDescription Virtual Media Player
     2018-01-15 05:53:52   modelName       Raumfeld Stereo M
     2018-01-15 05:53:52   modelNumber     2
     2018-01-15 05:53:52   multiRoomSupport 0
     2018-01-15 15:12:40   multiRoomVolume 35
     2018-01-14 17:57:12   mute            0
     2018-01-15 05:53:52   presence        online
     2018-01-15 15:11:51   state           stopped
     2018-01-15 14:21:46   stream          https://wdr-wdr4-live.icecastssl.wdr.de/wdr/wdr4/live/mp3/128/stream.mp3
     2018-01-15 15:11:51   transportState  STOPPED
     2018-01-15 14:21:42   transportStatus OK
     2018-01-15 15:12:40   volume          35


Zitat von: RafaelH am 14 Januar 2018, 21:40:09
Ich brauche eigentlich nur ON/Off und Vol +/- resp. Play.
Genau, das Einschalten erledigt die "play" Anweisung.

Zitat von: RafaelH am 14 Januar 2018, 21:40:09
Meine nächste Herausforderung wird nun den "fakeRoku" mit dem "Renderer" zu konfigurieren, habt ihr mir vielleicht ein Beispiel?
Sorry, damit kann ich mangels Masse nicht dienen, aber das wird auf einen oder mehrere notifys
oder DOIFs hinauslaufen die auf Ereignisse des fakeRoku-Devices lauschen und reagieren.

Gruss Helmut
Intelligenz ist die Fähigkeit, Arbeit zu vermeiden, aber dafür zu sorgen, daß die Arbeit gemacht wird.
(Linus Torvalds)

RafaelH

Vielen Dank für die Unterstützung bis hierhin!
Momentan habe ich noch ein Problem mit der Einstellung der Lautstärke, wo ich um Hilfe bitte:
Ich habe mehrer Notify definiert:
roku:keypress:.Left set DLNA_4CA09975CF90 volume 20
roku:keypress:.Up set DLNA_4CA09975CF90 volume 35
roku:keypress:.Right set DLNA_4CA09975CF90 volume 45
roku:keypress:.Down set DLNA_4CA09975CF90 volume 55[code]

Mit dieser Lösung kann ich nun vier verschiedene Lautstärken mit vier verschiedenen Tasten wählen, ich möchte aber mit einer Taste für einmal drücken die Lautstärke bspw. um +5 erhöhen?
Wie lautet der Befehl, um die Lautstärke mit dem fakeRoku, mit einer Taste (bspw. Up) kontinuierlich zu erhöhen resp. mit einer zweiten Taste (bspw. Down) zu verringern.
Vielen Dank für mögliche Lösungsvorschläge.

helmut

Zitat von: RafaelH am 22 Januar 2018, 21:43:28
ich möchte aber mit einer Taste für einmal drücken die Lautstärke bspw. um +5 erhöhen?
Hallo Rafael,

das habe ich in einem notify mit einer Variablen geloest (siehe dummy, setreading und
ReadingsVal) in der ich mir den aktuellen Wert merke und entsprechend aendere.

Zitat von: RafaelH am 22 Januar 2018, 21:43:28
Wie lautet der Befehl, um die Lautstärke mit dem fakeRoku, mit einer Taste (bspw. Up) kontinuierlich zu erhöhen
Dafuer habe ich keine Loesung und mit meinem Homematic-Taster geht das auch nicht. Wenn
ich den laenger druecke, bekomme ich nur einen "LONGRELEASE" mit einer Zeitangabe. Diese
Zeit in Lautstaerke umzusetzen koennte zu unangenehmen Ueberraschungen fuehren, da die
akustische Kontrolle fehlt.

Gruss Helmut
Intelligenz ist die Fähigkeit, Arbeit zu vermeiden, aber dafür zu sorgen, daß die Arbeit gemacht wird.
(Linus Torvalds)

RafaelH

Vielen Dank Helmut
Kannst du ein Beispiel von so einem notify posten? Verstehe momentan nur Bahnhof wenn ich bei dummy setreading nachlese...

helmut

Hallo Rafael,

es gibt viele verschiedene Arten, das zu loesen und hier beschreibe ich wie ich das gemacht
habe - ohne Anspruch auf Schoenheit oder gar Perfektion. Um meine globalen Variablen
zu speichern, habe ich ein dummy-Device angelegt.

define global_variables dummy


Die Variablen werden bei der ersten Benutzung automatisch angelegt.

setreading global_variables rfeld_channel $max_channel


So liest Du sie wieder aus.

{my $rfeld_channel=ReadingsVal("global_variables","rfeld_channel","0")}


Hier schalte ich mit zweien meiner FBen die Kanaele hoch.

define rfeld_sw_ch_up notify (sf_taster_01_btn_06:Short.*|sf_taster_01_btn_06:LongRelease.*|vf_taster_01_btn_04:Short.*|vf_taster_01_btn_04:LongRelease.*) {
                        my $rfeld_ch_chg=ReadingsVal("global_variables","rfeld_ch_chg","0");
                        my $max_channel=ReadingsVal("global_variables","rfeld_max_channel","0");
                        if ($rfeld_ch_chg eq 1) {
                                if ($EVTPART0 eq "LongRelease") {
                                        fhem    "setreading global_variables rfeld_channel $max_channel;
                                                set DLNA_000055fbd612 channel $max_channel;
                                                setstate DLNA_000055fbd612 ch$max_channel";
                                } else {
                                        my $rfeld_channel=ReadingsVal("global_variables","rfeld_channel","0");
                                        if ($rfeld_channel < $max_channel) {
                                                $rfeld_channel=$rfeld_channel+1;
                                        } else {
                                                $rfeld_channel=1;
                                        }
                                        fhem    "set DLNA_000055fbd612 channel $rfeld_channel;
                                                setreading global_variables rfeld_channel $rfeld_channel";
                                }
                        }
                }


Zum besseren Verstaendnis solltest Du die "Perl specials" lesen:
https://fhem.de/commandref.html#perl

Gruss Helmut
Intelligenz ist die Fähigkeit, Arbeit zu vermeiden, aber dafür zu sorgen, daß die Arbeit gemacht wird.
(Linus Torvalds)

RafaelH

Hallo Helmut vielen Dank für deine Geduld
Den dummy zu definieren und wieder rauslesen habe ich mindestens einmal theoretisch verstanden.
Anschl. definierst du ein notify und gibst alles in der def Zeile manuell ein?
Hast du mir noch ein Beispiel für die Lautstärke?
Sorry aber bin halt nicht vom Fach....

RafaelH

Wäre sehr dankbar für ein Beispiel, mit einer Taste die Lautstärke kontinuierlich zu erhöhen oder verringern. Vielen Dank

helmut

Zitat von: RafaelH am 27 Januar 2018, 14:16:25
Anschl. definierst du ein notify und gibst alles in der def Zeile manuell ein?

Hallo Rafael,

dazu gibt es den Wiki-Artikel https://wiki.fhem.de/wiki/Notify in dem die Vorgehensweise
ausfuehrlich beschrieben ist.

Zitat von: RafaelH am 27 Januar 2018, 14:16:25
Hast du mir noch ein Beispiel für die Lautstärke?

Da ich das in einem weiteren notify erledige, in dem ich auch die Kanalaenderungen, das
Anpassen der Lautstaerke an die verschiedenen Sender und die Sprachausgabe abarbeite,
bringt Dir meine Loesung nichts.

Zitat von: RafaelH am 02 Februar 2018, 22:25:52
Wäre sehr dankbar für ein Beispiel, mit einer Taste die Lautstärke kontinuierlich zu erhöhen oder verringern. Vielen Dank

Da wirst Du Dir im Eventmonitor ansehen muessen, was Deine FB bei laengerem Tastendruck
an Events abliefert und dementsprechend in einem notify die Lautstaerke aendern. Die
Frequenz der Events und wie schnell das Raumfeldsystem in der Lage ist, die Anweisungen zu
verarbeiten, koennten allerdings problematisch werden. Unter Umstaenden musst Du mit
Verzoegerungen dagegenhalten.

Gruss Helmut
Intelligenz ist die Fähigkeit, Arbeit zu vermeiden, aber dafür zu sorgen, daß die Arbeit gemacht wird.
(Linus Torvalds)