Gerade wenn man dringend Post erwartet, ist es üblich häufiger in den Briefkasten zu schauen. Im Urlaub hingegen kann es sinnvoll sein, Bescheid zu wissen, ob und wie viel Post ankam – um ggf. Freunde oder Nachbarn mit der Leerung zu beauftragen. Um diesen Vorgang zu digitalisieren, geht es in diesem Tutorial darum, wie man mit einen Raspberry Pi Briefkästen in Email-Versender verwandelt.
Beim einwerfen neuer Briefe wird automatisch eine Mail an eine definierte Adresse versendet, sodass sich der Gang zur Postbox (hoffentlich) lohnt.
Grundsätzlich werden beim Öffnen der Briefkastenklappe eine Nachricht über Funk an unseren Raspberry Pi senden, woraufhin dieser eine Mail versendet.
Zubehör & Hardware
Damit wir eine möglichst lange Laufzeit im Briefkasten ermöglichen, verwenden wir keinen Raspberry Pi, Arduino oder ESP8266 im Briefkasten, da diese zum einen mehr Platz benötigen und vor allem mehr Strom! Daher bauen wir aus vorhanden Lösungen (Funk Türklingel) stromsparende Teile aus und nutzen diese weiter.
Insgesamt wirst du folgendes brauchen:
- Raspberry Pi
- Funk Türklingel (433 MHz)
- 433 MHz Empfänger
- Schnappschalter
- Draht und Lötutensilien
Bei den Funkklingel Sendern hatte ich mehrere Modelle ausprobiert, wobei nicht alle ausgelesen werden konnten. Dies solltest du vor dem Kauf beachten. Ggf. musst du die Pulslänge anpassen und etwas probieren, sollte der fixe Funkcode nicht direkt ausgelesen werden können.
Aufbau: Raspberry Pi Briefkasten Sensor
Beginnen wir nun mit dem Aufbau des 433 MHz Empfängers. Oft kommen Sender und Empfänger im Set und können auch beide mit dem Raspberry Pi genutzt werden (z.B. falls du zusätzlich auch noch die Funkklingel per Pi zum ertönen bringen willst). De facto reicht der Empfänger (das breitere Modul, rechts im schematischen Aufbau) für unser Vorhaben aus.
Nachdem der Raspberry Pi präpariert ist, geht es weiter zum Vorbereiten des Briefkastens und anbringen des Sensors in diesem.
Nun gibt es zwei verschiedene Arten von Briefkästen: Jene, deren Klappe sich nach innen öffnet und jene, deren Klappe sich nach außen hin öffnet. Der Schnappschalter (auch genannt: Sprungschalter) hat insgesamt drei Kontakte: Einen an der Seite, der mit einem der beiden unteren verbunden wird – jenachdem ob der Schalter gedrückt wurde oder nicht.
Falls sich die Klappe deines Briefkastens nach außen öffnet, so solltest du den Schnappschalter so anbringen, dass er dauerhaft gedrückt ist. Sobald die Klappe geöffnet wird, geht der Schalter in seinen normalen Zustand zurück und der andere Kanal wird verbunden.
Falls sich die Klappe deines Briefkastens nach innen öffnet, so bringst du den Schnappschalter ebenfalls innen an, jedoch wird er so platziert, dass beim Öffnen der Schalter erst gedrückt wird.
Der alleinstehende (seitliche) Kontakt wird, wie im Bild zu sehen ist, mit Draht an den Schalter verbunden und verlötet. Welchen der beiden anderen unteren Kontakte mit dem Funk-Türklingel-Sender verbunden werden muss, musst du ausprobieren. Im „Ruhezustand“ soll kein Signal gesendet werden.
Raspberry Pi Briefkasten – Vorbereitung & Software
Zwei Softwarekomponenten sind für dieses Tutorial sehr wichtig: Zum einen, dass wir einen Anbieter haben, von dem wir Mails versenden können. Des weiteren ist der Empfang der 433 MHz Signale entscheidend. Letzteres erreichen wir, indem wir wiringPi und die 433Utils von ninjablocks installieren. Wiring Pi ist auf allen neueren Raspbian Versionen (nicht Lite) bereits vorinstalliert. Wir widmen uns daher zunächst der Installation der 433 MHz Bibliothek.
Öffne dazu die Shell (z.B. über SSH) und gib folgendes ein:
mkdir postbox && cd postbox git clone https://github.com/ninjablocks/433Utils.git --recursive
Da wir den Code, der von der Funk Türklingel gesendet wird, noch nicht kennen, lesen wir diesen zunächst aus. Dazu nutzen wir vorhandenen Beispiel Dateien in dem Verzeichnis. Diese werden wie folgt kompiliert (gcc sollte bereits installiert sein):
cd 433Utils/RPi_utils make all
Jetzt starten wir ein Skript zum Auslesen des Codes:
./RFSniffer
Drücke den Sender ggf. mehrfach und schaue, welcher Code erscheint. Wir benötigen diesen im nächsten Schritt. Dies ist in meinem Fall folgender:
Received 5209360 Received 5209360 Received 5209360
Anschließend erstellen wir ein Skript, welches auf den Empfang unseres 433 MHz Codes wartet, um anschließend Mails zu versenden. Erstelle dazu eine neue Datei:
sudo nano post-box-email.cpp
Diese Datei bekommt folgenden Inhalt (passe dabei deinen Code entsprechend an):
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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
/* RF_Sniffer Hacked from http://code.google.com/p/rc-switch/ by @justy to provide a handy RF code sniffer */ #include "../rc-switch/RCSwitch.h" #include <stdlib.h> #include <stdio.h> RCSwitch mySwitch; int main(int argc, char *argv[]) { // This pin is not the first pin on the RPi GPIO header! // Consult https://projects.drogon.net/raspberry-pi/wiringpi/pins/ // for more information. int receiverPIN = 2; int code = 5506385; if(wiringPiSetup() == -1) return 0; mySwitch = RCSwitch(); mySwitch.enableReceive(receiverPIN); while(1) { if (mySwitch.available()) { int value = mySwitch.getReceivedValue(); if (value == code) { int i = system ("echo \"Test Inhalt text\" | mail -s \"Test Betreff Mail\" empfaenger-mail@example.com"); printf ("The value returned was: %d.\n",i); } mySwitch.resetAvailable(); } } exit(0); } |
In Zeile 39 machen wir einen System Aufruf, der eine Mail versendet. Diese Zeile kann natürlich angepasst werden, z.B. wenn du ein (PHP) Skript starten möchtest. In diesem Tutorial findest du eine Übersicht an Möglichkeiten, um Emails vom Raspberry Pi zu versenden.
Auch dieses Skript wird nun kompiliert:
g++ -DRPI -c -o post-box-email.o post-box-email.cpp g++ -DRPI ../rc-switch/RCSwitch.o post-box-email.o -o post-box-email -lwiringPi -lwiringPiDev -lcrypt
Im letzten Schritt testen wir unser Skript, indem wir es ausführen und den Funkknopf drücken: Dabei sollte eine erste Mail gesendet werden.
Damit nicht zu viele Mails hintereinander gesendet werden, ist es möglich einen Cool-Down zu programmieren: Speichere dazu den Zeitstempel, wann die letzte Mail gesendet wurde und versende die nächste erst dann, wenn die Differenz einen Mindestwert übersteigt.
Sofern gewünscht kannst du das Skript auch dauerhaft beim Hochfahren starten lassen.
Fazit und Weiteres zum Raspberry Pi Briefkasten
In diesem Tutorial haben wir mittels eines Schnappschalters einen Email-sendenden Raspberry Pi Briefkasten gebaut, allerdings gibt es natürlich noch weitere Möglichkeiten dieses Projekt umzusetzen.
Manche Briefkästen sind nicht wie die hier gezeigten, sodass sich ein Schnappschalter nicht eignet. In diesem Fall ist das Tutorial dennoch ausführbar, jedoch mit einer kleinen Änderung: Statt einem Schnappschalter nutzen wir eine Infrarot Lichtschranke! Diese benötigen etwas mehr Strom, allerdings kann dadurch auch der Zustand erkannt werden, ob sich wirklich ein Brief im Kasten befindet. Im unserem Fall geht beim einfachen Öffnen der Klappe bereits eine Mail heraus.
Eine andere mögliche Erweiterung stellt OpenHAB dar. Hierbei können wir den Raspberry Pi Briefkasten in unser Smart Home integrieren. Dabei ist sowohl die letzte Öffnung als auch der aktuelle Status von Interesse. Denkbare Szenarien sind bspw. die Rücksetzung des Status jeden Tag um Mitternacht o.ä.
Welche weiteren Szenarien fallen euch ein, bei dem der „Briefkasten Sensor“ integriert werden könnte? Ich freue mich über Kommentare!
15 Kommentare
Hallo Felix,
Vielen dank für das Tutorial.
Genau was ich brauche um endlich meine Klingeln in das Smarthome ein zu binden. Da sich meine zwei Klingeln weit außer Reichweite befinden und ich dazu noch 75cm (!) dicke Wände habe, war es mir bisher nicht möglich die Funkstrecke zu verlängern. Jetzt muss ich die Klingeln nur noch in MQTT einbinden. Eine alte Klingel (Gong kaputt) kann als Briefkastensensor dienen. Schön wieder was zu basteln zu haben.
Grüsse aus RLP
Sven
Ich stell mir gerade vor das mit dem Telegramm Script zu verbinden…
Oder einen Steckdosenschalter schalten so das in der Küche eine Lampe brennt…
Oder beides 😉
Grüße
Andreas
Geht natürlich auch 🙂
Das freut mich sehr 🙂 Danke dir!
Nabend, besteht auch die möglichkeit eine Systemvariable zu schalten ? ich blick bis dato noch nicht so richtig durch …
sudo nano post-box-email.cpp
Diese Datei bekommt folgenden Inhalt (passe dabei deinen Code entsprechend an):
wo soll der Code in der post-box-email.cpp eingetragen werden?
Hi, habe durch zufall die Anleitung gefunden. Leider ist die klingel nicht mehr verfügbar. Hast du eine alternative mit der es geht?
Hallo
Ich habe ein kleines Problem aus dem Bild zuerkennen wie der Schalter im Briefkasten verkabelt wird.
Bitte kompletter Schaltplan.
Danke
Hallo,
wie kann man ein PhP Script in der post-box-email.cpp ausführen lassen?
Ich habe ein Php Script, mit dem ich uber die Kommandozeile eine Email versenden kann. Ich komme einfach nicht weiter.
Du kannst es mit
system("php ....");
versuchen.Du kannst es mit
system("php ....");
versuchen.Kann jemand mal posten wie lange der Briefkastensensor von der Laufzeit her bei ihm durchhält?
Da lediglich beim Briefkasten öffnen ein Signal gesendet wird, sollte die Batterie bei einem Brief pro Tage über Jahre hinweg laufen.
Hallo,
der Artikel ist zwar schon was älter, aber ich habe dazu eine Frage:
Mein Briefkasten hängt am Eingang des Grundstücks ohne Stromzufuhr aber noch im WLAN-Bereich.
Gibt es eine Lösung mit Batterien / Akkus bzw. könnte ein auf den Kasten geklebtes Solarpanel ausreichen für die Stromversorgung?
Vielen Dank.
Hallo Eckhard,
klar kannst du ohne Stromzufuhr das Projekt realisieren. Google mal nach Raspberry PI mit Akku betreiben.
Alternativ (das versuche ich gerade umzusetzen) kannst du auf einen Raspberry PI Pico W umsteigen, das ist ein Microcontroller der z.B. mit MicroPython programmiert werden kann und sehr wenig Strom benötigt.
Ich kann mich gerne nochmal melden, sobald ich dies realisiert habe.