- FHEM: Günstiger Bewegungsmelder integriert
- Bewegungsmelder in FHEM: So registriert man eine Bewegung! (nr)
- FHEM + AMAD2: Android Handy und Tablet fernsteuern
- Raspberry Pi: Root Passwort / als Superuser anmelden!
- Philips hue tap in FHEM: Erkennen, wenn ein Button gedrückt wird!
- Linux: Cronjob einrichten und Aufgaben automatisch ausführen
- Philips hue tap in FHEM: Erkennen, wenn ein Button gedrückt wird!
Raspberry Bewegungsmelder: HC-SR501 an die Raspberry Pi GPIO Ports anschließen
Bewegung erkennen für die Selbstbau-Alarmanlage oder das kostenlose FHEM Smart-Home: Der günstige Bewegungsmelder “HC-SR501” (fünf Stück kosten ca. 11 EUR bei Amazon) lässt sich problemlos an die GPIO Ports des Raspberry Pi anschließen: Auf der Unterseite hat er dazu zwei Pins für die Stromversorgung und Masse (GND) sowie einen Daten-Pin in der Mitte. Mit einem kleinen Programm kann man dann die Ports dann auslesen und eine Bewegung feststellen. Wer statt dem Raspberry lieber einen Arduino nutzen möchte, findet unseren Artikel dazu hier!
Wir zeigen hier zwei mögliche Programme, um eine Bewegung zu registrieren und ein drittes Skript, dass als Reaktion eine an den Raspberry angeschlossene LED zum Blinken bringt.
Raspberry Bewegungsmelder: HC-SR501 PIR-Sensor anschließen
Um den PIR Sensor (Passive Infra-Red sensor) anzuschließen, verbinden wir das erste Kabel mit PIN 02 (5V) des Raspberry Pi und dem VCC-Anschluss des Bewegungsmelders. Der äußere Anschluss (GND) wird mit dem GND-Anschluss des Raspberry Pi verbunden (Pin 6). Der Bewegungsmelder würde so schon funktionieren – kann aber noch keine Daten an den Raspberry senden – zum Schluss muss daher der mittlere Pin des HC-SR501 PIR-Sensors mit Pin 8 auf dem Raspberry verbunden werden (“>mehr zu den Anschlüssen auf dem Raspberry):
Sensor VCC » Raspberry Pin 2 (5V Anschluss)
Sensor Data » Raspberry Pin 8 (GPIO Pin)
Sensor GND » Raspberry Pin 6 (GND)
Bewegungsmelder mit Python auslesen: Bewegung erkannt!
Um die Daten des Bewegungsmelders auszulesen, verwenden wir zunächst die Programmiersprache Python – hiermit kann man direkt auf die GPIO Pins des Raspberry zugreifen. Dazu kann man immer wieder den Zustand des Pin 8, an dem die Datenleitung des Bewegungssensors angeschlossen ist, abfragen – ein gutes Beispiel hierfür zeigen die beiden Skripte auf der Seite einplatinencomputer.com: Beide fragen den GPIO Port des Raspberry Pi ab und melden sich mit einer Textmeldung und der Uhrzeit, wann die Bewegung erkannt wurde.
Währen das erste Skript mit einer Schleife in einem bestimmten Intervall den GPIO Port, an dem der Sensor angeschlossen ist, abfragt, nutzt das zweite Skript die “Motion”-Funktion des Raspberry Pi: Hier ist nicht nur der Programm-Code deutlich kürzer, im Vergleich verbraucht diese Abfrage auch deutlich weniger Leistung (zweites Bild):
Pin-Abfrage des GPIO Ports mit “time.sleep(0.05)”
Pin-Abfrage mit “motion”
Alarmanlage: PIR Sensor auslesen und LED blinken lassen
Für eine simple Alarm-Anzeige schließen wir zusätzlich zu dem PIR-Sensor noch eine LED (mit vorgeschaltetem Widerstand!) an: Mit einer leichten Änderung des Python-Skripts kann der Raspberry dann auch auf die Daten des Bewegungsmelders reagieren und eine LED blinken lassen.
Die LED wird dazu mit dem negativen Port an Pin 9 (GND) und dem positiven Port (das längere, meist abgeknickte Beinchen) an Pin 11 (GPIO17) angeschlossen – zwischen den negativen Pin der LED und Pin 9 auf dem Raspberry haben wir einen Widerstand von 1kOhm gesteckt (300 Ohm sollten aber auch reichen).
Jetzt muss das Skript zur Abfrage des GPIO-Pins noch um Teile unseres LED-Skriptes ergänzt werden, damit der Raspberry die LED bei einer erkannten Bewegung auch leuchten lassen kann:
import RPi.GPIO as GPIO import time import datetime import os GPIO.setmode(GPIO.BOARD) GPIO.setup(8, GPIO.IN) GPIO.setup(11,GPIO.OUT) SENSOR = 8 def MOTION(SENSOR): os.system("echo \"Alarm: %s\"" % datetime.datetime.now()) for x in range(0, 5): GPIO.output(11,GPIO.HIGH) time.sleep(0.1) GPIO.output(11,GPIO.LOW) time.sleep(0.1) try: GPIO.add_event_detect(8, GPIO.RISING, callback=MOTION) while 1: time.sleep(60) except KeyboardInterrupt: GPIO.cleanup()
Möchte man die LED oder den Bewegungsmelder an andere GPIO Ports anschließen, müssen die Pin-Adressen dafür noch abgeändert werden.
Bewegungs-Sensor mit FHEM auslesen
Eine einfache Alternative ist der kostenlose Smart-Home Server FHEM: Dieser kann ebenfalls die GPIO Pins ablesen und vielfältig darauf reagieren. Um die Werte von dem GPIO Port auszulesen, braucht man das RPi GPIO Modul (51_RPI_GPIO.pm) für FHEM, das mittlerweile aber spätestens nach einem FHEM-Update vorliegen sollte.
Außerdem muss der User “fhem” zu der Gruppe “gpio” gehören, damit er auf die GPIO Ports zugreifen kann. Dazu verbindet man sich mit dem Raspberry (z.B. per SSH) und meldet sich als Root-User an. Anschließend kann man mit diesem Befehl den User der Gruppe hinzufügen:
addgroup fhem gpio
Anschließend muss noch das “WiringPi” Paket installiert werden: Damit kann man leicht auf die GPIO Ports des Raspberry zugreifen und zum Beispiel die Daten des Bewegungsmelders auslesen. Zum Installieren von WiringPi gibt man die folgenden Befehele ein:
sudo apt-get install git-core git clone git://git.drogon.net/wiringPi cd wiringPi git pull origin
Nach dem Download muss wiringPi noch installiert werden: Dafür startet man in dem Ordner “wiringPi” das build-Skript:
sudo ./build
Anschließend muss der Rasperry mit dem folgenden Befehl neugestartet werden, damit die Änderungen wirksam werden:
reboot
Bewegungsmelder in FHEM definieren
Für die Einrichtung des Bewegungsmelders in FHEM definiert man dann zunächst den Eingang, auf den man reagieren möchte: In unserem Beispiel wie oben beschrieben ist das Pin 8 (GPIO 14). Wie man Daten (z.B. ein neuer Define, Attribute oder Änderungen) in FHEM eingibt und was man beachten muss, zeigen wir in diesem Artikel!
# Pin8 als Eingang definieren define RPIPin8 RPI_GPIO 14 attr RPIPin8 direction input attr RPIPin8 interrupt both # Auf Bewegung reagieren define act_on_BewegungGPIO notify RPIPin8 {\ if ("$EVENT" ne "off") { fhem("set ALARM on-for-timer 5;;");;}}
Der “notify” Befehl sorgt dafür, dass der angegebene Pin überwacht wird – daher wird er als Input gesetzt, “interrupt both” sorgt dafür, dass bei jeder Änderung des Zustandes ein Signal erkannt wird. Wird jetzt eine Bewegung ausgelöst, wird “RPIPin8” auf “on” gesetzt – der notify reagiert dann darauf und setzt wiederum “ALARM” für fünf Sekunden auf “on”. Das kann jetzt zum Beispiel eine Lampe sein oder eine angeschlossene Sirene: Hier sind mit FHEM kaum Grenzen gesetzt.
Wer den Bewegungsmelder aber nicht selber mit dem Raspberry verdrahten möchte, kann auch einen Funk-Bewegungsmelder mit FHEM nutzen – einen einfachen Melder für FHEM haben wir hier vorgestellt.
- datenschutz (4x gelesen)
- pc-einsteigerkurs (3x gelesen)
- windows-beschleunigen (2x gelesen)
- windows-schneller-starten-autostart-aufraeumen (2x gelesen)
- windows-defragmentieren-und-aufraeumen (1x gelesen)
Mehr Tipps zu Raspberry Bewegungsmelder: HC-SR501 ...
-
USB Soundkarte am Raspberry Pi – Anleitung und Kauf-Tipps
Mit dem Onboard-Chip des Raspberry Pi lässt sich schon eine passable Audio-Ausgabe erreichen. Besser wird es allerdings mit speziellen Soundkarten wie dem HifiBerry Aufsatz. Deutlich...
-
Boot: Raspberry Pi SD-Karte unter Windows und macOS löschen und weiternutzen
Wer eine für Linux formatierte SD-Karte wieder unter Windows und macOS nutzen oder in anderen Geräten verwenden möchte, muss sie neu formatieren: Gerade bei den...
-
GD Bild-Bibliothek für PHP installieren (z.B. auf einem Raspberry Pi)
Mit der Bild-Bibliothek "GD" kann man mit PHP zahlreiche Bildbearbeitungsfunktionen nutzen: So lassen sich Bilder erstellen, zuschneiden, umwandeln oder auch darin/darauf zeichnen. Die GD Bibliothek...
-
Raspberry Pi: GPIO Pins mit Python steuern
Mit der Programmiersprache lassen sich die GPIO Pins des Raspberry Pi ganz einfach steuern und damit zum Beispiel eine LED ein oder ausschalten oder blinken...
-
Raspberry Pi: Python-Fehler “ImportError: No module named ‘RPi.GPIO'”
Um mit dem Raspberry Pi und der Programmiersprache Python auf die GPIO-Ports zugreifen zu können, muss man vorher sicherstellen, dass alle nötigen Bibliotheken geladen und...
-
FHEM: JeeLink / LaCrosse Sensor: Batterie wechseln
Wer bei einem LaCrosse Temperatursensor die Batterien tauscht, muss eine Sache beachten - andernfalls wird die Hardware-ID zurückgesetzt und der Sensor wird unter einem neuen...
- Tipp: Raspberry GPIO mit Python nutzen
- Bewegungsmelder PIR-1000 433 - MHz CUL mit Fhem
[???]Leider wird der PIR mit autocreate autosave nicht erkannt.IT Funkdosen werden aber erkann...
- Bewegungsmelder in FHEM: So registriert man eine Bewegung!
- Videoüberwachung mit dem Raspberry Pi 3
- Raspberry Pi & Notify my Android
Raspberry Bewegungsmelder: HC-SR501 an die Raspberry Pi GPIO Ports anschließen