Wir haben eine „smarte“ Türklingel – bzw. noch schlimmer: eine Cloud-basierte Türklingel. Wenn jemand bimmelt, dann wird über’s Internet eine Push-Nachricht auf’s Smartphone bzw. Tablet gesendet. In der Theorie ist das ganz nett: wenn man irgendwo unterwegs ist und Paketbote oder Nachbarskinder klingeln kann man diese sehen und mit ihnen sprechen. Ob das überhaupt Sinn macht ist eine andere Sache.
In der Praxis bimmelt’s dann nämlich auch immer am Smartphone, wenn man in der Arbeit sitzt und die Kinder im 10-Minuten-Takt irgendwas wollen. Abstellen kann man das nur nach dem ganz-oder-gar-nicht-Prinzip, und auch dann erfordert das eben immer einen manuellen Eingriff (ein- bzw. ausschalten eben).
Doch das größte Problem: das Klingeln an der Haustür soll ja halbwegs schnell auf dem Smartphone/Tablet signalisiert werden. Und das wiederum bedeutet, dass die Türklingel-App praktisch immer im Hintergrund laufen muss, um innerhalb <1 Sekunde zu „läuten“. Das widerspricht allen Energiespar-Maßnahmen des Gerätes. Nach allen paar Updates muss man wieder die Energiespar-Einstellungen für eben diese App „aushebeln“ – und das geht natürlich auch auf Kosten der Akkulaufzeit. Last but not least können Smartphones die Pushnachrichten i.d.R. nicht über das lokale (W)LAN „direkt“ von der Klingel empfangen, sondern nur als offizielle Push-Meldung über den jeweiligen Hersteller (also über’s Internet). Ich mag mir gar nicht vorstellen, was da im Hintergrund alles laufen muss – zudem ist man dem Türklingel“betreiber“ auf Gedeih und Verderb ausgesetzt (z.B. dass er nicht schon nach wenigen Jahren seine Cloudserver abschaltet).
Zwischenfazit soweit: eine „smarte“ Türklingel ist alles andere als eine „fire-and-forget“-Lösung, sondern vielmehr ein nettes Gimmick für technikaffine Leute. Eine „normale“ Türklingel, bestenfalls mit Kameraaufzeichnung wenn jemand geklingelt hat, würde in den meisten Fällen auch genügen.
Türgong
Aber zum Glück hat unsere Klingel auch einen ganz klassischen potenzialfreien Kontakt, mit dem man einen völlig analogen, internetfreien Türgong anschließen kann. Drückt jemand den Klingelknopf, dann schließt dieser Kontakt kurz, und der Gong kann loslegen. Man sollte beim Hausbau also in jedem Fall eine Leitung zwischen Haustür und Türflur vorbereiten, oder (in meinem Fall) viele Netzwerkleitungen ziehen, die man für diesen Zweck missbrauchen kann.
(unsere „smarte“ Türklingel wird über 4 Leitungen mit PoE und LAN versorgt, von den übrigen vier Leitungen habe ich zwei mit dem Schließkontakt der Klingel belegt. Am Patchfeld im Keller greife ich diese beiden Leitungen über einen manuell gecrimpten Stecker ab, und schicke diese über einen weiteren entsprechend gebauten Stecker zusammen mit 5V DC in ein anderes Netzwerkkabel in den Flur)
Nun hätte ich also in den Baumarkt meines Vertrauens gehen können um dort den nächstbesten Türgong samt Klingeltrafo zu kaufen, und fertig wäre die Sache. Aber was wäre das für eine analoge Verschwendung, wenn ich einen zentralen Lautsprecher „nur“ für die Türklingel nutzen würde… 🙂
DFPlayer & Co.
Vielen Arduino-Bastlern bekannt ist der „DFPlayer Mini“: ein komplett fertiger MP3-Player mit MicroSD-Slot und kleinem 3W-Verstärker, an dem man direkt einen Lautsprecher anschließen kann. Die Sache hat aber einen Haken: der DFPlayer kann nicht direkt über einen Taster (in diesem Fall: der Kontakt der Türklingel) losbimmeln, da braucht man eine kleine Schaltung (z.B. Arduino) davor. Aber ich habe da etwas Besseres gefunden: den DY-SV17F.
- kostet nicht viel mehr als der DFPlayer (<$2 über AliExpress)
- hat 4 MB Flash-Speicher dabei (kann direkt über MicroUSB mit MP3-Dateien bespielt werden)
- kann je nach Beschaltung per Taster oder über UART angesteuert werden
- hat ebenfalls einen 3W-Verstärker on board
In meiner ersten Version hatte ich tatsächlich nur den DY-SV17F auf einer Lochrasterplatine zusammen mit einem Transistor (zur Invertierung des Türklingel-Signals) und einem Kondensator (zur Entprellung) fliegend zusammengelötet und einen Lautsprecher angeschlossen. Diese optisch nicht unbedingt ansprechende Lösung hat nun vier Jahre lang mehr oder weniger gut funktioniert. Aber nun wollte ich dieses Provisorium auch endlich mal auflösen.
Version 2
Meine Ansprüche an die neue Version waren:
- Abspielen weiterer Sounds (je nach Ansteuerung)
- Lautstärke einstellbar (z.B. Abends leiser)
- keine „fliegende Verdrahtung“ aus der Wanddose heraus, sondern alles kompakt inklusive Lautsprecher in einer Unterputzdose
Die fertige Lösung sieht so aus:
Herzstück ist weiterhin der DY-SV17F. Zur Ansteuerung ist ein NodeMCU (WeMos D1 Mini) dazu gekommen. Drei Widerstände „konfigurieren“ den MP3-Player auf UART-Betrieb. Der Türgong ist statt am DY-SV17F am ESP8266 angeschlossen – das hat den Vorteil dass ich den Klingelimpuls auch anderweitig auswerten kann (z.B. MQTT) und ich spare mir dank einer geschickten Schaltung den Inverter-Transistor.
Die beiden Platinen habe ich mit ganz profanem Tesafilm (und natürlich Isolation dazwischen) Unterseite an Unterseite miteinander „verklebt“ (also etwas kompakter gemacht) – daher die flexible Aderleitung zur Verbindung. So passt das zusammen mit allen Steckern und dem Lautsprecher in eine normale Unterputzdose.
Tasmota mit DY-SV17F compilieren
Als Firmware auf dem ESP kommt selbstverständlich Tasmota zum Einsatz. Seit einer Weile unterstützt diese prinzipiell auch den DY-SV17F – allerdings muss man sich die Firmware hierfür selber zusammen compilieren (der „tasmota-sensors“-Build unterstützt nur den DFPlayer!).
Das Compilieren war an sich der anspruchsvollste Teil (auf der Tasmota-Website sind alle Details beschrieben, das erspare ich hier). Ich selber habe PlatformIO hierfür genutzt. Folgende Einstellungen müssen in der Datei „tasmota/user_config_override.h“ gesetzt werden:
#ifndef USE_RULES
#define USE_RULES
#endif
#ifndef USE_MP3_PLAYER
#define USE_MP3_PLAYER
#endif
#ifdef MP3_VOLUME
#undef MP3_VOLUME
#endif
#define MP3_VOLUME 30
#ifndef USE_DY_SV17F
#define USE_DY_SV17F
#endif
Bei Bedarf kann ich das fertige Firmware-Image hier zum Download bereitstellen (das wird dann aber nicht auf dem aktuellsten Stand sein).
Die Verbindung zwischen NodeMCU und DY-SV17F benötigt lediglich drei Leitungen (GND, 5V, D4/GPIO2 an RX). Die gewinkelte Pin-Leiste auf dem DY-SV17F ist für den Anschluss des Lautsprechers. Die vier Adern vom NodeMCU gehen zur Stromversorgung (+5V, GND) sowie zum Klingelkontakt (+3.3V!!! und D8/GPIO15). Das ist EXTREM WICHTIG, da die Eingänge des ESP nur 3.3V vertragen und man sonst seinen Chip grillen würde. Im Tasmota ist D8 als „Button_in“ koniguriert. Der Trick dabei: der D8 hat einen externen Pull-Down-Widerstand zugeschaltet, so dass wir uns den sparen können. Wer das nachbauen will sollte je nach Leitungslängen mal durchmessen, ob 3.3V für die lange Strecke zwischem dem ESP und Türklingel ausreichen, ansonsten braucht man da eine entkoppelte Schaltung mit höherer Spannung.
Ganz zum Schluss konfiguriert man noch eine Regel im Tasmota, mit der bei jedem Button-Signal (Türklingel) das gewünschte MP3-File abgespielt wird:
Rule1 ON Button1#State DO MP3Track 1 ENDON
Rule1 1
Wenn ich nun statt dem Standardton (00001.mp3) etwas Anderes wünsche – z.B. die Minions zu Weihnachten singen sollen – dann muss ich nur die Regel auf das gewünschte MP3-File ändern. 🙂
Ausblick
Über MQTT kann ich somit auch direkt andere MP3-Dateien abspielen, sowie die Lautstärke der Klingel konfigurierbar machen. Die nächsten geplanten Schritte sind:
- wenn das Haus in den „Nacht“-Modus geht, die Klingel leiser stellen
- Abspielen eines dezenten Sounds, wenn die Spülmaschine oder der Trockner fertig sind
- Abspielen eines nicht ganz dezenten Sounds, wenn die Außentemperatur <12° beträgt und die Haustür länger als zwei Minuten offen steht
- und so weiter…
Der Kreativität sind nun keine Grenzen mehr gesetzt.