Schlagwort-Archive: openhab

[openhab] mail bei Bewegung

Neben dem Licht einschalten bei Bewegungserkennung kann mit entsprechender Regel auch eine E-Mail versendet werden.

Zunächst muss das Modul org.openhab.action.mail-*.jar in dem addons Verzeichnis abgelegt und openhab neu gestartet werden.
Zusätzlich müssen in der openhab.cfg der smtp Server und die entsprechenden Zugangsdaten hinterlegt werden.

Damit die Benachrichtigung deaktiviert werden können, wurde folgender Schalter in einer items Datei angelegt.
Switch BewegungInfoAbwesenheit "Bewegung Info Abwesenheit" (maschine) {OFF,ON}

Die Regel aus dem Artikel zur Bewegungserkennung wurde um folgende Zeilen erweitert:

if(BewegungInfoAbwesenheit.state == ON && Presence.state == OFF){
sendMail("E-Mail Adresse", "Betreff", "Nachricht")
}

[openhab] FS20 Bewegungsmelder

Manchmal ist es nicht nur hilfreich das Licht einzuschalten wenn es dunkel wird und jemand zu Hause ist, sondern wenn es dunkel ist und eine Bewegung erkannt wird.

Da ich bereits FS20 Geräte im Einsatz habe, habe ich mir für die Bewegungserkennung den FS20 Funk-Bewegungsmelder zugelegt. Für das einbinden neuer Geräte hatte ich im Vorfeld den Artikel https://www.itbasic.de/openhab-fs20-fernbedienung-und-switch-status-aktualisierung/ geschrieben.

Registriert der Bewegungsmelder eine Bewegung soll ein Aktor, in diesem Fall eine FS20 Steckdose, geschaltet werden.
In der entsprechenden items Datei wurde nun der Aktor, der Bewegungsmelder und ein weiterer Schalter angelegt

items Datei
Switch LampeOb "Flur Stehlampe" (flur) {fs20="010101"}
Switch Beweg1 "Bewegungssensor 1" (fs) {fs20="000000"}
Switch FlurBewegung1 "Bewegungsmelder auto" (flur) {ON,OFF}

Der Schalter FlurBewegung1 dient dazu das Automatische schalten zu deaktivieren, so das der Aktor dauerhaft geschaltet werden kann.

rules Datei
rule Bewegung1
when
Item Beweg1 received update
then
if(FlurBewegung1.state == ON && LampeOb.state == OFF){
sendCommand(LampeOb, ON)
}
end

Wurde die LampeOb eingeschaltet und der Schalter FlurBewegung1 steht auf ON, wird die Lampe nach 360 Sekunden wieder ausgeschaltet.

rule LampeObBewegung
when
Item LampeOb received command ON
then
if(FlurBewegung1.state == ON){
timer = createTimer(now.plusSeconds(360)) [
sendCommand(LampeOb, OFF)
]
}
end

[openhab] fs20 Funk-Dämmerungssender einbinden

Für das schalten von Aktoren kann wie in einem vorangegangenen Artikel die Anwesenheitserkennung verwendet werden. Durch eine Regel wird in einem bestimmten Zeitraum geprüft ob jemand zu Hause ist und die Aktoren werden eingeschaltet. Handelt es sich bei den Aktoren jedoch um Lampen, kann es vorkommen das Diese zu früh beziehungsweise zu spät geschaltet werden. Damit das Schalten zum richtigen Zeitpunkt erfolgt, kann der jeweilige Sonnenaufgang / Sonnenuntergang berechnet werden und mit in die Regel eingebunden werden.

Ich habe mich jedoch für einen Dämmerrungssensor entschieden, diesen gibt es für das fs20 System als Bausatz von ELV. Für das löten und zusammensetzen der einzelnen Komponenten benötigt man ca. 30 Minuten. Der Sensor bietet zwei Kanäle die einzeln konfiguriert werden können. Je nach Konfiguration und Helligkeit wird ein on bzw off gesendet. Zum auslesen des voreingestellten Hauscodes hatte ich bereits den Artikel https://www.itbasic.de/openhab-fs20-fernbedienung-und-switch-status-aktualisierung/ geschrieben.

Über die angepasste Regel wird das Licht nun in einem definierten Zeitraum ein bzw ausgeschaltet, wenn jemand zu Hause ist und der definierte Lichtwert erreicht wurde.

rule AnwesendFlur
when
Time cron "* */5 * * * ?"
then
if (now.getHourOfDay() >= 6 && now.getHourOfDay() <=22 && Presence.state == ON && FlurAutomatik.state == ON && fsda1.state == ON) {
if(FlurAlle.state == OFF){
sendCommand(FlurAlle, ON)
logInfo("PresenceCheck", "LICHT AN" )
}
} else {
if(FlurAlle.state == ON && FlurAutomatik.state == ON){
sendCommand(FlurAlle, OFF)
logInfo("PresenceCheck", "LICHT AUS" )
}
}
end

Die beiden Kanäle des Sensors wurden wie folgt in einer items Datei hinterlegt:
Switch fsda1 "Daemmer1 " (fstest) {fs20="C4A600"}
Switch fsda2 "Daemmer2 " (fstest) {fs20="C4A601"}

fs20-daemmer

die gelieferten Bauteile

 

[openhab] man kommt nach Hause und das Licht geht an

Wenn man im dunkeln nach Hause kommt, ist es manchmal hilfreich wenn das Licht automatisch für eine Gewisse Zeit eingeschaltet wird.

Folgende Regel schaltet das Licht zwischen 23 Uhr und 6 Uhr morgens ein, sofern das Licht noch nicht eingeschaltet ist und die Automatik nicht deaktiviert wurde.

var Timer timerH
rule "Coming home"
when
Item Handy1 received command ON or
Item Handy2 received command ON
then
if (now.getHourOfDay() == 23 && FlurAlle.state == OFF && FlurAutomatik.state == ON || now.getHourOfDay() <= 6 && FlurAlle.state == OFF && FlurAutomatik.state == ON ) { sendCommand(FlurAlle, ON) timerH = createTimer(now.plusSeconds(900)) [ sendCommand(FlurAlle, OFF) ] } end

Die Regel hab ich unter dem Namen homecoming.rules in dem Pfad /home/openhab/configurations/rules abgelegt.

[openhab] Anwesenheitserkennung

Zeitgesteuert das Licht ein und ausschalten können einfache Schaltzeituhren schon seit Jahren. Praktischer und stromsparend ist es jedoch wenn das Licht nur eingeschaltet wird, wenn auch jemand zu Hause ist.

Die Anwesenheitserkennung lässt sich relativ einfach in openhab einrichten, hierfür muss zunächst das Addon org.openhab.binding.networkhealth-1.6.1.jar in dem addons Verzeichniss abgelegt werden. Mit Hilfe des bindings wird der Netzwerkstatus einer URL / IP überprüft.

Um zu prüfen ob sich ein Handy im WLAN befindet, reicht der folgende Eintrag in einer items Datei:

Switch Hermann {nh="android-000029388sjsdjd"}

Wenn sich das Handy im WLAN befindet, wird der Status auf on gesetzt.

Mehrere Handys

Da es in einem Haushalt meistens mehrere Handy gibt, ist es Hilfreich die Handys gesammelt abzufragen. Wenn nun Eins der hinterlegten Handys im WLAN gefunden wird, wird der Anwesenheitsstatus auf On gesetzt.

Für die Abfrage und das setzen des Anwesenheitsstatus gibt es bereits eine sehr gute Anleitung unter https://github.com/openhab/openhab/wiki/Samples-Tricks#check-presence-by-detecting-wifi-phonestablets.

Aktor nur bei Anwesenheit schalten

Die Aktoren sollen nun nur zwischen 16 Uhr und 23 Uhr eingeschaltet werden, jedoch nur wenn jemand zu Hause ist. Gleichzeitig sollte es eine einfach Möglichkeit geben, die automatische Schaltung zu deaktivieren.

Für das deaktivieren der Automatik habe ich den folgenden Switch in einer items Datei angelegt:
Switch FlurAutomatik "Automatik" (flur) {ON,OFF}

Für der schalten der Aktoren nutze ich folgende Regel:

rule Anwesend
when
Time cron "* */5 * * * ?"
then
if (now.getHourOfDay() >= 16 && now.getHourOfDay() <=22 && Presence.state == ON && FlurAutomatik.state == ON || now.getHourOfDay() >= 6 && now.getHourOfDay() <=8 && Presence.state == ON && FlurAutomatik.state == ON) { if(fs203.state == OFF){ sendCommand(fs203, ON) logInfo("PresenceCheck", "LICHT AN" ) } } else { if(fs203.state == ON && FlurAutomatik.state == ON){ sendCommand(fs203, OFF) logInfo("PresenceCheck", "LICHT AUS" ) } } end

Die if Abfrage if(fs203.state == ON/OFF){ wird benötigt, da ansonsten alle 5 Minuten ein f20 Signal abgesetzt wird und es dann dazu kommt das die Signale nicht verarbeitet werden.
In der openhab.log erhält man dann folgende Fehlermeldung:
2015-01-26 21:20:30.093 [WARN ] [o.o.i.t.c.i.AbstractCULHandler] - (LOVF) Limit Overflow: Last message lost. You are using more than 1% transmitting time. Reduce the number of rf messages