Inzwischen gibt es eine zweite Version des Projektes. Diese basiert auf einer Wlan-Lösung:
RasPiPo(st) 2 - Der Briefkasten verschickt E-Mails
Vorab möchte ich mich herzlich beim Forenmitglied s.beister bedanken, ohne dessen Software das Projekt nie hätte umgesetzt werden können! Leider ist er wohl zur Zeit anderweitig eingespannt.
Gemeinschaftsprojekt der Forumiten s.beister (Software) und Neueinsteiger (Hardware, weil ich Software nicht kann)
Alle Neuerungen werden durch Ergänzungen am Ende dieses Beitrages zu sehen sein.
Ich hatte den Wunsch, eine E-Mail zu erhalten, wenn Post in den Briefkasten geworfen wird. Nach einiger Suche im Netz und hier im Forum bin ich zu folgender Lösung gekommen:
Ein Sender im Briefkasten ermittelt durch einen Sensor, dass dieser geöffnet wurde und sendet dieses Ereignis an einen Empfänger, der am RasPi angeschlossen ist. Dieser sendet dann die E-Mail.
Hardware
Erster Versuch:
Das Problem war, die passende Hardware zu finden. Ein Raspberry oder ein Arduino im Briefkasten scheiden in meinem Fall aus, da eine Batterieversorgung nicht langlebig genug ist und eine Steckdose nicht in der Nähe ist. Daher habe ich die Idee eines anderen Forumiten aufgegriffen und eine Funktürklingel dafür genutzt. Die Lösung bietet alles, was ich benötige. Ein fertig aufgebauter Sender incl. langlebiger Stromversorgung ebenso wie ein fertig aufgebauter Empfänger incl. einer Versorgungsspannung von rund 5V, die auch vom RasPi geliefert werden kann, was eine Batterieversorgung unnötig macht.
Als erstes habe ich eine günstige Funktürklingel bei ebay gesucht, die aus DE geliefert wird, wodurch die Wartezeit keine 4-6 Wochen beträgt. Meine Wahl fiel auf diese:
„Wireless Türklingel Funk Tür Klingel Funkklingel Doorbell Klingelanlage 10 Musik“
http://img.esale333.com/w1/x13/p83/bf165_1.jpg
Nach dem Auspacken habe ich zuerst überprüft, wie der Empfänger reagiert, wenn der Sender fortwährend gedrückt wird. Glücklicher Weise ertönt der Empfänger trotzdem nur einmalig. So konnte ich mich an den Umbau begeben.
Da der Empfänger diverse Klingeltöne bietet, musste ich einen finden, der möglichst kurz ist, um ein eindeutiges Signal zu erhalten. Der Empfänger signalisiert das Drücken des Senders nicht nur per Ton sondern lässt auch eine grüne LED aufblinken.
Ich habe einen Klingelton gewählt, der die LED nur zwei mal aufblinken lässt. Dies lässt sich durch die Software einfach auswerten.
Nachdem ich den Empfänger durch Lösen der vier Schrauben in den vier Ecken geöffnet habe, habe ich die gelben Kabel vom Lautsprecher entfernt. Nun signalisierte nur noch die LED das Betätigen des Senders.
Die LED habe ich ausgelötet und die beiden Pole durch eine Stiftleiste ersetzt, was das Anbringen provisorischer Kabeln erleichtert. Alternativ könnte man die LED auch abkneifen und die beiden Pins der LED dafür nutzen. Dies dient ausschließlich dem Testbetrieb. Später wird dort statt der Stiftleiste das Kabel zum Relais fest angelötet.
Zur Stromversorgung habe ich das „Batteriefach“ vom roten und schwarzen Kabel entfernt und statt dessen mein Labornetzteil mit 5V an den Empfänger angeschlossen.
An die Pins der ehemaligen LED habe ich ein Reedrelais angeschlossen.
http://www.reichelt.de/DIP-7212-L-5V/…ARCH=reedrelais
Das Relais wird mit den Pins 2 und 6 an den Empfänger angeschlossen. Die Pins 8 und 14 kommen am RasPi an GND und Pin7.
Außerdem wird am RasPi ein 10,0 KOhm Widerstand zwischen Pin1 (3,3V) und Pin7 (GPIO4) geschaltet. Pin7 ist in der Software voreingestellt, kann aber geändert werden. Dazu später mehr.
Die Angaben zu den GPIOs beziehen sich auf den RasPi Modell B, Rev. 2. Bei anderen Modellen müssen die GPIOs entsprechend geändert werden. Um es etwas klarer zu machen nenne ich zusätzlich die Pin-Nummern.
Wenn nun der Sender gedrückt wird und der Empfänger dies anzeigt, erklingt kein Lautsprecher und blinkt keine LED, sondern es wird das Relais geschaltet. Dieses Schalten zieht den GPIO4 auf Masse (GPIO wird low), was von der Software ermittelt wird und den Versand der E-Mail auslöst.
Nun zum Sender:
Die Modifikation ist relativ banal, aber immer auch abhängig von den örtlichen Gegebenheiten. Ich habe als „Sensor“ einen Taster mit Federstahl gewählt, der den Zustand des Briefkastendeckels „überwacht“. Den Taster hatte ich noch in der Kramkiste liegen.
Ist der Deckel geschlossen, so ist der Schalter geöffnet. Wird der Deckel geöffnet, dann schließt der Taster und der Sender wird aktiv. Um das Kabel hinten aus dem Gehäuse zu führen, habe ich eine Kerbe in die Platine gefeilt (aufpassen, dass ihr keine Leiterbahn erwischt!) und in die Rückwand des Gehäuses ein Loch gebohrt. Am Ende des Kabels wird dann der parallel geschaltete Taster angebracht.
Das hätte auch alles geklappt, wenn die Funkverbindung zuverlässig funktioniert hätte. Das hat sie aber leider nicht.
Zweiter Versuch:
Aus diesem Grund habe ich eine andere Türklingel gekauft. Diesmal ein 433 Mhz Modell von Conrad (552517). Um Abschirmungsprobleme des Metallbriefkastens zu vermeiden habe ich den Sender außen am Briefkasten angeklebt. Die Batterie liegt im Briefkasten und wurde durch ein Kabel aus dem Sendergehäuse ausgeführt. Ebenso wurde der Taster des Senders parallel mit dem Taster im Briefkasten verbunden. Theoretisch.
Ein Tip noch für den Aufstellungsort des Empfängers. Steht er zu nah an einer FritzBox, klappt es nicht mit dem Empfang. Ich habe lange gesucht, bis ich darauf gekommen bin. Seitdem er ein bisschen wegsteht von der FritzBox, funktioniert es bisher fehlerfrei.
Den Umbau stellte ich mir ähnlich simpel vor, wurde aber eines Besseren belehrt. Der Sender wird genau so umgebaut wie der des anderen Systems. Einfach einen Taster parallel zum vorhandenen Taster löten und passend im Briefkasten platzieren. Ein Problem ist nur, dass der Sender so lange sendet, wie die Taste gedrückt wird, bzw. der Briefkastendeckel offen steht. Also muss eine Lösung mit einem Monoflop gebaut werden.
edit 19.06.2014: Die Schaltung ist inzwischen verbaut und etwas umfangreicher geworden. Zum einen wurde das Monoflop installiert, dass jetzt von 3 Eneloops mit Strom versorgt wird. Das Monoflop schaltet über einen Transistor einen Step-Up-Konverter, der aus der Eneloop-Spannung 12 Volt macht. Das Problem war, dass der Konverter auf Grund der direkt anliegenden Last des Senders nicht auf 12 Volt kam. Daher habe ich einen Mosfet mit RC-Glied als "Einschaltverzögerung" missbraucht und vorgeschaltet. Nun funktioniert die Schaltung wie sie soll. Geht der Briefkasten auf, erzeugt das Monoflop einen 15 sekündigen Impuls, der den Step-Up-Konverter einschaltet, der dann widerum den Sender aktiviert. So kann es nicht mehr dazu kommen, dass auf Grund eines zu dicken Briefes minütlich E-Mails verschickt werden. Außerdem bin ich nicht mehr auf die viel zu kleinen kleinen Batterien angewiesen.
Als nächstes wird noch eine von außen sichtbare LED installiert, die leuchtet, wenn die Akkus eine voreingestellte Mindestspannung unterschreiten.
Beim Empfänger ist es etwas schwieriger. Es wurde vom Hersteller parallel zum Lautsprecher zwar eine LED gelötet, aber die dort anliegende Spannung ist nicht für ein Relais geeignet. Also musste ein Transistor her halten. Ich wählte den BC547.
Am Ausgang des Transistors konnte ich nun mit dem Oszilloskop sehen, wie er bei Betätigung des Senders gegen Masse geschaltet hat. Es war zwar kein sauberes Signal, aber wurde vom RasPi erkannt. Da mein RasPi auf Grund der vielfältigen Aufgaben immer mal wieder unter Volllast läuft, könnte ein so kurzes Signal „übersehen“ werden. Aus diesem Grund habe ich es in einen TLC555 geschickt, der daraus ein gemäß meiner externen Beschaltung, etwa 11 sekündiges Signal macht. Das ist nun aber ein positives Signal. Da die Software aber negative Signale detektiert, muss es invertiert werden. Aus diesem Grund durchläuft es noch einen 74HCT14N. Der macht daraus ein sauberes langes LOW-Signal. Das wird vom RasPi (hoffentlich) immer sauber erkannt und führt zu der erwünschten E-Mail.
In dem abgebildeten Gehäuse sind rechts die Empfängerplatine zu sehen, oben der Sender für das Projekt SHC von agent47 und unten links die beschriebene Schaltung.
Wer ein ähnliches Problem mit der Auslastung seines RasPi hat, wodurch das Sendersignal gelegentlich übersehen wird, kann sich gerne bei mir melden. Ich habe noch ein paar belichtete Platinen für die Erzeugung eines X-sekündigen Signals (Impulsdauer frei wählbar) hier liegen. Die benötigten Bauteile sind auch vorhanden. Auch habe ich noch das zuerst verwendete Funkklingelset hier liegen. Ansich funktioniert es, nur eben nicht bei mir. Ich nehme an, dass zu viel Stahlbeton und Strom- sowie Datenleitungen das Signal zu stark abschwächen.
Ich hoffe, dass die Beschreibung und die Fotos verständlich genug für einen fehlerfreien Nachbau sind. Es handelt sich dabei nur um Fotos des zuletzt gekauften 433Mhz Funktürklingel Sets.
Verbesserungsvorschläge sind willkommen.
Software
Leider ist der Autor der Software seit Mitte April nicht mehr im Forum aktiv und reagiert auch nicht auf PNs. Ich hoffe es liegt nur daran, dass er anderweitig stark eingespannt ist, es ihm aber ansonsten gut geht.
Hier ist die Software zu finden: https://github.com/codinglorious/RaspiPo
Die nachfolgende Anleitung ist eine Zusammenstellung der PNs, die ich mit dem Autor geschrieben habe.
In dem Archiv findest du zwei Dateien:
1. PiBell.py (das ist das eigentliche Script)
2. pibell.conf
Du musst beides in einen Ordner kopieren, weil das Script die Konfiguration (noch) im selben Ordner sucht.
Bevor du das Script allerdings starten kannst, musst du noch die RPi.GPIO Bibliothek für Python installieren.
Die Anleitung findest du hier ziemlich weit unten: http://raspberrypiguide.de/howtos/raspbe...io-how-to/
Die Konfiguration ist ziemlich einfach:
scan_period = 0.5 # Scan alle 0.5 Sekunden
idle_time = 120 # 120 Sekunden warten nach Signal
listen_gpio_pin = 7 # GPIO-Pin auf dem gehorcht wird. Pin 7 auf dem Board ist GPIO4.
log-Verzeichnis anlegen
Konfigurationsdatei anpassen:
insbesondere E-Mail
Script starten:
So sieht der Aufruf momentan bei mir mit absoluten Pfadangaben aus:
Das System läuft bei mir seit ein paar Tagen. Die Hardware sendet zuverlässig und das Signal des Empfängers wird laut Log zuverlässig erkannt.
Die Software hat leider noch einige Fehler. Da der Autor zur Zeit nicht erreichbar ist, habe ich darauf keinen Einfluss. Wenn aber jemand von euch Lust hat, sich daran zu versuchen - nur zu.
Bisher angedachte Weiterentwicklung:
- Konfiguration erfolgt über WebUI
- Zeitlich einstellbare Erinnerung per E-Mail daran, dass die Batterie erneuert werden muss. Kombiniert mit einer Art Abfrage wann das letzte Mal der Briefkasten geöffnet wurde, bzw. der Empfänger dies mitbekommen hat. Nach dem Motto: "Hier stimmt was nicht, die letzte Postmeldung wurde am xx.xx.xx verschickt."
Da das Programm beim Schließen des Terminals beendet wird, würde ich es gerne direkt beim Systemstart laden. Hierzu hat mir dbv folgenden Tip gegeben:
ist eigentlich ganz einfach:
du schreibst folgende Zeile in die rc.local
Dann läuft das Programm in einer eigenen Console. Mann kann dann mittels
screen -r RspiPo
auf die Console schalten um zu schauen ob zum Beispiel irgendwelche Meldungen zu sehen sind.
WICHTIG:
Um aus der Screen Session wieder rauszukommen, STRG+A, dann D drücken.
Sollten Euch weitere Bugs auffallen, schreibt sie bitte. Auch Ideen zu Erweiterungen sind willkommen. Ich werde alle Änderungen und Erweiterungen zu Hard- und Software in diesem ersten Post aktuell halten.
edit: 04.05.2014
Mit Hilfe von dbv und vor allem Tell konnte das Script nun so weit verbessert werden, dass es tut, was es soll. Ich habe die Version 0.5 als ZIP angehangen.
edit: 12.05.2014
Die Version 0.6 wurde auf github veröffentlicht und die Version 0.5 aus dem Anhang entfernt. Bitte beachten, dass die auszuführende Datei jetzt raspipo.py heißt.
edit 19.06.2014:
Die Stromversorgung wurde auf Akkubetrieb umgestellt, Monoflop hinzugefügt, Foto ergänzt. Detailierte Änderungen sind weiter oben im Text beschrieben.