zurück zur Startseite

zurück zur Übersicht der Heimautomatisierung

20. Die Anwesenheit (Stand 18.12.2018)

Das intelligente Haus sollte wissen, wann der Hausherr abwesend ist und was seine Wünsche sind, wenn er zu Hause ist wink

Wenn das Haus leer ist, kann die Heizung herunter gedreht werden und wenn er anwesend ist, kann von Montag bis Freitag der Kaffee um 7 Uhr zubereitet sein. Am Sonntag soll für die Dame des Hauses um 9 Uhr der Rollladen geöffnet werden – aber nur wenn sie auch zu Hause ist. Ist nur der Herr des Hauses da, dann soll der Rollladen schon um 8 Uhr geöffnet werden und sind beide weg, dann soll er geschlossen bleiben. Der Phantasie sind da keine Grenzen gesetzt.

Ausgangspunkt ist ein Modul in FHEM namens RESIDENTS. Das stellt die Grundfunktionen zur Verfügung. Darüber hinaus gibt es das Modul ROOMMATE, welches man für jeden Bewohner definieren muss. Das habe ich anfänglich genutzt, mich dann aber entschieden, die Logik selbst zu programmieren, denn diese beiden Module sind zwar richtig gut, aber viel zu umfangreich für meine Anwendung. Die grundlegende Idee habe ich aber davon übenommen.

Welcher Status ist denn für meine liebe Ursula und mich jeweils individuell möglich?

Der Zustand des Hauses ergibt sich dann wie folgt:

       Ursula

Jürgen

home

absent

gone

gotosleep

asleep

awoken

home

home

home

home

home

home

home

absent

home

absent

absent

gotosleep

asleep

awoken

gone

home

absent

gone

gotosleep

asleep

awoken

gotosleep

home

gotosleep

gotosleep

gotosleep

asleep

awoken

asleep

home

asleep

asleep

asleep

asleep

awoken

awoken

home

awoken

awoken

awoken

awoken

awoken

Den Status des Hauses habe ich mit einem DOIF mit folgender Definition realisiert:

([uj_statusjuergen] eq "home" or [uj_statusursula] eq "home")
   (set uj_statushaus home)
DOELSEIF ([uj_statusjuergen] eq "awoken" or [uj_statusursula] eq "awoken")
   (set uj_statushaus awoken)
DOELSEIF ([uj_statusjuergen] eq "asleep" and [uj_statusursula] eq "asleep")
   (set uj_statushaus asleep)
DOELSEIF ([uj_statusjuergen] eq "gotosleep" or [uj_statusursula] eq "gotosleep")
   (set uj_statushaus gotosleep)
DOELSEIF ([uj_statusjuergen] eq "absent" or [uj_statusursula] eq "absent")
   (set uj_statushaus absent)
DOELSEIF ([uj_statusjuergen] eq "gone" and [uj_statusursula] eq "gone")
   (set uj_statushaus gone)

Ich habe nun für uns beide je 3 Taster an zentraler Stelle montiert. Damit kann jeder direkt die folgenden Zustände einstellen:

Praktischerweise gibt es von HomeMatic ein passendes Gerät.

Das grundlegende Vorgehen, dieses Gerät in FHEM zu integrieren ("paired"), brauche ich wohl nicht nochmals dokumentieren, es wäre einfach nur eine Wiederholung. Es gibt aber eine Besonderheit: wenn man dieses Gerät auch mit der virtuellen CCU "peered", dann bekommt man durch kurzes grünes Aufleuchten der kleinen LED auch eine optische Rückmeldung, dass der Befehl angekommen ist. Erreicht wird dies durch die Eingabe von

set xx_Zentrale_Btn2 peerChan 0 wk_jkommt single

wobei "wk_jkommt" nur eine der 6 Tasten ist. Das muss also für die anderen 5 Tasten entsprechend wiederholt werden. Damit ist die gesamte Definition wie folgt, auch hier gilt wieder, dass die meisten Attribute automatisch eingerichtet werden.

define wk_ujstatus CUL_HM 397340
   attr wk_ujstatus IODev hmusb
   attr wk_ujstatus IOgrp vccu
   attr wk_ujstatus autoReadReg 4_reqStatus
   attr wk_ujstatus expert 2_full
   attr wk_ujstatus firmware 1.2
   attr wk_ujstatus group Fernbedienung
   attr wk_ujstatus model HM-PB-6-WM55
   attr wk_ujstatus room Residents
   attr wk_ujstatus serialNr MEQ0075327
   attr wk_ujstatus subType remote
   attr wk_ujstatus webCmd getConfig:clear msgEvents

define wk_jkommt CUL_HM 39734001
   attr wk_jkommt group Fernbedienung
   attr wk_jkommt model HM-PB-6-WM55
   attr wk_jkommt peerIDs 00000000,2CC69902,
   attr wk_jkommt room Residents

define wk_ukommt CUL_HM 39734002
   attr wk_ukommt group Fernbedienung
   attr wk_ukommt model HM-PB-6-WM55
   attr wk_ukommt peerIDs 00000000,2CC69902,
   attr wk_ukommt room Residents

define wk_jschlaeft CUL_HM 39734003
   attr wk_jschlaeft group Fernbedienung
   attr wk_jschlaeft model HM-PB-6-WM55
   attr wk_jschlaeft peerIDs 00000000,2CC69902,
   attr wk_jschlaeft room Residents

define wk_uschlaeft CUL_HM 39734004
   attr wk_uschlaeft group Fernbedienung
   attr wk_uschlaeft model HM-PB-6-WM55
   attr wk_uschlaeft peerIDs 00000000,2CC69902,
   attr wk_uschlaeft room Residents

define wk_jgeht CUL_HM 39734005
   attr wk_jgeht group Fernbedienung
   attr wk_jgeht model HM-PB-6-WM55
   attr wk_jgeht peerIDs 00000000,2CC69902,
   attr wk_jgeht room Residents

define wk_ugeht CUL_HM 39734006
   attr wk_ugeht group Fernbedienung
   attr wk_ugeht model HM-PB-6-WM55
   attr wk_ugeht peerIDs 00000000,2CC69902,
   attr wk_ugeht room Residents

Doch wie ergeben sich nun die anderen Zustände?

Programmiert habe ich das je Person mitels einem FHEM-Device namens "LightScene". Die 6 Szenen sind wie folgt definiert (das ? steht für u oder j):

           Szene
Device

home

absent

gone

gotosleep

asleep

awoken

Berührfeld
uj_?schlafen

nosleep

nosleep

nosleep

gotosleep

asleep

awoken

Berührfeld
uj_?weggehen

nothome

absent

gone

nothome

nothome

nothome

Berührfeld
uj_?zuhause

home

nothome

nothome

nothome

nothome

nothome

Weitere "Devices" (wie z.B. Radio, Licht, FHEM-Variable, etc.) können bei Bedarf ergänzt werden.

weiter zu: 21. Der Wecker