OpenHAB automatische Regeln einrichten
Hier eine Sammlung diverser openHAB Regeln die ich für das Einrichten von Szenen, das automatische Ausführen von Szenen, und Alarmierungen eingerichtet habe. Die hier stehenden Regeln basieren auf diesem Setup:
Sonnenschutz Szene
Die folgende Regel baut einen Szene für den Sonnenschutz im Haus. Aktiviert wird die Szene über das vorher angelegte Switch Item (hier Scene_Sonnenschutz
), welches das Kommando ON
(z.B. via HABPanel) bekommt. Die Aktivierung lässt dann alle Rollläden der Gruppe Rollladen_Sonnenschutz
auf 25% fahren. Dann erfolgt eine Prüfung ob es zu windig für die Markise ist (kleiner 15 km/h) und ob wir überhaupt zu Hause sind (Anwesenheit
Item auf ON
), wenn beides zutrifft, fährt die Markise auf 100%. Sollte der Anwesenheits Switch auf OFF
stehen, beschattet auch der Wohnzimmer Rolladen komplett. Sollte nichts davon zu treffen, wird der Wohnzimmer Rolladen nur ein Stück weit (85%) heruntergefahren, damit man auch noch durch die Terrassentür rein und raus laufen kann. Zu guter Letzt sagt uns Alexa noch das wir den Sonnenschutz aktiviert haben und eine Pushnachricht auf dem Handy benachrichtigt uns ebenfalls über den neuen Zustand zu Hause. Ganz am Ende stelle ich den Switch Status wieder auf OFF
zurück.
Vorraussetzungen:
- diverse Rolladen Items (digitalSTROM, hier unter anderem
RolladenWohnzimmer_PositionControl
) - Item Switch für Sonnenschutz (hier
Scene_Sonnenschutz
) - Gruppe für alle Rollläden, die sofort in den Sonnenschutz Modus gehen sollen (bei mir alle außer Wohnzimmer, hier Item
Rolladen_Sonnenschutz
) - Markisen Item (hier Item
Markise_Control
) - Windgeschwindigkeit (entweder openweathermap oder zum Beispiel Netatmo Windmesser, hier Item
openweathermap_weather_and_forecast_15ac3eed_local_current_wind_speed.state
) - eingerichtete openHAB Mobile App (Push Benachrichtigung)
- Alexa Ankündigungs Item (hier
WohnzimmerEcho_Ankuendigung
)
/opt/openHAB/data/openhab/conf/rules/sonnenschutz.rules
// Sonnenschutz Szene
rule "Sonnenschutz Scene"
when
Item Scene_Sonnenschutz changed to ON
then
Rolladen_Sonnenschutz.sendCommand(25)
if ((openweathermap_weather_and_forecast_15ac3eed_local_current_wind_speed.state <= 15|"km/h") && (Anwesenheit.state == ON))
{
Markise_Control.sendCommand(100)
}
if (Anwesenheit.state == OFF)
{
RolladenWohnzimmer_PositionControl.sendCommand(18)
}
else
{
RolladenWohnzimmer_PositionControl.sendCommand(85)
}
WohnzimmerEcho_Ankuendigung.sendCommand("Sonnenschutz wurde aktiviert")
sendNotification("your@myopenhabMailaddress", "Sonnenschutz wurde aktiviert")
Scene_Sonnenschutz.postUpdate(OFF)
end
Automatischer Rollladen Sonnenschutz
Im Sommer ist es hilfreich wenn die Rollläden rechtzeitig runterfahren und so einen Sonnenschutz bilden. Ich lasse sie dazu auf 20% fahren. Eine Sonnenschutz Szene habe ich bereits eingerichtet, jetzt geht es darum diese automatisch bei Bedarf zu aktivieren:
- Wenn die Sonne scheint, bzw. ein Sonnensensor Wert erreicht wurde
- Die Temperatur schon über 18 °C ist,
- Der Wetter Bericht mehr als 24 °C ankündigt
Sollen die jeweiligen Rollläden in eine individuelle Position gehen. Bei Abwesenheit wird die Sonnenschutz Szene ausgeführt.
Dafür nutze ich:
- digitalSTROM Rollläden
- Somfy Sunis IO Sonnensensoren
- Netatmo Wetterstation
- OpenWeatherMap Wetterbericht
- Abwesenheits Schalter
- Sonnenschutz Szene
- openHAB Mobile App für Pushnotification
/opt/openHAB/data/openhab/conf/rules/sonnenschutz.rules
var boolean ReachedOst = false
var boolean ReachedSued = false
var boolean ReachedAbwesend = false
var Timer SunOst_Timer = null
var Timer SunSued_Timer = null
var Timer SunAbwesend_Timer = null
// Automatischer Sonnenschutz
rule "Automatischer Sonnenschutz"
when
Item Anwesenheit changed or
Item SonnensensorOst_Luminance changed or
Item SonnensensorSued_Luminance changed or
Item NetatmoHomeOutdoor_Temperature changed or
Item openweathermap_weather_and_forecast_15ac3eed_local_forecastHours06_temperature changed
then
if ((NetatmoHomeOutdoor_Temperature.state >= 18|"°C") &&
(openweathermap_weather_and_forecast_15ac3eed_local_forecastHours06_temperature.state >= 24|"°C"))
{
if ((SonnensensorOst_Luminance.state >= 55000) &&
(SunOst_Timer == null) &&
(Anwesenheit.state == ON))
{
sendNotification("andreas@laub-home.de","Auto Osten aktiviert")
RolladenKueche_PositionControl.sendCommand(30)
Rollladen_Kinderzimmer.sendCommand(25)
RolladenBadDG_PositionControl.sendCommand(40)
RolladenBadOG_PositionControl.sendCommand(40)
RolladenEsszimmer_PositionControl.sendCommand(60)
SunAbwesend_Timer?.cancel
SunAbwesend_Timer = null
SunOst_Timer = createTimer(now.plusMinutes(780), [|
SunOst_Timer?.cancel
SunOst_Timer = null
])
}
if ((SonnensensorSued_Luminance.state >= 45000) &&
(SunSued_Timer == null) &&
(Anwesenheit.state == ON))
{
sendNotification("andreas@laub-home.de","Auto Süden aktiviert")
RolladenKueche_PositionControl.sendCommand(40)
Rollladen_Kinderzimmer.sendCommand(40)
RolladenBadDG_PositionControl.sendCommand(25)
RolladenBadOG_PositionControl.sendCommand(25)
RolladenEsszimmer_PositionControl.sendCommand(25)
RolladenSchlafzimmer_PositionControl.sendCommand(30)
SunAbwesend_Timer?.cancel
SunAbwesend_Timer = null
SunSued_Timer = createTimer(now.plusMinutes(780), [|
SunSued_Timer?.cancel
SunSued_Timer = null
])
}
if (((SonnensensorOst_Luminance.state >= 50000) || (SonnensensorSued_Luminance.state >= 50000)) &&
(SunAbwesend_Timer == null) &&
(Anwesenheit.state == OFF))
{
Scene_Sonnenschutz.sendCommand(ON)
sendNotification("andreas@laub-home.de","Auto SonnenschutzSzene aktiviert!")
SunOst_Timer?.cancel
SunOst_Timer = null
SunSued_Timer?.cancel
SunSued_Timer = null
SunAbwesend_Timer = createTimer(now.plusMinutes(780), [|
SunAbwesend_Timer?.cancel
SunAbwesend_Timer = null
])
}
}
end
Markise automatisch ausfahren
Wenn es warm draußen ist und die Sonne auf die Terrasse knallt, soll natürlich die Markise automatisch herausfahren. Die Regel sollte so aussehen:
- Wenn es wärmer als 22 °C ist,
- der Sonnensensor 55.000 LUX erreicht hat,
- kein Wind Stärker 15 km/h ist,
- Anwesenheit eingeschaltet ist
Soll die Markise ausgefahren werden.
Dafür nutze ich (ItemName):
- Somfy IO Markisen Motor (
Markise_Control
) - Somfy Sunis IO Sonnensensor (
SonnensensorSued_Luminance
) - Netatmo Wetterstation Außen Temperatur (
NetatmoHomeOutdoor_Temperature
) - Netatmo Wetterstation Windmesser (
NetatmoWindmesser_Windgeschwindigkeit
undNetatmoWindmesser_BoenGeschwindigkeit
) - OpenWeatherMap Wetterbericht 3h Vorschau (
openweathermap_weather_and_forecast_15ac3eed_local_forecastHours03_wind_speed
) - Anwesenheits Schalter (
Anwesenheit
) - openHAB Mobile App für Pushnachrichten
Die Regel Markise legen wir in openHAB als Datei in openhab/conf/rules/
ab. Bei meiner Docker Installation ist die Datei hier:
/opt/openHAB/data/openhab/conf/rules/markise.rules
// Markise automatisch ausfahren
var Timer Markise_Timer = null
rule "Markise automatisch Ausfahren"
when
Item NetatmoHomeOutdoor_Temperature changed or
Item SonnensensorSued_Luminance changed or
Item NetatmoWindmesser_BoenGeschwindigkeit changed or
Item NetatmoWindmesser_Windgeschwindigkeit changed or
Item Anwesenheit changed or
Item openweathermap_weather_and_forecast_15ac3eed_local_current_wind_speed changed
then
var Temp = NetatmoHomeOutdoor_Temperature.state as QuantityType<Number>
var LuminanceSued = SonnensensorSued_Luminance.state as DecimalType
var Wind = NetatmoWindmesser_Windgeschwindigkeit.state as QuantityType<Number>
var Windboen = NetatmoWindmesser_BoenGeschwindigkeit.state as QuantityType<Number>
var Windforecast = openweathermap_weather_and_forecast_15ac3eed_local_forecastHours03_wind_speed.state as QuantityType<Number>
if ((Temp >= 22.0|"°C") && (LuminanceSued >= 55000) &&
(Wind <= 15|"km/h") && (Windforecast <= 15|"km/h") && (Windboen <= 15|"km/h") &&
(Markise_Timer == null) && (Anwesenheit.state == ON)) {
Markise_Control.sendCommand(100)
sendNotification("your@myopenhabMailAddress","Markise automatisch ausgefahren!")
Markise_Timer = createTimer(now.plusMinutes(600), [|
Markise_Timer?.cancel
Markise_Timer = null
])
}
end
Co2 Warnung Regel
Möchte man sich warnen lassen, das der gemessene Co2 Gehalt (Netatmo Wetterstation) zu hoch ist, kann man dies mit der folgenden Regel machen. Diese Schaltet ein Switch Item von OFF
nach ON
. Dieses Switch Item habe ich vorab angelegt und benutze es in HABPanel und meiner Sitemap als Alarmanzeige. Man kann Ebenfalls eine Alexa Sprachauausgabe machen und sich eine Pushnachricht aufs Handy schicken lassen.
Voraussetzungen:
- Eingerichtete openHAB Mobile App (für Push Benachrichtigung)
- Netatmo Wetterstation
- Alexa Ankündigungs Item (hier
WohnzimmerEcho_Ankuendigung
) - Dummy Switch Item (hier
Buero_CO2_Alarm
)
/opt/openHAB/data/openhab/conf/rules/co2.rules
// Co2 Büro
rule "Büro Co2 Alarm Switch"
when
Item NetatmoHomeBuero_CO2Gehalt changed or
System started
then
if (NetatmoHomeBuero_CO2Gehalt.state >= 800|ppm){
Buero_CO2_Alarm.sendCommand(ON)
}
else {
Buero_CO2_Alarm.sendCommand(OFF)
}
end
rule "Büro Co2 Alarmierung"
when
Item Buero_CO2_Alarm changed from OFF to ON
then
sendNotification("your@myopenhabMailaddress", "Achtung! CO2 Gehalt im Büro zu hoch: " +NetatmoHomeBuero_CO2Gehalt.state+ "")
if (now.getHourOfDay > 8 && now.getHourOfDay < 21) {
WohnzimmerEcho_Ankuendigung.sendCommand("Zu hoher CO2 Gehalt im Büro. Bitte Lüften.")
}
end
rule "Büro Co2 Entwarnung"
when
Item Buero_CO2_Alarm changed from ON to OFF
then
sendNotification("your@myopenhabMailaddress", "CO2 Gehalt im Büro wieder OK: " +NetatmoHomeBuero_CO2Gehalt.state+ "")
end
Luftfeuchtigkeits Warnung Regel
Möchte man sich warnen lassen, das die gemessene Luftfeuchtigkeit (Netatmo Wetterstation / Raspberry Pi Sensor) zu hoch ist, kann man dies mit der folgenden Regel machen. Diese Schaltet ein Switch Item von OFF
nach ON
. Dieses Switch Item habe ich vorab angelegt und benutze es in HABPanel und meiner Sitemap als Alarmanzeige. Man kann Ebenfalls eine Alexa Sprachauausgabe machen und sich eine Pushnachricht aufs Handy schicken lassen.
Voraussetzungen:
- Eingerichtete openHAB Mobile App (für Push Benachrichtigung)
- Netatmo Wetterstation
- Alexa Ankündigungs Item (hier
WohnzimmerEcho_Ankuendigung
) - Dummy Switch Item (hier
Buero_Humidity_Alarm
)
/opt/openHAB/data/openhab/conf/rules/humidity.rules
// Humidity Büro
rule "Büro Humidity Alarm Switch"
when
Item NetatmoHomeBuero_Luftfeuchtigkeit changed or
System started
then
if (NetatmoHomeBuero_Luftfeuchtigkeit.state >= 60|%){
Buero_Humidity_Alarm.sendCommand(ON)
}
else {
Buero_Humidity_Alarm.sendCommand(OFF)
}
end
rule "Büro Humidity Alarmierung"
when
Item Buero_Humidity_Alarm changed from OFF to ON
then
sendNotification("your@myopenhabMailaddress", "Achtung! Luftfeuchtigkeit im Büro zu hoch: " +NetatmoHomeBuero_Luftfeuchtigkeit.state+ "")
if (now.getHourOfDay > 8 && now.getHourOfDay < 21) {
WohnzimmerEcho_Ankuendigung.sendCommand("Zu hohe Luftfeuchtigkeit im Büro. Bitte Lüften.")
}
end
rule "Büro Humidity Entwarnung"
when
Item Buero_Humidity_Alarm changed from ON to OFF
then
sendNotification("your@myopenhabMailaddress", "Luftfeuchtigkeit im Büro wieder OK: " +NetatmoHomeBuero_Luftfeuchtigkeit.state+ "")
end
Netatmo Batterie Warnung Regel
Möchte man sich eine Warnung schicken lassen, wenn die Batterien der Netatmo Wetterstation Module sich dem Ende zu neigen, dann erstellt man eine einfache Regel, die die Netatmo Low Battery Warning Switch Items überwachen. Die untenstehende Regel prüft ob sich das Battery Warning Switch Item auf ON stellt und schickt dann eine Pushnachricht ans Handy und lässt Alexa eine Ankündigung aussprechen.
Vorraussetzungen
- Netatmo Wetter Station mit Modulen
- Battery Warning Switch Item (hier
netatmo_NAModule4_e1499a1f_03000059db36_LowBattery
) - eingerichtete openHAB Mobile App (Push Benachrichtigung)
- Alexa Ankündigungs Item (hier
WohnzimmerEcho_Ankuendigung
)
/opt/openHAB/data/openhab/conf/rules/battery.rules
// Netatmo Batterien Büro
rule "Battery Warning Netatmo Büro"
when
Item netatmo_NAModule4_e1499a1f_03000059db36_LowBattery changed from OFF to ON
then
sendNotification("your@myopenhabMailaddress", "Achtung! Batterien in Netatmo Station Büro leer.")
if (now.getHourOfDay > 8 && now.getHourOfDay < 21) {
WohnzimmerEcho_Ankuendigung.sendCommand("Batterien in Netatmo Station Büro leer.")
}
end
Stromverbrauch Alarm
Hat man mal wieder vergessen das Licht im Bad auszuschalten, wird man durch die folgende openHAB Regel daran erinnert. Diese Regel kontrolliert den Stromverbrauch vom Bad und Alarmiert einen, wenn der 60 Minuten lang mehr als 10 Watt verbraucht werden. Es wird eine Pushnachricht verschickt und Alexa gibt einen Hinweis aus.
Voraussetzungen:
- Stromverbrauchsmessungs Item (hier digitalSTROM Binding,
WattBadDG_Consumption_wh_label
) - Amazon Echo als Ausgabe (hier
WohnzimmerEcho_Ankuendigung
) - OpenHab Mobile App für Push-Benachrichtigung
/opt/openHAB/data/openhab/conf/rules/power.rules
// Bad OG
rule "Stromverbrauch Alarm Bad OG"
when
Item WattBadOG_Consumption_wh_label changed
then
if ((WattBadOG_Consumption_wh_label.state <= 10|W) && (BadOGStrom_timer!=null)) {
BadOGStrom_timer?.cancel
BadOGStrom_timer = null
BadOG_Strom_Alarm.sendCommand(OFF)
}
else if ((WattBadOG_Consumption_wh_label.state >= 10|W) && (BadOGStrom_timer==null)) {
BadOGStrom_timer = createTimer(now.plusMinutes(60), [|
sendNotification("andreas@laub-home.de", "Achtung! Stromverbrauch Bad OG. Licht prüfen!")
WohnzimmerEcho_Ankuendigung.sendCommand("Achtung! Stromverbrauch im Bad Obergeschoss ist seit einer Stunde höher als 10 Watt. Ist das Licht vielleicht noch an?")
BadOG_Strom_Alarm.sendCommand(ON)
])
}
end
Fenster Offen Alarm
Wer kennt das nicht, gerade in den Bädern wird nach dem Duschen oder Baden gelüftet und man vergisst das Fenster wieder zuzumachen. Vor allem in der kalten Jahreszeit, wo man auch noch heizt ist dies sicherlich ärgerlich. Die folgende Regel nutzt das Item des Fenster Sensors (FensterBadDG_Contact
) und prüft ob es bei unter 22°C länger als 30 Minuten offen steht. Ich nutze bei mir die Somfy slim io Sensoren welche über Somfy TaHoma Binding an openHab angebunden sind.
Vorraussetzungen:
- Somfy TaHoma Box
- Somfy Slim IO Sensoren
- Somfy TaHoma Binding
- konfiguriertes Sensor Item (hier
FensterBadDG_Contact
) - Amazon Echo als Ausgabe (hier
WohnzimmerEcho_Ankuendigung
) - OpenHab Mobile App für Push-Benachrichtigung
/opt/openHAB/data/openhab/conf/rules/window.rules
// Fenster Alarmierung
var Timer BadDGFenster_timer = null
// Bad DG
rule "Fenster Alarm Bad DG"
when
Item FensterBadDG_Contact changed or
Item NetatmoHomeOutdoor_Temperature changed
then
if ((FensterBadDG_Contact.state==CLOSED) && (BadDGFenster_timer!=null)) {
BadDGFenster_timer?.cancel
BadDGFenster_timer = null
BadDG_Fenster_Alarm.sendCommand(OFF)
}
else if ((FensterBadDG_Contact.state==OPEN) && (BadDGFenster_timer==null) && (NetatmoHomeOutdoor_Temperature.state <= 22.0|"°C")) {
BadDGFenster_timer = createTimer(now.plusMinutes(30), [|
sendBroadcastNotification("Achtung! Fenster Bad DG ist offen!")
if (now.getHourOfDay > 8 && now.getHourOfDay < 21) {
WohnzimmerEcho_Ankuendigung.sendCommand("Achtung! Dachgeschoss Badezimmerfentser ist offen!" )
}
BadDG_Fenster_Alarm.sendCommand(ON)
])
}
end