Teufel Raumfeld über FHEM ansteuern!?

Begonnen von Jochen Auer, 05 Juli 2014, 17:06:44

Vorheriges Thema - Nächstes Thema

THerrmann

Kann jemand eine funktionierende config als Beispiel posten?

DosiRocker

meinst du sowas?
Das ist eine Beispiel mit dem neuen raumServer und GetFileFromURL


define testraumserver DOIF ([test] eq "on")\
({GetFileFromURL("http://192.168.188.21:8080/raumserver/controller/createZone?id=Wohnzimmer")})\
({GetFileFromURL("http://192.168.188.21:8080/raumserver/controller/setVolume?value=25&id=Wohnzimmer")})\
({GetFileFromURL("http://192.168.188.21:8080/raumserver/controller/loadPlaylist?id=Wohnzimmer&value=FhemAlarm")})\
({GetFileFromURL("http://192.168.188.21:8080/raumserver/controller/play?id=Wohnzimmer")})\
({GetFileFromURL("http://192.168.188.21:8080/raumserver/controller/addToZone?id=Zentrale&zoneId=Wohnzimmer")})\
({GetFileFromURL("http://192.168.188.21:8080/raumserver/controller/setVolume?value=25&id=Zentrale")})
attr testraumserver do always
attr testraumserver room Media
attr testraumserver wait 5,5,5,5,5,5


Wenn du jede Zeile einzeln in die FHEM Befehlszeile kopierst funktioniert es (Hoffe ich  ;) )

Alternativ kannst du es auch so machen:

{GetHttpFile ("http://192.168.188.29:8080","/raumserver/controller/createZone?id=Zentrale")}

Martin
Cubietruck: CUNO 868;CUL HM
1 Wire: 1 OWAD, 13 OTHERM
10 FS20 ST; 3 HMS100WD; 1 EM1000;  4 S300TH;
4 HM_CC_RT_DN, HM_SEC_SC
AVM 7390 als FHEM2FHEM, Raspberry Pi

Klouse

#47
Hallo,

ich bin jetzt endlich umgestiegen, Server läuft auf Raumfeld Cubes mit 1.60.1 hier der Auszug aus meiner 99_myutils.pm:


### RaumServer

# play
# With this request you can start or resume playing the current playlist for a zone
sub Raumfeld_play( $ ) {
my ($id) = @_;
{GetHttpFile ("192.168.1.150:8080","/raumserver/controller/play?id=$id")}
}

# stop
# With this request you can stop playing the current playlist for a zone
sub Raumfeld_stop( $ ) {
my ($id) = @_;
{GetHttpFile ("192.168.1.150:8080","/raumserver/controller/stop?id=$id")}
}

# pause
# With this request you can pause playing the current playlist for a zone
sub Raumfeld_pause( $ ) {
my ($id) = @_;
{GetHttpFile ("192.168.1.150:8080","/raumserver/controller/pause?id=$id")}
}

# next
# With this request you can jump to the next track of the current playlist for a zone
sub Raumfeld_next( $ ) {
my ($id) = @_;
{GetHttpFile ("192.168.1.150:8080","/raumserver/controller/next?id=$id")}
}

# prev
# With this request you can jump to the prev track of the current playlist for a zone
sub Raumfeld_prev( $ ) {
my ($id) = @_;
{GetHttpFile ("192.168.1.150:8080","/raumserver/controller/prev?id=$id")}
}

# seekToTrack
# You can use trackNumber (trackNumber=4) parameter to jump to the given number (starts with 1)
sub Raumfeld_seekToTrack( $$ ) {
my ( $id, $value ) = @_;
{GetHttpFile ("192.168.1.150:8080","/raumserver/controller/seekToTrack?trackNumber=$value&id=$id")}
}

# seek
# With this request you can seek within a track
# The value parameter is in milliseconds
sub Raumfeld_seek( $$ ) {
my ( $id, $value ) = @_;
{GetHttpFile ("192.168.1.150:8080","/raumserver/controller/seek?id=$id&value=$value")}
}

# setPlayMode
# With this request you can set the play mode for a zone or for all zones
# Available play modes are NORMAL, SHUFFLE, REPEAT_ONE, REPEAT_ALL, RANDOM (Shuffle + Repeat All)
sub Raumfeld_setPlayMode( $$ ) {
my ( $id, $value ) = @_;
{GetHttpFile ("192.168.1.150:8080","/raumserver/controller/setPlayMode?id=$id&mode=$value")}
}
# sleepTimer
# With this request you can set a sleep timer for a zone or for all zones
# You can use secondsUntilSleep (secondsUntilSleep=120) parameter to set the remaining playing time in seconds
# If you set secondsUntilSleep to 0 (secondsUntilSleep=0) the sleeptimer is canceled
# You can use secondsForVolumeRamp (secondsForVolumeRamp=120) parameter to set the ramp for the volume decrease in seconds
sub Raumfeld_setPlayMode( $$$ ) {
my ( $id, $value1, $value2 ) = @_;
{GetHttpFile ("192.168.1.150:8080","/raumserver/controller/sleepTimer?id=$id&secondsUntilSleep=$value1&secondsForVolumeRamp=$value2")}
}

# setVolume
# With this request you can set the volume for a single room.
sub Raumfeld_setVolume( $$ ) {
my ( $id, $value ) = @_;
{GetHttpFile ("192.168.1.150:8080","/raumserver/controller/setVolume?value=$value&id=$id")}
}

# volumeUp
# With this request you can raise the volume for a single room.
sub Raumfeld_volumeUp( $$ ) {
my ( $id, $value ) = @_;
{GetHttpFile ("192.168.1.150:8080","/raumserver/controller/volumeUp?value=$value&id=$id")}
}

# volumeDown
# With this request you can lower the volume for a single room.
sub Raumfeld_volumeDown( $$ ) {
my ( $id, $value ) = @_;
{GetHttpFile ("192.168.1.150:8080","/raumserver/controller/volumeDown?value=$value&id=$id")}
}
# fadeToVolume
# With this request you can fade the volume for a single room to a specific value.
# The duration of the fade can be specified by adding the duration (duration=2000) parameter which value will be treated as milliseconds
sub Raumfeld_fadeToVolume( $$$ ) {
my ( $id, $value_vol, $value_dur ) = @_;
{GetHttpFile ("192.168.1.150:8080","/raumserver/controller/fadeToVolume?value=$value_vol&id=$id&duration=$value_dur")}
}
# mute
# With this request you can mute a single room
sub Raumfeld_mute( $ ) {
my ($id) = @_;
{GetHttpFile ("192.168.1.150:8080","/raumserver/controller/mute?id=$id")}
}

# unMute
# With this request you can unmute a single room
sub Raumfeld_unMute( $ ) {
my ($id) = @_;
{GetHttpFile ("192.168.1.150:8080","/raumserver/controller/unMute?id=$id")}
}

# toggleMute
# With this request you can toggle mute for a single room
sub Raumfeld_toggleMute( $ ) {
my ($id) = @_;
{GetHttpFile ("192.168.1.150:8080","/raumserver/controller/toggleMute?id=$id")}
}

# loadPlaylist
# With this request you can load a stored playlist id into a zone playlist
sub Raumfeld_loadPlaylist( $$ ) {
my ( $id, $value ) = @_;
{GetHttpFile ("192.168.1.150:8080","/raumserver/controller/loadPlaylist?id=$id&value=$value")}
}

# getRendererState
# This request returns the renderer state for one zone (eg. virtual renderers)
# This request has the ability for long polling by providing the updateId parameter which is returned on the first request in the Response header
sub Raumfeld_getRendererState( $ ) {
my ($id) = @_;
{GetHttpFile ("192.168.1.150:8080","/raumserver/data/getRendererState?id=$id")}
}


Hier ein Beispiel für mein SleepMode-DOIF:
define doif_SleepMode DOIF ([SleepMode] eq "on")\
({Raumfeld_loadPlaylist("Schlafzimmer","Radio")})\
({Raumfeld_setVolume("Schlafzimmer",0)})\
({Raumfeld_seekToTrack("Schlafzimmer",1)})\
({Raumfeld_fadeToVolume("Schlafzimmer",10,30000)})\
(set KlouseLED1 rgb 000000, set KlouseLED1 on-for-timer 49,set KlouseLED1 animation 0000FF 000000 20 0,setreading KlousePad Toast SleepMode%20On,setreading KlouseWatch Toast SleepMode%20On,setreading KlousePhone Flash SleepMode%20On)\
(set SleepMode off)\
DOELSEIF ([SleepMode] eq "off") \
({Raumfeld_stop("Schlafzimmer")})\
(IF ([KlouseLED1] eq "on") (set KlouseLED1 off))
attr doif_SleepMode do always
attr doif_SleepMode wait 0,2,1,1,0,1800:0,0


Wichtig ist die Pause nach dem laden der Playlist, damit klappt es bisher gut bei mir, auch beim eingebundenen nicht raumfeld DLNA Raspberry Renderer.
(SideInfo: Inzwischen kann man 3rd party dlna Renderer leider nicht mehr per Raumfeld App adden, man kann aber eine xml editieren so manuell Renderer hinzufügen)

Solltet ihr mit eurem raumServer Ausfälle haben, habe ich inzwischen auf
http://www.hifi-forum.de/index.php?action=browseT&forum_id=212&thread=1272&postID=327#327 ein Script für den automatischen restart des Service zusammenkopiert und in der Testphase.

LG,
Klaus


DosiRocker

Hallo Klaus,

vielen Dank für deinen Code, muss ich mir mal ansehen und testen. bin immer noch auf dem alten raumServer  :'(

Das mit der Playlist schaue ich mir auch nochmal an.

Gruß,
Martin
Cubietruck: CUNO 868;CUL HM
1 Wire: 1 OWAD, 13 OTHERM
10 FS20 ST; 3 HMS100WD; 1 EM1000;  4 S300TH;
4 HM_CC_RT_DN, HM_SEC_SC
AVM 7390 als FHEM2FHEM, Raspberry Pi

Klouse

Eine Frage, habt ihr derzeit auch massive Probleme mit dem tuneIn Service?

Ich bin daher für meine Modes derzeit auf direkte LoadUri umgestiegen:

99_myUitls:
# loadUri
# With this request you can load a uri into a zone playlist
# You may use this for loading streams which are not accessible via the upnp server
# Currently only direct urls will work (no playlist urls)
# /raumserver/controller/loadUri?id=Wohnzimmer&value=[urlencoded uri]
# /raumserver/controller/loadUri?id=Wohnzimmer&value=http%3A%2F%2Fmp3channels.webradio.rockantenne.de%2Fheavy-metal
# Tipp: http://www.url-encode-decode.com/ für Url Umwandlung.
sub Raumfeld_loadUri( $$ ) {
my ( $id, $value ) = @_;
{GetHttpFile ("192.168.1.150:8080","/raumserver/controller/loadUri?id=$id&value=$value")}
}

DosiRocker

Ich hatte es vor ca.  3-4 Monaten, dass mein Radio 1 Stream immer gestoppt hat. Nach ca.  1-2Wochen war es wieder ok.  Leider war ich damals zu doof für loaduri
Martin
Cubietruck: CUNO 868;CUL HM
1 Wire: 1 OWAD, 13 OTHERM
10 FS20 ST; 3 HMS100WD; 1 EM1000;  4 S300TH;
4 HM_CC_RT_DN, HM_SEC_SC
AVM 7390 als FHEM2FHEM, Raspberry Pi

spacecowboy.21

#51
Hallo,

kann mir einer sagen was ich machen muss damit ich meine Raumfeld Lautsprecher über FHEM ansteuern kann?

Oder gibt es irgendwo ein Wiki?

- RaumserverInstaller runterladen und auf einen Raumfeld Installieren
- und dann die Config von Klaus nehmen?

Oder sollte ich es, da ich auch Loxone habe es dort machen?


Habe gerade

Wlan für Raumfeld mit Expand - 1.60.1 -192.168.1.117

im Wohnzimmer: Raumfeld One M - 1.60.1 -192.168.1.107
in der Küche: Raumfeld One S - 1.60.1   -192.168.1.104




Danke


d.stratmann

Hallo,

ich war mal so frei und habe mir den Code bei mir ins fhem kopiert.
Leider verzweifel ich grade schon an folgender Stelle.
Ich habe mir einen Dummyschalter gemacht, mitdem ich eigentlich folgendes machen möchte.
Wenn ich auf Play drücke, dann soll meine Playlist 1live gespielt werden.

define RF_BZ dummy
attr RF_BZ devStateIcon on:audio_audio@yellow off:audio_audio@red Play:audio_volume_mid@green Mute:audio_volume_mute@red Stop:audio_audio@red
attr RF_BZ group Speaker
attr RF_BZ icon audio_audio
attr RF_BZ room Badezimmer
attr RF_BZ sortby 1
attr RF_BZ webCmd Play:Stop:Mute
define RF_BZ_Play notify RF_BZ:State.* ({Raumfeld_loadPlaylist("Badezimmer","1live")})\
({Raumfeld_setVolume("Badezimmer",0)})\
({Raumfeld_seekToTrack("Badezimmer",1)})\
({Raumfeld_fadeToVolume("Badezimmer",20,30000)})\


Zum Testen hatte ich dann mal folgende probiert, ob überhaupt das notify funktioniert aber da scheint es schon zu hapern.
define RF_BZ_Play notify RF_BZ:State.* {\
  fhem("set LED_KU on ;; set LED_WZ on")\
}\


Kannst du mir hier mal Hilfe geben... ich wollte erst klein anfangen mit der Raumfeldintegration und Stück für Stück erweitern.

fasch

Hallo,
ich habe mir mal den ganzen Thread hier durchgelesen und dann auch mit dem Raumserver getestet und alles mögliche konfiguriert.
Letztendlich bin ich jetzt über eine ganz einfache Lösung gestolpert.

Alles kann man direkt in der FHEM GUI machen, man braucht nichts programmieren. Ich denke, das kann auch anderen helfen.

Grundlage meiner Lösung ist: Meine Raumserver Cubes sind ganz normale DLNA Renderer.

Mit meinem Tablet und der Raumserver App habe ich die Cubes eingerichtet. Mein Raum heißt "Cubes", nicht "Wohnzimmer", mit dem Gerät "Speaker Cubes".
Im input Feld von FHEM habe ich jetzt nur einen Befehl eingegeben:

    define renderer DLNARenderer

In der fhem.cfg ergibt das:

  defmod renderer DLNARenderer
   attr renderer userattr defaultRoom ignoreUDNs


Vorsichtshalber habe ich das FHEM mal durchgestartet und musste keine 2 Minuten warten.
Die Cubes waren natürlich eingeschaltet.
In der Abteilung Unsorted hatte ich plötzlich zwei neue Einträge "Cubes" und "Speaker Cubes"
Beide mit einem Status Eintrag und einem Volume Slider.
In der fhem.cfg sieht das für den Raum "Cubes" jetzt so aus:

   defmod DLNA_000040652ba9 DLNARenderer uuid:00000000-4065-2ba9-0000-000040652ba9
   attr DLNA_000040652ba9 userattr channel_01 channel_02 channel_03 channel_04 channel_05 channel_06 channel_07 channel_08 channel_09 channel_10 multiRoomGroups ttsLanguage
   attr DLNA_000040652ba9 alias Cubes
   attr DLNA_000040652ba9 webCmd volume


Äquivalente Einträge gibt es für "Speaker Cubes".

Den Raum "Cubes" nutze ich nun zum weiter arbeiten.
Vordefiniert sind channel_01 bis channel_10. Dort lege ich Streams von Radio-Sendern ab:

   attr DLNA_000040652ba9 channel_01 http://ndr-ndr2-niedersachsen.cast.addradio.de/ndr/ndr2/niedersachsen/mp3/128/stream.mp3
   attr DLNA_000040652ba9 channel_02 http://mp3.ffh.de/ffhchannels/rock.mp3


Jetzt noch ein Minimum von Bedienungs-Elementen:

   attr DLNA_000040652ba9 webCmd volume:channel:stop

Fertig ist die Raumfeldbedienung mit 2 Radiosendern, volume und stop.
Ich überlasse es Euch das noch schöner zu machen.
Und ich denke der Wecker ist auch klar.
Jetzt geht erstmal mein Garten vor.

Im Bereich der set Befehle hab ich noch einiges mehr, die ich nicht weiter ausprobiert habe.
Z.B. on-for-timer oder off-till-overnight

Gruß, Jens

helmut

#54
Zitat von: fasch am 28 Juli 2017, 19:36:21
Hallo,
ich habe mir mal den ganzen Thread hier durchgelesen und dann auch mit dem Raumserver getestet und alles mögliche konfiguriert.
Letztendlich bin ich jetzt über eine ganz einfache Lösung gestolpert.

Hallo Jens,

vielen Dank fuer Deinen ausgesprochen hilfreichen Beitrag.

Da ich mit meinen "Stereo M" vorwiegend Radio hoere, habe ich habe einige Funktionen auf einen
HM Sechsfach-Taster gelegt; die Raumfeld-App hat mich immer schon genervt.

So kann ich zum Beispiel die Channel, belegt mit Radiosendern, hoch- und 'runterschalten, bei der
Gelegenheit den aktuellen Sender per "speak" ausgeben und die Lautstaerke der einzelnen Sender
angleichen. Ausserdem kann ich auf Unterbrechungen des Streams reagieren und schalte nach zehn
Sekunden einfach wieder auf "play" wenn ich ein "transportState.*STOPPED" entdecke.

Fuer mich ist DLNARenderer  genau die richtige Loesung. Weder mit den Python-Bibliotheken noch
mit dem Raumfeld-Webserver konnte ich mich anfreunden.

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

Abercrombie1892

nutzt jemand von euch den node raumserver zusammen mit fhem? der raumserver läuft ja soweit wirklich genial und wesentlich besser als der alte raumserver.

nun wollte ich aber die systemänderungen vom raumserver/raumfeld über fhem auslesen, scheitere aber daran die daten abzugreifen und mir zum zb. den play und stopstatus anzeigen zulassen.

FEHMPiDi

Hallo,

leider ist ja hier nicht so reger Betrieb in diesem Beitrag. Schade das alle auf Sonos abfahren und nicht auf Teufel :)
Naja, ich habe jedenfalls das Raumfeldsystem und habe meine 3 Boxen nun per DLNARenderer in Fhem eingebunden.
Das funktioniert eigentlich auch erstaunlich einfach und gut. ABER, ich habe da ein Problem. Wie bekomme ich die Boxen aus dem Schlafmodus aufgeweckt. Ich kann alles steuern wenn ich die Boxen eingeschaltet habe. Leider kann ich sie aber nicht per Fhem einschalten. Ist das nicht möglich oder mache ich da noch etwas falsch?

Danke schon mal
FHEM5.7@RaspPi.3|NanoCUL868-HM|NanoCUL868-Max|SDuino|DS18B20|1xHM-Sen-MDIR-WM55|   
2xHM-LC-Sw1PBU-FM|HM-LC-SW4-DR|I2C_MCP23017|2xMAX-ShutterContact|11xHM-LC-Bl1PBU-FM|CTW600|VCONTROL|1xHM-Sen-MDIR-O|2xMilight

Abercrombie1892

du müsstest vorher die boxen aufwecken über den node raumserver, vorher funktioniert es auch nicht bei mir. ich nutze aber den dlna eh mehr um die informationen abzugreifen für play pause lautstärke usw.

FEHMPiDi

Achso. Schade, ich wollte morgens wenn ich die Küche betrete das Radio einschalten.

Aber danke für die Antwort.
FHEM5.7@RaspPi.3|NanoCUL868-HM|NanoCUL868-Max|SDuino|DS18B20|1xHM-Sen-MDIR-WM55|   
2xHM-LC-Sw1PBU-FM|HM-LC-SW4-DR|I2C_MCP23017|2xMAX-ShutterContact|11xHM-LC-Bl1PBU-FM|CTW600|VCONTROL|1xHM-Sen-MDIR-O|2xMilight

Abercrombie1892

Installiere dir doch den Node raumserver auf dem Pi. Dann kannst du das alles wirklich easy machen.

Das ganze läuft bei mir erstaunlich sauber durch seit Monaten