Es war so weit, die ersten beiden Fibaro-Geräte erhielten Einzug:
- Eine Fibaro Jalousie-Steuerung FGRM-222
- Einen Fibaro Motion Sensor
Natürlich brauchte der Server noch einen USB-Stick um auch Z-Wave fähig zu werden, hier habe ich mich für den Z-Wave ZME_UZB1 entschieden, da dieser nach Recherchen auf jeden Fall auch mit OpenHAB funktionsfähig sein sollte.
Die Einrichtung des USB-Sticks verlief problemlos. Treiber installiert, in der OpenHAB-Konfiguration den COM-Port eingetragen, neu gestartet und das wars.
Zunächst nahm ich den Multisensor in Betrieb. Über HABmin den Inklude-Modus aktiviert, Sensor inkludiert und dann die entsprechenden Items angelegt und erstmal einfach ausgegeben. Temperatur, Bewegung und Helligkeit waren tolle Parameter, um später so einiges damit zu machen.
OpenHAB Item-Konfiguration:
Number FibEye1_Lux "Helligkeit WZ [%.2f Lux]" <sun> (gWZ) { zwave="4:command=SENSOR_MULTILEVEL,sensor_type=3" } Number FibEye1_Battery "Batterie [%d %%]" <energy> (gBattery) { zwave="4:command=BATTERY" } Number FibEye1_Temp "Temp Eye WZ [%.2f °C]" <temperature> (gTemperatureEG) { zwave="4:command=SENSOR_MULTILEVEL,sensor_type=1" } Contact FibEye1_Motion "Bewegung" <shield> (gMotion) { zwave="4:command=SENSOR_BINARY" } Contact FibEye1_Tamper "Sabotage" <shield> (gAlarmTamper) { zwave="4:command=SENSOR_ALARM" }
Platziert habe ich den Sensor dann im Wohnzimmer, dort wo auch die elektrische Jalousie noch mit Hilfe des Fibaro Roller Shutter 2 „smart gemacht“ wurde.
Die OpenHAB Item-Konfiguration für die Jalousie-Steuerung:
Rollershutter RolladeWZ "Rollade Wohnzimmer [%.0f %%]" <terrace> (gBlind) { zwave="8:command=SWITCH_MULTILEVEL" } Number ShutterWatts "Rollade Momentanverbrauch [%.1f W]" <energy> (gWatts) { zwave="8:command=SENSOR_MULTILEVEL"} Number ShutterTotalEnergy "Rollade Gesamtverbrauch [%.2f KWh]" <energy> (gEnergy) { zwave="8:command=METER" }
Da der Roller Shutter 2 auch den Gesamt- und Momentanverbrauch übertragen kann, habe ich hierfür natürlich auch direkt die entsprechenden Items angelegt.
Zum ersten Mal die Rolladen über das Handy zu steuern war unglaublich. Doch mit Regeln konnte der Spaß nun so richtig los gehen.
Zunächst mal stand die Sicherheit auf dem Plan. Nachts sollte der Rolladen komplett schließen und morgens wieder öffnen. Die Regel erschien zunächst recht einfach, hatte aber das Problem, dass man, wenn man noch wach war und in den Garten wollte, zunächst die Rolladen wieder öffnen musste bevor man in den Garten gelangen konnte.
Die Idee war also, dass der Rolladen erst schließt, wenn keiner mehr raus möchte. Hier trat dann der Fibaro Multisensor in Aktion. Da dieser auch über einen Bewegungsmelder verfügt.
Die Regel ist nun etwas komplexer und funktioniert so:
- Zwischen 22h und 6h wird der Rolladen komplett heruntergelassen, wenn 90 Minuten keine Bewegung mehr im Wohnzimmer stattgefunden hat
- Zwischen 6h und 9h wird bei Bewegung der Rolladen auf 75% geöffnet
Die Regel in OpenHAB erfolgt wie üblich über ein Script, es sieht folgendermaßen aus:
import org.openhab.core.library.types.* import org.openhab.model.script.actions.Timer import org.joda.time.* var Timer closeAtNightTimer var int blindHalfOpened = 75 var int blindOpen = 99 var int blindClosed = 0 // Zwischen 22 Uhr und 6 Uhr Rolladen ganz runterfahren wenn 90 Minuten keine Bewegung im Wohnzimmer war // Zwischen 6 und 12 Uhr bei Bewegung im Wohnzimmer Rolladen auf 75% fahren rule "Rolladen runter in der Nacht" when System started or Item FibEye1_Motion changed then if(FibEye1_Motion.state == CLOSED) { var int hour = now.getHourOfDay() if( hour < 6 || hour >= 22 ) { closeAtNightTimer = createTimer(now.plusMinutes(90)) [| sendTelegram("bot", "Rolladen runter, 90 Minuten keine Bewegung") sendCommand(RolladeWZ, blindClosed) ] } } else { if(closeAtNightTimer != null) { closeAtNightTimer.cancel() closeAtNightTimer = null; } if( gPresence.state == ON && movementDetected == 0 ) { var int hour = now.getHourOfDay() if( hour >= 6 && hour <= 12 && RolladeWZ.state <= 1 ) { sendTelegram("bot", "Rolladen auf 75%, Zwischen 6h und 12h und Bewegung erkannt") sendCommand(RolladeWZ, blindHalfOpened) movementDetected = 1 } } } end rule "ResetMovementDetected" when Time cron "0 0 5 * * ?" then movementDetected = 0 end
Der Fehler mit dem Sonnenschutz
Wenn man manche Regeln nicht sauber durchdenkt, können auch mal richtig lustige Dinge passieren. Ich wollte eine Sonnenschutzfunktion programmieren. Dank des Motion Sensors von Fibaro, der ja auch die Helligkeit misst, sollte das relativ einfach sein. Die Regel sollte in etwa so aussehen:
- Wenn Helligkeitssensor über XXX Lux, dann senke Rolladen auf 50% ab
- Wenn Helligkeitssensor unter YYY Lux, dann fahre Rolladen wieder hoch
Als OpenHAB-Regel war dies auch schnell implementiert und sah dann folgendermaßen aus:
rule "Rolladen Sonnenschutz" when System started or Item FibEye1_Lux changed then if( FibEye1_Lux.state > 2000 && RolladeWZ.state > blindSun) { sendCommand(RolladeWZ, blindSun) sendTelegram("bot", "Rolladen Sonnenschutz") } else if( FibEye1_Lux.state < 500 && RolladeWZ.state == blindSun) { sendCommand(RolladeWZ, blindOpen) sendTelegram("bot", "Rolladen Sonnenschutz ENDE") } end
Was war hier das Problem?
Die Regel führte zu einer Endlosschleife, so dass dauerhaft der Rolladen runter- und wieder hochgefahren wurde.
Denn aufgrund der Tatsache, dass der geschlossene Rolladen das Wohnzimmer verdunkelte, wurden die 500 Lux unterschritten, so dass der Rolladen wieder hochgefahren wurde. Dann war es natürlich wieder hell, die 2000 Lux wurden überschritten und der Rolladen wurde wieder herabgelassen usw.
Einige Monate später gab es dann einen zweiten Motion Sensor im Garten, der inzwischen anstelle des Motion Sensors im Wohnzimmer für die Helligkeitsmessung benutzt wird, damit tritt das Problem dann nicht mehr auf.