Türglockenverstärker

Ich gehöre zu den anonymen Amazonikern. Etwa zwei- bis dreimal pro Woche stehen die Kollegen von DHL & Co. vor der Tür  und spielen das beliebte Ist-jemand-zuhause-Roulette. Oft höre ich die Türklingel nicht, weil ich im Garten bin. Manchmal höre ich die Klingel nach dem siebten Läuten (unser Zusteller gibt nicht so schnell auf) und darf mich dann fragen lassen, ob ich gerade im Südflügel war.

Um das zu verhindern, möchte ich einen Raspberry Pi einsetzen, der erkennt, wenn die Türglocke läutet. Die üblichen Klingeltrafos arbeiten mit 8 bis 12 V Wechselstrom, was für dem Raspberry Pi recht unhandlich ist. Um das Schließen des Wechselstromkreises direkt als Eingang zu benutzen, müsste man die Wechselspannung erst gleichrichten und dann auf eine Spannung herunterdrosseln, die der Raspi verarbeiten kann. Das geht alles, ist aber aufwändig und erfordert auch mehr Verdrahtung, als in das Türglockengehäuse passt.

Ich habe deshalb einen anderen Weg gewählt und einfach einen Geräuschsensor an den Raspberry Pi angeschlossen. So sieht er aus:

noisesensor

Wenn ein Geräusch ertönt, das die eingestellte Lautstärkeschwelle überschreitet, gibt der Sensor eine definierte Spannung auf den „Out“-Pin. Dieses Signal kann der Raspberry auswerten und „weiß“ dann, dass es an der Tür geklingelt hat. Zum Einsatz kommt der noch recht junge Raspberry Pi Zero. Er ist etwa so lang  wie mein kleiner Finger, kostet 5 Euro und ist ein vollständiger PC, auch wenn man von der Rechenleistung keine Wunder erwarten sollte. Das ist er:

pizero-small

Der Anschluss des Geräuschsensors an den Raspberry Pi ist denkbar einfach. Neben der Versorgungsspannung muss der Sensor nur an einen freien GPIO-Pin angeschlossen werden. Ich habe GPIO 21 (= physisch Pin 40) gewählt. Über den Drehpoti im blauen Gehäuse wird seine Empfindlichkeit gesteuert. Sie möchten natürlich nicht ständig benachrichtigt werden, wenn in der Nähe der Glocke irgendwelcher Lärm herrscht (laute Stimmen, fallender Gegenstand, bellender Hund…). Das können Sie weitgehend verhindern, indem Sie den Sensor möglichst nah an den Klangkörper der Glocke montieren. Dann können Sie die Empfindlichkeit so einregeln, dass nur das laute Signal direkt daneben zum Auslösen führt. Ich habe den Sensor dazu in das Gehäuse der Türglocke eingeführt:

IMG_20160123_135200-459x500

Wenn es nun an der Tür klingelt, lasse ich im Haus und im Garten einige Lampen blinken. Wie man Lampen und andere Geräte automatisch ein- und ausschalten kann, können Sie im Artikel „Automatisches Gartenlicht“ nachlesen. Außerdem wird eine Nachricht per Twitter verschickt:

klingel-500x185

Der Programmcode, der für das Auslesen des Geräuschsensors benötigt wird, ist erfreulich kurz:

#!/usr/bin/env python3


from gpiozero import Button
from signal import pause
import os

def hat_geklingelt():
 #hier können beliebige Aktionen
 #ausgeloest werden, wenn es an 
 #der Tuer geklingelt hat
 os.system("/usr/local/shellscripts/klingel.sh")

button = Button(21, bounce_time=2)

button.when_pressed = hat_geklingelt
pause()

 

Für das Auslesen des Signals habe ich die gpiozero-Bibliothek verwendet. Sie hat zwar keine vorgefertigte Klasse für einen Geräuschsensor, aber das muss sie auch nicht – für die Software ist es egal, ob das Signal von einem Sensor oder einem gedrückten Schaltknopf stammt, also habe ich die „Button“-Klasse genommen.

Wichtig ist hier der Parameter „bounce_time=2“ in der button-Definition, denn das Klingelsignal „prellt“. Das heißt, es wird häufig nacheinander ausgelöst, wenn der Geräuschsensor anschlägt. Der Parameter bewirkt, dass alle eingehenden Signale innerhalb einer Zeitspanne von 2 Sekunden zu einem Signal zusammengefasst werden. Wenn Ihre Türglocke länger als 2 Sekunden läutet, sollten Sie diesen Wert noch erhöhen, sonst wird die eingestelle Aktion mehrfach ausgelöst.

 

trenner_knofi