Update: 11.02.2018 Bitte beachtet auch folgenden Blogbeitrag über die Sonoff 433 MHz Bridge
Heute beschreibe ich Euch, wie man preiswerte 433 MHz Funkbewegungsmelder, sogenannte PIRs an Eurem Hausausautomations-Server Fhem anschließt.
Diese Funkbewegungsmelder haben mehrere Vorteile, zu den Nachteilen komme ich weiter unten im Beitrag:
- Unglaublich preiswert
- im Haus einfach zu installieren, ggf. eingebaute Antenne rausfahren und gut is.
- Meine getesteten Bewegungsmelder haben einen guten Erkennungsradius
- Reichweite ungefähr 30m (durch 2 dicke Wände hindurch).
- gesendet wird auf der üblichen 433 MHz Frequenz, dadurch entsteht auf der Empfängerseite kein großer Aufwand. Ich habe zum besseren Empfang einen Arduino Nano benutzt und einen 433 MHz Superhet-Empfänger
- Batterie: 9V, sollte 6 bis 12 Monate je nach Anzahl der Alarme funktionieren
- Nachteil: Auch wenn von der Software aus der Alarm abgeschaltet ist, ist der Sensor aktiv. Das zieht natürlich an der Batterie. Bei mir hält die Batterie mittlerweile 3 Monate, täglich 30 bis 40 Auslösungen von „Alarm“
Die Zutaten:
- Sender: beliebig viele 433 MHz-Funkbewegungsmelder PIR, zum Beispiel diesen Multi Kon Trade: Funk Bewegungsmelder für unsere Alarmananlagensysteme * 433 MHZ *
- Empfänger: Diesen aus der Bucht (lange Lieferzeit aus China) 433Mhz Superheterodyne 3400RF Transmitter and Receiver
. Ich habe beide ausprobiert, funktionieren beide und sind PIN-identisch.
optional: LEDs zur lokalen Anzeige von Alarm 20 LEDs 5mm wasserklar weiß Typ „WTN-5-19000pw“
optional:- Breadboard (Steckbrett) – Unheimlich praktisch (Neuftech 400 Kontakte Breadboard Steckbrett Lochraste Laborsteckboard Experimentierboard für raspberry pi / Arduino – Steckboard Steckplatine
- passende Steck-Kabel:MB102 Steckbrett Breadboard 830 Kontakte Drahtbrücken Breadboard 65XJumper Kabel
Arduino, das kleine Modul reicht: Nano v3. 0 Bausteine ATMEGA328P elektronische interaktive Medien mit USB/Dupont-Kabel
- Breadboard (Steckbrett) – Unheimlich praktisch (Neuftech 400 Kontakte Breadboard Steckbrett Lochraste Laborsteckboard Experimentierboard für raspberry pi / Arduino – Steckboard Steckplatine
- zur Verbindung mit Fhem: Zum Beispiel den Raspberry-Pi, siehe meinen Erfahrungsbericht.
Empfangen von Daten vom PIR-Bewegungsmelder: Hier habe ich mit meinem Raspberry-Pi, welcher als Fhem-Server bei mir läuft einen Empfangstest mit den 433 MHz Empfängern gemacht. Dieser Empfangstest ist bei mir nicht so gut angekommen, es wurde nur vereinzelnd etwas empfangen.
Deshalb habe ich mir einen günstigen Arduino (Nano V 3.0) gekauft, welcher zusammen mit meinem 433 MHz – Superhet Modul als Empfänger arbeitet.
Falls jemand schnell einen 433 MHz-Empfänger benötigt, ich habe hier noch 3 zum Verkauf, 14,90 Euro inkl. Versand. Größere Reichweite, weil Superhet-Empfänger. Ich könnte Euch auch ein komplettes Modul zusammenlöten (Nano mit passenden Sketch und 433MHz Empfänger, Preis 31 Euro inkl. Versand). Einfach in den Kommentaren melden, siehe großes Foto oben.
Der PIR hat zwei LEDs (rot für Alarm und eine für Battery Low). Nicht für RFXtrx433-Sticks geeignet.
Diesen Aufbau hatte ich erst zum Testen auf meinem Steckbrett modelliert anschließend die Bauteile auf einer kleinen Platine verfrachtet. Den Arduino habe ich mit einem freien USB-Slot mit dem Fhem-Server verbunden. Testweise noch eine kleine LED angeschlossen, welche aufleuchtet, wenn der Digital-Pin 10 (frei wählbar) des Arduinos auf HIGH geht. d. h. der 433 MHz-Funkbewegungsmelder einen Bewegungsalarm empfängt.
[asa]B00CD2B1UG[/asa]
Schaltungsaufbau: Lötkolben anwerfen oder Schaltung auf dem Steckbrett (Steckbrett Breadboard Experimentierboard Steckplatine 830 Kontakte
) zusammenbauen. Der Schaltungsaufbau ist einfach: Man verbindet den RF-Link-Empfänger (5V, GND) mit den Pins des Arduinos, welche auch so gekennzeichnet sind. Die VData-Leitung des RF-Link-Empfängers verbindet man mit Pin 2 des Arduinos, zumindest, wenn man Sketch unten verwendet. Als Antenne verwendet man 17 cm langen Kupferdraht, siehe Foto.
Software:
Zunächst mit der Arduino mit einem Sketch (Software) betankt werden. Ich habe das in zwei Schritten gemacht. Man muß zunächst herausbekommen, welche ID der 433 MHz-Funkbewegungsmelder sendet, wenn ein Alarm ausgelöst wird. Da diese Bewegungsmelder keine DIP-Schalter haben (siehe Foto), muss man auf der Empfängerseite diese ID erst mal herausbekommen. Das hat für mich die Beispiel Datei example aus der RC_Switch Library erledigt. Diese Datei auf dem Arduino beamen, mit Umschalt-STRG-M den seriellen Monitor öffnen und kurz den Alarm des PIRs auslösen. Den Code seht ihr dann im Fenster des seriellen Monitors. Diesen aufschreiben und den Code mit diesem Sketch anpassen. Wichtig: Bei der Arduino-Software Duomilanove/AT386 zum Flashen einstellen. Wenn ihr mehrere Bewegungsmelder gekauft habt, dann den nächsten Code ermitteln. Anschließend den Sketch auf dem Arduino beamen. Fertig.
Alternativ! Update der Software 25.01.2015: Ein Blog-Leser (Julian) hat mir einen einfacheren Sketch geschickt. Der sieht so aus:
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
void setup() {
Serial.begin(57600);
mySwitch.enableReceive(0); // Receiver on interrupt 0 => that is pin #2
}
void loop() {
if (mySwitch.available()) {
unsigned long value = mySwitch.getReceivedValue();
if (value == 0) {
Serial.print("Unknown encoding");
} else {
Serial.println("OK 5 " + String(value) + " 1");
}
}
mySwitch.resetAvailable();
}
Bei diesem Sketch werden alle ankommenden 433 MHz – Signale durch den Arduino getunnelt. Hier sollte bei neuen 433 MHz Sensoren (PIRs oder TFKs) der Autocreate-Modus bei Fhem eingeschaltet werden. Damit sollten diese Geräte dann automatisch angelernt werden. Nach dem Anlernvorgang aber wieder diesen Modus abschalten, damit nicht der sonstige Sendemüll als neue Geräte bei Fhem erkannt werden.
Testen: Jetzt könnt ihr mal einen Alarm eines Bewegungssensors auslösen und es müsste in dem seriellen Monitor so etwas wie OK 5 123453 1 erscheinen, wobei 123453 die ID des PIR Sensors ist.
Jetzt verbindet ihr den Arduino via USB mit dem Raspberry Pi, auf dem der Fhem-Server läuft. Dort in die Konsole gehen und den Port des Arduinos ermitteln.
[sourcecode language=“text“ gutter=“false“]dmesg[/sourcecode]
eingeben und die Zeilen finden, welche den Port zeigen.
ftdi_sio 1-1.2:1.0: FTDI USB Serial Device converter detected
usb 1-1.2: Detected FT232RL
usb 1-1.2: Number of endpoints 2
usb 1-1.2: Endpoint 1 MaxPacketSize 64
usb 1-1.2: Endpoint 2 MaxPacketSize 64
usb 1-1.2: Setting MaxPacketSize 64
usb 1-1.2: FTDI USB Serial Device converter now attached to ttyUSB2
In dieser Konfiguration ttyUSB2
Wichtig: Erst Fhem auf dem neuesten Stand bringen, also ein Update machen!
Jetzt in Fhem in der Fhem-config gehen und diese Zeile dort eintragen
define arduino JeeLink /dev/ttyUSB2
Jetzt habt ihr den Arduino via USB mit dem Fhem Server verbunden.
Damit die Funkbewegungsmelder noch von Fhem erkannt werden, müssen noch eine Datei in das /opt/fhem/FHEM – Verzeichnis kopiert werden. Die Datei 36_AliRF.pm ist noch nicht eingecheckt, deshalb zum Download hier.
Shutdown restart nicht vergessen.
Hex-Zahl für Fhem ermitteln: Nachdem der PIR erfolgreich im Arduino Nano Alarm geschlagen hat, müssen ihn noch für Fhem bekannt machen. Dazu wird zur Erkennung an Fhem noch eine Hex-Zahl benötigt, die ihr wie folgt herausbekommt.
- In der Konfig: attr autocreate disable 0 stellen
- Im PIR einen Alarm ausführen
- Konfig abspeichern.
- ggf. autocreate mit disable 1 wieder abschalten.
Der oder die erkannten PIRs werden dann in der Menüleiste angezeigt.
Anwendungsgebiete: Die Bewegungssensoren haben eine Reichweite von ungefähr 8m. Der Winkel zur Seite ist ungefähr 45 Grad und liegt bei 2m, siehe Grafik auf dem Karton. Die drahtlose Verbindung zum Arduino funktioniert mit meinem Empfänger tadellos. Die Alarmerkennung reagiert bei meinem Fhem und Raspberry Pi innerhalb 1s. Ich nutze den Bewegungsmelder für mein Nachtlicht. Vorteil von Fhem: Alle an Fhem angeschlossenen Lampen und auch andere Geräte (z.b. Garagentoröffner) können durch das Fhem-Scripting geschaltet werden.
Nachteile und Fazit: Obwohl die PIRs unschlagbar preiswert sind (ein Fs-20 kostet ungefähr 40 Euro, siehe hier: FS20 PIRI-2 Zweikanal-Funk-Bewegungsmelder ohne Unterkriechschutz
Wenn die Batterie leer ist, wird das nicht in der Zentrale (Fhem) angezeigt.
Die Reichweite ist im 868 MHz-Bereich besser, bei diesem Bewegungsmelder wird die 433 MHz Frequenz benutzt.
Es erfolgt kein Handshaking, ob das Signal wirklich beim Empfänger angekommen ist.
Wer damit leben kann und die PIRs nicht (nur) für Alarmzwecke verwendet, der ist bei diesen Geräten wunderbar aufgehoben. Ich verwende die Bewegungsmelder beispielsweise als Nachtlicht. Ihr werdet sicherlich noch andere Ideen haben.
Abhilfe:
In der config.txt auf der SD-Karte folgenden Eintrag machen:
arm_freq=1000
core_freq=500
sdram_freq=500
over_voltage=6
Danach sind die Fehlermeldungen im Log verschwunden, ohne Auswechseln der SD-Karte. Die SD-Karte ist also nicht defekt. Wichtig: Hier sollte man passende Kühlkörper für den Raspberry Pi kaufen, zum Beispiel diese hier: Kühlkörper für Raspberry Pi (3er Set passive Kühler)