Bei einer Hausautomatisierung kann es durchaus von Vorteil sein, wenn das „Haus“ weiß, ob man zuhause ist oder nicht. Beispielsweise können nicht genutzte Geräte automatisch ausgeschaltet werden oder eine Überwachung aktiviert werden. Bisher habe ich die Präsenz der Bewohner durch durch die Prüfung mittels WLAN und Bluetooth erkennen lassen, wie in diesem Artikel beschrieben wurde. Heute möchte ich eine Lösung zeigen, bei der sich die Bewohner mittels RFID an- und abmelden können.
Die bisherige Lösung, die die Bewohner via WLAN und Bluetooth „suchte“, war ein wenig unzuverlässig. War ein Akku eines Handys leer, saß man bereits im Dunkeln. Zudem musste immer WLAN oder Bluetooth aktiviert sein, weil sonst eine Präsenzerkennung nicht funktionierte. Auch wurde die Präsenz nur alle 5 Minuten geprüft, so dass es eine Weile dauern konnte, bis die entsprechenden Geräte eingeschaltet wurden. Also musste eine bessere Lösung her. Beim stöbern in den Weiten des Internets stieß ich auf dieses RFID-Set:
Ich habe mich dazu entschieden, die Platine nebst ein paar LEDs in ein Kunststoffgehäuse zu setzen, welches wiederum nahe der Eingangstür an die Wand montiert wird. Die Verbindung der Platine gestaltet sich nach dem Anlöten der entsprechenden Pinleiste recht einfach. Bei der Pinleiste sollte man jedoch sorgfältig löten, da in meinem Fall der erste Versuch an einer kalten Lötstelle scheiterte. Wir verbinden die einzelnen Kontakte wie folgt mit der Himbeere:
Damit die entsprechenden und benötigten Module geladen werden können, deaktivieren wir zunächst den sog. „device-tree„. Dazu öffnen wir das Tool
Shell
1
raspi-config
und wählen unter „Advanced Options“ den entsprechenden Menüpunkt. Nach einem Neustart der Himbeere ist der „device-tree“ nun deaktiviert.
SPI einschalten
Zum aktivieren von SPI-Geräten, wie unser Lesegerät eines ist, editieren wir die Datei „/etc/modprobe.d/raspi-blacklist.conf“ und kommentieren die Zeile mit „SPI“ aus, so dass dieses Modul beim Systemstart aktiviert wird. Die Datei sollte nun in etwa so aussehen:
Shell
1
2
3
# blacklist spi and i2c by default (many users don’t need them)
# blacklist spi-bcm2708
blacklist i2c-bcm2708
BCM-Treiber installieren
Für den Betrieb des Lesegerätes benötigen wir zudem noch weitere Treiber. Diese installieren wir wie folgt:
Nun ist es an der Zeit, die Seriennummer des ersten Tags in Erfahrung zu bringen. Dazu habe ich den im Lieferumfang enthaltenen Schlüsselanhänger genutzt. Wir starten die soeben installierte Software zunächst händisch im sogenannten „Debug-Modus„. So wird beim Erkennen eines RFID-Tags eine Meldung in der Konsole ausgegeben und die erkannte Seriennummer mitgeteilt. Diese brauchen wir für den weiteren Verlauf der Anleitung.
Shell
1
/opt/rpi-rc522-read-only/rc522/rc522_reader-d
Das Programm beenden wir mit der Tastenkombination „STRG+C“
Konfiguration
Ich lasse den RC522-Daemon unter den Rechten des Nutzers „nobody“ auf meinem System laufen. Daher ermitteln wir zunächst die User-ID dieses Nutzers mit:
Shell
1
id-unobody
Die ID der Gruppe „nobody“ ermitteln wir wie folgt:
Shell
1
cat/etc/shadow|grepnobody|cut-d":"-f3
Nun editieren wir die Datei „/etc/RC522.conf“ mit
Shell
1
nano/etc/RC522.conf
Dort ändern wir die Zeilen „UID“ und „GID“ und tragen dort die soeben ermittelten IDs des Nutzers und der Gruppe ein. Den GPIO-Port ändern wir nicht, dafür tragen wir nun am Ende der Datei für jede RFID-Tag-Seriennummer eine Zeile ein, die ein entsprechendes Script ausführt. Bei mir sehen die Zeilen beispielsweise wie folgt aus:
Shell
1
[3af8cz30]/scripts/rfid/rfid.shDANIEL
Die Seriennummer haben wir weiter oben in dieser Anleitung in Erfahrung gebracht.
Das Script
In diesem Fall belassen wir die Intelligenz bei der Himbeere, an dem das Lesegerät angeschlossen ist. OpenHAB fragt hier nicht aktiv nach dem Zustand sondern das folgende Script teilt diesen automatisch bei einer Zustandsänderung mit. Wir erstellen zunächst ein „Arbeitsverzeichnis“ mit
Shell
1
2
mkdir-p/scripts/rfid/stati
chmod777/scripts/rfid/stati/
und erstellen nun das Script „/scripts/rfid/rfid.sh“ mit folgendem Inhalt:
In diesem Script werden gleich mehrere Dinge umgesetzt. Zunächst die Mitteilung der Stati an OpenHAB, dann werden in meinem Fall ebenfalls in das Kunststoffgehäuse untergebrachte LEDs geschaltet. Zu guter Letzt nutze ich als Rückmeldung, dass mein Tag gelesen wurde, einen Buzzer, den ich in diesem Beitrag vorgestellt habe. Wer diese Funktionen nicht benötigt, kommt auch mit dieser verkürzten Version des Scripts aus:
Das Script wird künftig im Kontext des Nutzers „nobody“ ausgeführt. Daher müssen wir die Status-Dateien für jeden Nutzer zunächst per Hand erstellen:
Shell
1
2
3
4
5
touch/scripts/rfid/stati/rfid_DANIEL.status
chmod666/scripts/rfid/stati/rfid_DANIEL.status
touch/scripts/rfid/stati/rfid_TINA.status
chmod666/scripts/rfid/stati/rfid_TINA.status
Das Script selbst können wir testen, indem wir es wie folgt aufrufen:
Shell
1
/scripts/rfid/rfid.shNUTZER
Automatischer Start
Damit der RC522-Daemon beim Systemstart ebenfalls aktiviert wird, tragen wir folgende Zeile in die Datei „/etc/rc.local“ ein, und zwar VOR der Zeile „exit 0„:
Shell
1
/opt/rpi-rc522-read-only/rc522/rc522_reader&
Weitere RFID-Tags
Es gibt auf dem Markt eine große Anzahl an verschiedenen Tags. Hier nur eine kleine Auswahl, welche ich persönlich testen konnte:
Integration in OpenHAB
Die Integration in OpenHAB wird in diesem Artikel ausführlich beschrieben.
NFC/RFID mit dem Raspberry Pi
Inhaltsverzeichnis
Einleitung
Die bisherige Lösung, die die Bewohner via WLAN und Bluetooth „suchte“, war ein wenig unzuverlässig. War ein Akku eines Handys leer, saß man bereits im Dunkeln. Zudem musste immer WLAN oder Bluetooth aktiviert sein, weil sonst eine Präsenzerkennung nicht funktionierte. Auch wurde die Präsenz nur alle 5 Minuten geprüft, so dass es eine Weile dauern konnte, bis die entsprechenden Geräte eingeschaltet wurden. Also musste eine bessere Lösung her. Beim stöbern in den Weiten des Internets stieß ich auf dieses RFID-Set:
In diesem Set, welches hier günstig erhältlich ist, befindet sich:
Verbindung mit dem Raspberry
Ich habe mich dazu entschieden, die Platine nebst ein paar LEDs in ein Kunststoffgehäuse zu setzen, welches wiederum nahe der Eingangstür an die Wand montiert wird. Die Verbindung der Platine gestaltet sich nach dem Anlöten der entsprechenden Pinleiste recht einfach. Bei der Pinleiste sollte man jedoch sorgfältig löten, da in meinem Fall der erste Versuch an einer kalten Lötstelle scheiterte. Wir verbinden die einzelnen Kontakte wie folgt mit der Himbeere:
Fertig verpackt sieht meine Kunststoffbox recht ansehnlich aus:
Installation
device-tree deaktivieren
Damit die entsprechenden und benötigten Module geladen werden können, deaktivieren wir zunächst den sog. „device-tree„. Dazu öffnen wir das Tool
und wählen unter „Advanced Options“ den entsprechenden Menüpunkt. Nach einem Neustart der Himbeere ist der „device-tree“ nun deaktiviert.
SPI einschalten
Zum aktivieren von SPI-Geräten, wie unser Lesegerät eines ist, editieren wir die Datei „/etc/modprobe.d/raspi-blacklist.conf“ und kommentieren die Zeile mit „SPI“ aus, so dass dieses Modul beim Systemstart aktiviert wird. Die Datei sollte nun in etwa so aussehen:
BCM-Treiber installieren
Für den Betrieb des Lesegerätes benötigen wir zudem noch weitere Treiber. Diese installieren wir wie folgt:
Steuerungssoftware installieren
Für den Betrieb unseres RFID-Lesers wurde bereits die passende Software für den Raspberry entwickelt, so dass wir diese nun wie folgt installieren:
Seriennummern der Tags auslesen
Nun ist es an der Zeit, die Seriennummer des ersten Tags in Erfahrung zu bringen. Dazu habe ich den im Lieferumfang enthaltenen Schlüsselanhänger genutzt. Wir starten die soeben installierte Software zunächst händisch im sogenannten „Debug-Modus„. So wird beim Erkennen eines RFID-Tags eine Meldung in der Konsole ausgegeben und die erkannte Seriennummer mitgeteilt. Diese brauchen wir für den weiteren Verlauf der Anleitung.
Das Programm beenden wir mit der Tastenkombination „STRG+C“
Konfiguration
Ich lasse den RC522-Daemon unter den Rechten des Nutzers „nobody“ auf meinem System laufen. Daher ermitteln wir zunächst die User-ID dieses Nutzers mit:
Die ID der Gruppe „nobody“ ermitteln wir wie folgt:
Nun editieren wir die Datei „/etc/RC522.conf“ mit
Dort ändern wir die Zeilen „UID“ und „GID“ und tragen dort die soeben ermittelten IDs des Nutzers und der Gruppe ein. Den GPIO-Port ändern wir nicht, dafür tragen wir nun am Ende der Datei für jede RFID-Tag-Seriennummer eine Zeile ein, die ein entsprechendes Script ausführt. Bei mir sehen die Zeilen beispielsweise wie folgt aus:
Die Seriennummer haben wir weiter oben in dieser Anleitung in Erfahrung gebracht.
Das Script
In diesem Fall belassen wir die Intelligenz bei der Himbeere, an dem das Lesegerät angeschlossen ist. OpenHAB fragt hier nicht aktiv nach dem Zustand sondern das folgende Script teilt diesen automatisch bei einer Zustandsänderung mit. Wir erstellen zunächst ein „Arbeitsverzeichnis“ mit
und erstellen nun das Script „/scripts/rfid/rfid.sh“ mit folgendem Inhalt:
In diesem Script werden gleich mehrere Dinge umgesetzt. Zunächst die Mitteilung der Stati an OpenHAB, dann werden in meinem Fall ebenfalls in das Kunststoffgehäuse untergebrachte LEDs geschaltet. Zu guter Letzt nutze ich als Rückmeldung, dass mein Tag gelesen wurde, einen Buzzer, den ich in diesem Beitrag vorgestellt habe. Wer diese Funktionen nicht benötigt, kommt auch mit dieser verkürzten Version des Scripts aus:
Dem Script erlauben wir die Ausführung mit
Das Script wird künftig im Kontext des Nutzers „nobody“ ausgeführt. Daher müssen wir die Status-Dateien für jeden Nutzer zunächst per Hand erstellen:
Das Script selbst können wir testen, indem wir es wie folgt aufrufen:
Automatischer Start
Damit der RC522-Daemon beim Systemstart ebenfalls aktiviert wird, tragen wir folgende Zeile in die Datei „/etc/rc.local“ ein, und zwar VOR der Zeile „exit 0„:
Weitere RFID-Tags
Es gibt auf dem Markt eine große Anzahl an verschiedenen Tags. Hier nur eine kleine Auswahl, welche ich persönlich testen konnte:
Integration in OpenHAB
Die Integration in OpenHAB wird in diesem Artikel ausführlich beschrieben.
Verwandte Beiträge
Als ich mich für ein neues Projekt auf die Suche nach der Pin-Belegung der einzelnen…
In einem früheren Beitrag habe ich darüber berichtet, wie man den Temperatur- und Luftfeuchtigkeitssensor DHT22…
In einem Kommentar zum Artikel "Funksteckdosen mit dem Raspberry Pi steuern" wurde ich gefragt, ob…
Für ein neues Projekt wollte ich bei bestimmten Interaktionen mit dem Raspberry eine akustische Rückmeldung…
Kürzlich habe ich einen sehr günstigen Sensor in den weiten des Internets entdeckt, mit dem…