OpenHAB2 und Sonos – Projekt Frühstücksradio

Wäre es nicht schön, wenn morgens auf dem Weg zum Frühstückstisch das Radio automatisch angeht? Was für eine Frage. Natürlich wäre es das. Beschlossene Sache und los geht es. Zunächst muss also Sonos Binding installiert werden um die Sonos Box dann über die Inbox als „Thing“ hinzuzufügen. Danach legen wir das Volume und das Playuri item an. Über das Volume Item setzen wir später die Wunschlautstärke, dass die Musik uns nicht gleich umhaut falls z.B. am Abend vorher Musik auch etwas lauter gehört wurde. Über das Playuri Item setzen wir den Radio-Stream. Es gibt auch ein Radio Item aber damit wollte es bei mir nicht klappen.

//Sonos Wohnzimmer
Dimmer  SON_vol   "Volume [%.1f %%]" soundvolume>   (gSonos)	{channel="sonos:PLAY1:RINCON_XXX:volume"}
String  SON_uri		                                        {channel="sonos:PLAY1:RINCON_XXX:playuri"}

Nun fehlt nur noch die passende Regel.

var Timer SONRun = null
rule "Fruehstuecksradio"
   when
    Item MS1_mot changed from OFF to ON
   then
    if(SONRun == null && (now.getHourOfDay() >= 6 && now.getHourOfDay() < 9)){
      logWarn("Fruehstuecksradio", "Trigger!")
      sendCommand(SON_vol, 16)
      sendCommand(SON_uri, "x-rincon-mp3radio://http://sr.audiostream.io/sr/1009/mp3/128/sr1")
      SONRun = createTimer(now.plusHours(4), [|logWarn("Fruehstuecksradio","Timer Off")])	
    }
    else {
      logWarn("Fruehstuecksradio", "Job already done")
    }
end

Grundsätzlich würde es reichen, wenn die Box loslegt sobald mein Bewegungsmelder (MS1_mot) im Wohnzimmer auslöst und die aktuelle Uhrzeit in einem gewissen Bereich wie hier z.B. 6 und 9 Uhr liegt. Dies hätte aber zur Folge, dass es quasi nicht möglich ist die Box in dieser Zeit wieder stumm zu bekommen oder etwas anderes zu hören, da jede erneute Bewegung das Radio startet. Deshalb definiere ich den Timer SONRun. Dieser wird beim Auslösen auf 4 Stunden gestellt und erst wenn der Timer abgelaufen kann die Regel erneut ausgeführt werden. Da der Timer länger läuft als der mögliche Auslösezeitraum groß ist kann das Radio somit nur einmal gestartet werden.