Anwesenheitserkennung

Die grundsätzliche Idee ist es, dem System mitzuteilen, wer gerade zuhause ist, und wer nicht.

OpenHAB verfügt über ein Binding zur FRITZ!Box, über das unter anderem die Anwesenheit bestimmter MAC-Adressen im lokalen Netzwerk abgefragt werden kann. Ich habe mir also für jedes Smartphone ein Contact-Item angelegt, sowie je einen Schalter. Schalter gibt es dann noch für die Abwesenheit der Eltern, und einen dafür, wenn keiner mehr zuhause ist:

Contact SmartphoneDirk "Smartphone Dirk [MAP(fritz.map):%s]" <network> (gAnwesenheit) {fritzboxtr064="maconline:XX-XX-XX-XX-XX-XX"}

Switch	vDirkAusserHaus	"Dirk außer Haus" <man_2> (gAnwesenheitSchalter)

Switch vElternAusserHaus "Eltern außer Haus" <parents_2_2 (gAnwesenheitSchalter)

Switch vAlleAusserHaus "Alle außer Haus" <parents_2_2> (gAnwesenheitSchalter)

Das Binding fragt die Daten der FRITZ!Box alle 5 Sekunden ab, und ändert dann den Status des Contact-Items auf „OPEN“ oder „CLOSED“ – im map-File wird das übersetzt nach „ONLINE“ und „OFFLINE“.
Damit weiß zumindest schon einmal openHAB, welches Smartphone gerade im Haus ist, und welches nicht. 

Über eine Rule werden dann die entsprechenden Switches gesetzt, und der Lightmanager über den Zustand informiert. Das sieht ungefähr so aus:

rule "Dirk außer Haus ON"
when
	Item SmartphoneDirk changed to CLOSED // Sobald mein Smartphone offline geht
then
		// Warte drei Minuten
		Thread::sleep(180000) 
		
		// Wenn es dann immer noch offline ist
		if(SmartphoneDirk.state==CLOSED){
			logInfo("RULE", "--> Dirk außer Haus ON")
			
			// Szene im Lightmanager schalten (Marker setzen, etc.)
			Thread::sleep(5000)
			sendHttpGetRequest("http://XXX.XXX.XXX.XXX/control?key=X")
			
			// Item Status ändern
			Thread::sleep(5000)
			postUpdate(vDirkAusserHaus, ON)
		}	
end

Rückwärts funktioniert das natürlich auch über eine Rule. Auch die Items für die Abwesenheit von Eltern und von allen wird über diese Rules geschaltet. Im Dashboard können diese Items dann direkt visualisiert werden.

Der Lightmanager kann nun Szenen in Abhängigkeit der Marker schalten – z.B. die Rolläden automatisch abends herunterlassen, wenn keiner zuhause ist.