Kürzlich stelle ich eine Möglichkeit vor, ein günstiges RFID-Lesegerät an den Raspberry anzuschließen. In diesem Beitrag, der als Fortsetzung gedacht ist, geht es um die Integration in OpenHAB. Wir erstellen entsprechende Items, binden diese in die Sitemap ein und erstellen die ein oder andere Regel.
Wir beginnen direkt mit der Definition unserer neuen Items. Dazu nutze ich die bereits vorhandene Datei „/etc/openhab/configurations/praesenz.items“ und ergänze diese mit folgenden Zeilen:
Shell
1
2
3
4
5
6
7
8
9
10
11
12
13
//RFID
SwitchRFID_DANIEL
SwitchRFID_DANIEL_SWITCH
SwitchRFID_TINA
SwitchRFID_TINA_SWITCH
SwitchRFID_GRUPPE
SwitchRFID_GRUPPE_SWITCH
DateTime DANIEL_ABWESEND"Daniel abwesend seit [%1$tA, %1$td.%1$tm.%1$tY %1$tT]"<calendar>
DateTime DANIEL_ANWESEND"Daniel anwesend seit [%1$tA, %1$td.%1$tm.%1$tY %1$tT]"<calendar>
DateTime TINA_ABWESEND"Tina abwesend seit [%1$tA, %1$td.%1$tm.%1$tY %1$tT]"<calendar>
DateTime TINA_ANWESEND"Tina anwesend seit [%1$tA, %1$td.%1$tm.%1$tY %1$tT]"<calendar>
Hier haben wir zunächst für jeden Benutzer ein Item, dass vom Script auf unserer Himbeere befüllt wird. Zudem habe ich einen weiteren Schalter definiert, um den Anwesenheitszustand manuell in der Sitemap zu übersteuern. Schlussendlich kommen noch Items dazu, die die Zeit der letzten Statusänderung speichern.
Einbindung in die Sitemap
Nun binden wir unsere neuen Items an gewünschter Stelle in die Sitemap ein. Ich habe dies so realisiert, dass für jeden Nutzer in Frame dargestellt wird. Zudem wird angezeigt, seit wann der jeweilige Nutzer an- bzw. abwesend ist. Das Icon „present“ ist bereits bei der Installation von OpenHAB dabei.
Shell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Text item=RFID_GRUPPE label="Gesamtpräsenz [MAP(praesenz.map):%s]"icon="present"{
Frame label="Daniel"{
Text item=RFID_DANIEL label="Daniel RFID [MAP(praesenz.map):%s]"icon="present"
Text item=DANIEL_ABWESEND visibility=[RFID_DANIEL==OFF]
Text item=DANIEL_ANWESEND visibility=[RFID_DANIEL==ON]
Damit uns die Zustände der Präsenzen in der Sitemap nicht als „ON“ oder „OFF“ dargestellt werden, erstellen wir die Datei „/ect/openhab/configurations/transform/praesenz.map“ mit folgendem Inhalt:
Shell
1
2
3
4
ON=Anwesend
OFF=Abwesend
undefined=unbekannt
-=unbekannt
Script für manuelles Schalten
Falls ein Bewohner vergessen hat, sich beim Verlassen der Wohnung „auszustempeln“, habe ich in die Sitemap Schalter für das manuelle Übersteuern integriert. Da die Intelligenz jedoch diesmal nicht bei OpenHAB sondern bei der Himbeere liegt, an der das RFID-Lesegerät angeschlossen ist, müssen wir die Himbeere zum Schalten anweisen und dies nicht selbst durchführen. Dazu erstellen wir auf dem OpenHAB-Server ein neues Scripts „/scripts/rfid_manuell.sh“ mit folgendem Inhalt:
Hier können zudem benutzerdefinierte Aktionen hinzugefügt werden. Beispielsweise schalten meine Monitor ab, wenn ich gehe und wieder ein, wenn ich nach Hause komme. Ein elektrischer Duftspender ist nur aktiv, wenn irgendjemand zuhause ist. Diese Gruppenschaltungen habe ich in der gleichen Datei so realisiert:
Shell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
//#########################
//Gruppenschaltungen
rule"Niemand ist zuhause"
when
Item RFID_GRUPPE changed from ON toOFF
then
sendMail("alle@example.net","Wohnung ist verlassen","In der Wohnung konnte keine Praesenz festgestellt werden. Ueberwachung wird aktiviert.")
createTimer(now.plusSeconds(30))[|
for(Switch:grp_AUSBEIABWESEND.members){
sendCommand(Switch,OFF)
Thread::sleep(2000)
}
for(Switch:grp_ANBEIABWESEND.members){
sendCommand(Switch,ON)
Thread::sleep(2000)
}
]
end
rule"Irgendjemand ist zuhause"
when
Item RFID_GRUPPE changed from OFF toON
then
sendMail("alle@example.net","Präsenz erkannt","Eine Praesenz wurde erkannt. Ueberwachung wird deaktiviert.")
for(Switch:grp_AUSBEIANWESEND.members){
sendCommand(Switch,OFF)
Thread::sleep(2000)
}
for(Switch:grp_ANBEIANWESEND.members){
sendCommand(Switch,ON)
Thread::sleep(2000)
}
end
Wenn alle Bewohner das Haus verlassen, wird für Mitglied der Gruppe „grp_ANBEIABWESEND“ eingeschaltet. Zwischen den Schaltungen wird eine 2-sekündige Pause eingelegt. Für die Gruppen
grp_AUSBEIABWESEND
grp_ANBEIANWESEND
grp_AUSBEIANWESEND
verhält es sich natürlich entsprechend des Gruppennamens. Zudem wird jeweils eine Mail gesendet, wenn niemand mehr anwesend und wenn jemand aus der Gruppe anwesend ist.
Abschluss
Wenn wir alles richtig konfiguriert haben, zeigt die Sitemap nun wie folgt die Präsenzen an:
RFID-Lesegerät in OpenHAB einbinden
Verfügbare Artikel zu openHAB
Inhaltsverzeichnis
Items definieren
Wir beginnen direkt mit der Definition unserer neuen Items. Dazu nutze ich die bereits vorhandene Datei „/etc/openhab/configurations/praesenz.items“ und ergänze diese mit folgenden Zeilen:
Hier haben wir zunächst für jeden Benutzer ein Item, dass vom Script auf unserer Himbeere befüllt wird. Zudem habe ich einen weiteren Schalter definiert, um den Anwesenheitszustand manuell in der Sitemap zu übersteuern. Schlussendlich kommen noch Items dazu, die die Zeit der letzten Statusänderung speichern.
Einbindung in die Sitemap
Nun binden wir unsere neuen Items an gewünschter Stelle in die Sitemap ein. Ich habe dies so realisiert, dass für jeden Nutzer in Frame dargestellt wird. Zudem wird angezeigt, seit wann der jeweilige Nutzer an- bzw. abwesend ist. Das Icon „present“ ist bereits bei der Installation von OpenHAB dabei.
Übersetzungsdatei erstellen
Damit uns die Zustände der Präsenzen in der Sitemap nicht als „ON“ oder „OFF“ dargestellt werden, erstellen wir die Datei „/ect/openhab/configurations/transform/praesenz.map“ mit folgendem Inhalt:
Script für manuelles Schalten
Falls ein Bewohner vergessen hat, sich beim Verlassen der Wohnung „auszustempeln“, habe ich in die Sitemap Schalter für das manuelle Übersteuern integriert. Da die Intelligenz jedoch diesmal nicht bei OpenHAB sondern bei der Himbeere liegt, an der das RFID-Lesegerät angeschlossen ist, müssen wir die Himbeere zum Schalten anweisen und dies nicht selbst durchführen. Dazu erstellen wir auf dem OpenHAB-Server ein neues Scripts „/scripts/rfid_manuell.sh“ mit folgendem Inhalt:
Dem Script erlauben wir die Ausführung mit
und übertragen den Besitz an OpenHAB mit
Regeln erstellen
Nun erstellen wir die benötigten Regeln für die Präsenzerkennung.
Zudem erstellen wir Regeln, damit die Uhrzeit der Aktion festgehalten wird:
Hier können zudem benutzerdefinierte Aktionen hinzugefügt werden. Beispielsweise schalten meine Monitor ab, wenn ich gehe und wieder ein, wenn ich nach Hause komme. Ein elektrischer Duftspender ist nur aktiv, wenn irgendjemand zuhause ist. Diese Gruppenschaltungen habe ich in der gleichen Datei so realisiert:
Wenn alle Bewohner das Haus verlassen, wird für Mitglied der Gruppe „grp_ANBEIABWESEND“ eingeschaltet. Zwischen den Schaltungen wird eine 2-sekündige Pause eingelegt. Für die Gruppen
verhält es sich natürlich entsprechend des Gruppennamens. Zudem wird jeweils eine Mail gesendet, wenn niemand mehr anwesend und wenn jemand aus der Gruppe anwesend ist.
Abschluss
Wenn wir alles richtig konfiguriert haben, zeigt die Sitemap nun wie folgt die Präsenzen an:
Verwandte Beiträge
In diesem Beitrag wurde der 1wire-Sensor DS18B20 vorgestellt und erläutert, wie man diesen an einem…
Kürzlich stellte ich in einem Artikel die Möglichkeit vor, einen LG-Smart-TV mit einer Linux-Kommandozeile zu steuern. Zur…
In diesem Beitrag habe ich gezeigt, wie wir einen Bewegungssensor Typ PIR am Raspberry anschließen…
Alle Schalter, Kontakte oder Schwimmer aus diesem Artikel können in das Hausautomatisierungssystem openHAB eingebunden werden. Nachdem openHAB…
Wie wir aus diesem Artikel wissen, können wir die recht günstigen Funksteckdosensets der Firma Brennenstuhl mit einem…