Loading…

Smart doorbell

A while ago I started to build a smart home integration for my door bell.

The system I had to play with is a Ritto digital bus called Twinbus.

But after some research I figured out that my Ritto intercom has some awesome pinouts on the circuit board.

Things needed

  • soldering iron
  • some wires
  • hot glue (or some tape)

Shoppinglist

AmountNamePriceLink
1xWemos D1 mini~ 2,14€Aliexpress.com
1xOptocoupler (4N35) ~ 0,98€Aliexpress.com
1xWemos power shield~ 1,22€Aliexpress.com
1xTransistor (BC337-40 NPN)

2xResistors (~ 220 Ohm)

Total< 5€

How will it work?

Someone rings the bell

If someone rings the bell pin 4 and any gnd pins will be shorted with 5v. This will be detected by the wemos sketch like a simple button press. To protect the wemos input I used a transistor.

You want to open the door

The opening command is received via mqtt by the wemos. We will set Pin D5 to HIGH so that an optocoupler is shortening the Ritto pin 8 with gnd. And tada the door should open.

Source: http://deh0511.de/twinbus/

Software

You can easily use my script from github.

Don’t forget to copy the src/config.example.h to src/config.h and change it to your needs.

I already solved most problems of the initial problems like debouncing the bell input, but if you have any improvements feel free to pull request them.

A nice feature I implemented is the possibility to update the esp firmware via http request, so you wont have to open the case every time.

I am using a mqtt (mosquitto) server for transmission and a node-red instance as automation backend. Check out the node-red extension: Node-RED dashboard. You can use it to easily create a door opener button and a simple icon with different colors for your bell states.

How to open the case?

Simply use a screwdriver to press the latch back.

Wiring

At the beginning I tried using a dcdc transformer, but the efficiencies of it was so bad that the intercom wasn’t working, because of the power lack.

I decied to give the wemos power shield a try and I am totally impressed by now.

Ritto main circuit board

I finally hot glued everything inside the original Ritto box. To get everything flat enough I had to place the wemos power shield (top left) and wemos borad itself (top right) separately, but that isn’t a problem at all.

Thanks

Big thanks to Robin Henniges and Thomas Abraham for their research and ideas.

Check out their sites and Robins video.

http://www.deh0511.de/twinbus

Similar projects

Die smarte Klingel

IMPORTANT

Alexa, open the frontdoor.

What seems super nice and helpful in the first moment is very dangerous. Any stranger could shout from outside and get inside without any housebreaking skills. Please don’t steal them all challenges. And don’t forget Node-Red and mqtt servers need to be protected as well.

Disclaimer

Be careful with connecting anything to your Ritto home system. Any mistakes could destroy the entire system of your house, not only your endpoint. This post should only provide ideas how to build such a system and reports how I got it working with my special setup.

Further improvements

Next level would be to access the voice interface and connect it to a sip extension, but that would require something like a Raspberry Pi for processing the audio stream. Maybe DoorPi is the correct way to go.

Feel free to contact me if you have any questions!

Updates

  • fixed Github pin mapping in config.example.h
  • added new detail images
  • swapped collector & emitter in Fritzing image @Thanks “Sebastian R” and “philipp” (24.06.2019)

Author: Anton Bracke

Software engineering student from Germany. Loves programming in PHP, JS and sometimes C.

42 thoughts on “Smart doorbell

  1. Hey Anton ! So happy to see you building a door opener! Its been a while for me since I was building mine and I can just say ITS FANTASTIC. I still use it. It makes life easier.
    I have an Android app and you can even set a timer which is useful if you carry something and u can not use ur phone.

  2. // Kontext: https://twitter.com/niklas_wa/status/1026579402447044608

    Ich bin mir mittlerweile nicht mehr so sicher, ob meine 4N35 überhaupt funktionieren (20 Stück hab’ ich :D), oder ich die alle nacheinander zerschieße. Es kamen 3,5V aus dem Wemos raus, und kamen durch den Widerstand auf 0,01V. (Ich habe das Multimeter seit 3 Tagen, vielleicht bin ich auch einfach nur zu blöd)

    Mittlerweile habe ich, glaube ich, meinen Wemos auch zerschossen. Da kommt gar keine Spannung mehr an PIN D1 raus.
    Dafür hab’ ich inzwischen die Klingel-Erkennung hinbekommen.

    Übrigens: Ich habe geplant, das Schloss und die Klingel in Home Assistant (https://www.home-assistant.io) zu integrieren. Dazu nutze ich folgende Komponenten: MQTT Binary Sensor und MQTT Lock. Damit lässt sich dann theoretisch auch das Schloss in Apple HomeKit z.B. integrieren.

    1. Das Klingelsignal abfangen funktioniert also schonmal?

      Dein PR habe ich gemerged. Schon mal danke.
      Schau dir auch nochmal die Pin Mappings aus meinem git Repo an. Ich habe die nochmal auf die, die ich aktuell wirklich verwende, angepasst. Ich hatte da Anfangs auch Probleme, weil einige Pins kein Pullup etc unterstützen.

      Home-Assistant, OpenHAB & co. hatte ich auch probiert, jedoch konnte ich mich als Programmierer nicht damit zufrieden geben, jeden Wemos mit immer genau den selben Parametern seperat anzulegen. Aber wenn du dort eine schicke Config hinbekommst, würde ich mir das gerne nochmal ansehen.

  3. Ich bekomme es einfach nicht hin. Es kommen 3,5V aus D2 raus. Dann durch den Widerstand kommen am 4N35 nur noch 0,02V an (direkt am Chip gemessen), aber trotzdem wird der andere Schaltkreis nicht geschlossen. Ich peil’s nicht. Das war jetzt der fünfte Optocoupler. Entweder habe ich echt mega Pech oder ich habe etwas übersehen.

    Das ist aber schon richtig herum, oder?
    https://i.imgur.com/LUOmB7u.jpg

  4. Update: Funktioniert alles! Man sollte sich schon die richtigen Widerstände raussuchen und nicht 220K Ohm statt 220 Ohm….

    1. Sehr schön. Hatte auch schon Sorgen, ich hätte bei der Anleitung etwas übersehen. Wie läuft deine Integration mit home-assistant?

  5. Nochmal ‘ne Frage: Wie viel Volt kommen bei dir an der Klingel an? Bei mir kommen 25,6V an und deswegen macht das Power Shield in einem bestimmten Rhytmus ein Summ-Geräsch. Jetzt hatte ich es aufeinmal, dass dieses Geräusch ganz lauf unten bei der Sprechanlage bei der Haustür zu hören war. Btw: Wenn der WeMos angeschlossen ist, funktioniert die Sprechanlage in der Wohnung nicht mehr. Ist das bei dir auch so?

  6. Super nice! Ich hatte vorher mal einen LM2596 DC-DC Wandler genutzt. Der hatte so viel Strom gezogen, dass meine Türsprechanlage dann ausging. Deshalb das Wemos Power Shield. Was genau meinst du mit Summ-Geräusch? Den Summer / Öffner an der Tür oder hörst du richtig was? Bei mir geht’s recht gut, obwohl es schon sein kann, dass der Sound leidet. Das werde ich nochmal nach messen und testen.

  7. Ich meine, dass das WeMos Power Shield an sich in einem bestimmten Rhytmus summt / nicht summt. Also ca. 1s summen, 2s Pause – so ungefähr. Das ist dauerhaft so.

    Zweite Sache: Die Sprechanlage funktioniert (hoffentlich nur bei mir :D) in der Wohnung nicht mehr. Also ich höre am Hörer nichts und unten hört man mich nicht – erstmal kein sehr großes Problem eigentlich.
    Das große Problem hat mich gestern überrascht, als genau das oben beschriebene Muster sehr laut unten bei der Haustür aus den Lautsprechern kam – sofort weg, als ich das Power Shield abgeschlossen habe.

    1. Einen besonders klaren Sound habe ich so leider auch nicht, wenn das Power Shield angeschlossen ist. Ich höre öfters ein Knacken und teilweise spinnt der Ton auch mal ganz. Da müssen wir sonst nochmal eine andere Lösung finden, würde das aber sehr gerne alles so kompakt in der Ritto Box lassen.

  8. Hi, könntest du eine Schritt für Schritt Anleitung posten, wie ich überhaupt mit einem frischen D1 Mini umzugehen habe um deine Software drauf zu laden? Ich bin bisher auf dem Gebiet absoluter Neuling. ArduinoIDE hab ich bereits installiert. Danke dafür

    1. Wie @Niklas schon geschreiben hat, benutze ich für Arduino und besonders die ESPs Atom mit dem Plugin PlatformIO, welches ich auch nur sehr empfehlen kann. Ich werde aber einfach für die Arduino IDE und PlatformIO nochmal eine bebilderte Anleitung schreiben und dann hier verlinken.

  9. @René Ich habe bis dato auch immer mit der ArduinoIDE gearbeitet – hier wurde allerdings PlatformIO genutzt. Dazu einfach Atom installieren und in Atom dann die Erweiterung PlatformIO. Dann das Github-Projekt clonen (Ich weiß das auch nur durch die platformio.ini :D) und in Atom/PlatformIO als neues Projekt öffnen. Dort sollte, wenn der WeMos verbunden ist unter Devices der entsprechende Port auftauchen. Dann nur noch Parameter anpassen (WLAN usw.), speichern und hochladen (links bei den Symbolen). 🙂

  10. Hi, leider bekomme ich über PIO home beim hochladen folgenden Fehler: {
    “resource”: “/c:/Users/S7EN/Desktop/esp-bell-master/src/main.cpp”,
    “owner”: “cpp”,
    “code”: null,
    “severity”: 4,
    “message”: “unused variable ‘ret’ [-Wunused-variable]”,
    “startLineNumber”: 199,
    “startColumn”: 23,
    “endLineNumber”: 199,
    “endColumn”: 23
    }

    Ich bin echt langsam mit meinem Latein am Ende. Libaries installieren, configs anpassen, hochladen, debuggen. Seit Tagen versuche ich in irgend einer Weise den D1 Mini richtig zu flashen, damit ich im io.adafruit.com IRGEND eine Ausgabe erhalte damit ich weiß das es verbunden ist und nur auf die Trigger gewartet wird. In der FritzBox wird der D1 mini als online angezeigt. Ich habe im PIOHome folgende Libaries installiert:

    – Arduino
    – ESP8266 by ITEAD Studio
    – PubSubclient
    – PubSubClient by Nick O’Leary

    In io.adafruit.com habe ich 3 Gruppen (system, bell, door) und die jeweiligen feeds (online, reset update….) den jeweiligen gruppen zugeordnet. Es passiert aber nichts dort und wie kann ich den trigger “bell” auslösen ohne das kabel der klingel dran zu haben (testweise am pc ob daten übertragen werden).

    Ich wäre dir sehr verbunden wenn du mir da weiter helfen kannst. Ich bin zwar nicht ganz Neuling mit RasPi und verschiedenen smarthome aktoren aber dieser mikrokontroller bringt mich zur weißglut. Danke!

  11. Hat sich erledigt, habe nun Mosquitto installiert und damit funktioniert es. Nur wenn ich manuell mal D5 und GND verbinde, erhalte ich nur die Rückmeldung am Wemos D1 Mini via LED das etwas passiert aber ein String auf meinem System wird nicht ausgegeben. Geht es denn nur wenn tatsächlich ein Klingelsignal am D5 anliegt? LG René

    1. Habe erst jetzt deinen Kommentar gesehen, da die Benachrichtigungsfunktion meiner Webseite leider seit dem Wochenende bis heute nicht ging. Ohne Wlan oder MQTT Verbindung startet der Wemos nicht durch, weshalb der Wemos dann nicht wie erwartet funktioniert. Bekommst du auf Mosquitto jetzt die Daten vom Wemos, wenn du klingest? Nur als Tipp, zum Testen habe ich gerne die Etagenklingel, also die vor der Wohnungstür verwendet. Dann muss man nicht erst ganz runter laufen, hat aber eine optiomale Testumgebung, aber auch das verbinden von D5 und GND sollte problemlos gehen. Im Normalbetrieb, gibt der Wemos nichts auf der Serial-Konsole aus, sondern lässt nur die LED leuchten und schickt einen String an den MQTT. Wenn du Informationen per Serial erhalten willst, dann aktiviere bitte den Debug-Mode (siehe Github). Die Baud-Rate ist dann 115200 und du solltest ein paar Informationen auf der Konsole bekommen.

    2. Hi, also das Problem war, das der Klingel-Trigger der ausgelöst wird, wenn D5 und GND mal testweise zusammen gehalten werden, keine “1” via mqtt gesendet hat, sondern nur wenn man den Kontakt wieder löst eine 0. Dementsprechend konnte ich das auch nicht auswerten. Hab nun halbherzig das Sketch ein wenig umgeschrieben, dass es eine 1 sendet und mein Smarthome System (Pimatic) via Regel nach einer Sekunde wieder eine 0 an Mosquitto sendet. So kann ich damit arbeiten. Das Problem mit dem Relais hab ich immer noch, ich habe NO und GND an den Türöffner gesteckt und (übrigens schaltet bei mir das Relais auf D1, nicht aber auf D2) das Relais wird auch geschalten, nur summt der Türöffner nicht. Anders herum auf NC und GND summt der Summer wenn ich schalte aber dann ist er dauerhaft geschalten und ich kann über die Gegensprechanlage selbst nicht mehr die Tür öffnen.

    1. Moin Stefan, das sollte kein Problem sein. Wir haben gerade ein ähnliches Setup mit einer ganz normalen Türklingel gebaut. Kannst du uns vielleicht ein paar Bilder von deiner Gegensprechanlage zur Verfügung stellen, dann kann ich mir das mal genauer ansehen.

  12. Guter Artikel und hilfreich.

    Ich habe selbiges vor,  nur bin ich mir unsicher ob man das Wohntelefon ohne weiteres vom Netz trennen kann!?

    Würde mich über einen Hinweis darüber freuen.

    1. Danke für dein Feedback.

      Ich konnte mein Ritto Telefon einfach immer abstöpseln und es hat dabei nie irgendwelche Einstellungen oder das pairing mit dem Schaltmodul im Keller verloren. Habe dafür einfach immer den grünen Stecker abgezogen. Gerade zum Löten sehr zu empfehlen, damit man nicht mit dem Lötkobel irgendwelche Kontake kurzschließt.

  13. Hallo Anton! Interessanter Artikel. Frage, warum hast du für den Türöffner einen Optocoupler verwendet, statt einem simplen Transistor? Der Wemos wird ja von der gleichen Stromquelle gespeist wie das Wohntelefon und der Türöffner-Schalter selbst hat eine Spannung von 5V. Gibt es da einen Vorteil die Stromkreise zu separieren?
    Was mich auch noch interessieren würde, hast du mal den Leistungsverlust des LM2596 gemessen? Der sollte gemäss Angaben des Herstellers gering sein. Ich habe bei mir ca. 25,5V Spannung, das ist grenzwertig für den Einsatz des Wemos Power Shields. Danke für dein Feedback!

    1. Hallo Sebastian,
      danke. Ich hatte zu erst wei Robin ein CMOS benutzt, alerdings ging das eher mäßig, da das immer einmal geschaltet hat, wenn es Strom bekommen hat. Dann kam ich auf den Optocoupler und habe erst später festgestellt, dass beide Seiten die Stromquelle teilen. Vielleicht kannst du mit uns einen Aufbau teilen. Das Power Shield kommt recht gut mit dem Input bei mir klar, obwohl das natürlich auch nicht optimal ist. Allerdings hatte ich mit dem LM2596 keinen Erfolg, da dann immer das Telefon an sich zu wenig Strom hatte und nicht mehr geklingelt hat und man nicht ordentlich reden konnte. Würde mich auch da über Vorschläge freuen.

    1. Moin Christoph,

      ich habe das Gerät bei uns im Keller leider noch nie gesehen 🙈 und habe daher auch keine Erfahrungen damit. Wie heißt dein Modell im Keller denn genau (konnte das in der PDF leider nicht erkennen)? Ansich sollte das mit dem RPi ja auch ohne Probleme direkt gehen, also gleicher Aufbau nur an die GPIOs vom Pi halt. Die Frage wäre, ob das Verwaltungsmodul ein Pinout für alle Wohnungstelefone hat. Sonst müsstest du Twinbus dekodieren und ich denke daran könnte es scheitern.

    2. Hi Anton,

      bei mir im Schaltschrank ist das Ritto Twinbus Netzgerät mit der Art. Nr. 14570 00 verbaut – dieses gibt es nur in Verbindung mit dem Entravox System. Leider findet man keine wirklichen Schaltpläne dazu.

      Es gibt auch nur ein Wohntelefon (Nur 1 Haushalt).
      Wäre für jede Hilfe dankbar wie man bei diesem Gerät an das Thema rangehen könnte. Ansonsten müsste ich halt den “Umweg” über das Telefon gehen und dort deinen Aufbau anbringen.

      Gruß,
      Christoph

  14. Vielen Dank für den Beitrag.

    Ich habe dieses Wochenende dein Projekt zum laufen bekommen. Für den Optokoppler hatte ich statt des
    4N35 noch einen MCT5211 rumliegen, mit dem es genauso gut funktioniert. Beim verdrahten des Projekts ist mir aufgefallen, dass der Schaltplan und das Verdrahtungsbild nicht ganz zusammen passen. Der Widerstand an der Basis vom Transistor führt beim Schaltplan zum WeMos während er beim Verdrahtungsbild zum Ritto-PCB geht und beim Kollektor-Anschluss ist es genau anders herum. Ich habe mich dann an das Verdrahtungsbild/Fotos gehalten. Das Script funktioniert auch wunderbar mit dem Home-Assistant. Für alle die es mit dem Home-Assistant verbinden wollen, kann ich auch gerne meine Configuration schicken.

    1. Moin Sebastian,

      danke für dein Feedback. Bist du sicher, dass ich da etwas vertauscht habe? Für mich sieht das recht gleich auf den Fotos und dem Schaltplan aus. Deine Home-Assistant Config würde sicherlich einigen helfen. Am besten du schickst mir die einfach per Mail (anton [ett] ju60.de), dann ergänze ich den Artikel.

    2. Hi Sebastion,

      könntest du mir bitte deine Home-Assistant Config zukommen lassen?
      christoph[at]freshhat.de
      Wäre super!

      Danke,
      Christoph

  15. Auch ich möchte mich nur kurz bedanken für das schöne Projekt. Ich habe es allerdings ein wenig abgewandelt. So verwende ich als Firmware auf dem Wemos Tasmota 6.4.1 und als Logikzentrale FHEM, das mir eine Pushnachricht über Pushover sendet. Die Tür lässt sich prima per Siri, Alexa oder Webinterface öffnen. Vielen Dank für die Inspiration!!!

  16. Danke für das teilen des Projekts. Funktioniert bei mir schon seit längerem. Leider bekomme ich immer mal wieder Fehlalarme, wenn ich die Tür öffne, wird ein “Klingeln” erkannt.

    Ich nutze folgendes Setup:

    – Über eine Transistor ist die Klingelleitung angeschlossen (D2)
    – Türöffner über Optocoupler angeschlossen (D1)
    – Zusätzlich habe ich ein Relais um den Lautsprecher ein-/auszuschalten (D3)

    Alles funktioniert. Leider habe ich wie gesagt den Fehlalarm, denke da kommt eine Rückkopplung, wenn der CMOS geschaltet wird?!

    Hat jemand ähnliche Erfahrungen gemacht? Kann ich es mit einem Relais (besser) verhindern?

    Gruß
    Georg

  17. Hallo zusammen,
    hab deine Anleitung nun auch endlich befolgt und Danke erstmal für die tolle Arbeit.

    Ich hab alles per MQTT angebunden und sehe auch alles am Broker, nun aber die Frage:
    was muss ich denn publishen, damit es ein Door-open auslöst?

    Vielen Dank
    Philipp

    1. Hallo Philipp,

      genau du sendest einfach eine “1” an “/door/switch”.
      Am besten du schaust über die Serial Konsole wie die ID von dem ESP heißt.

      Gruß Anton

    2. funktioniert tadellos! Geniale Anleitung, vielen Dank!

      Mir ist aber auch aufgefallen, was ein Kommentar davor auch schon bemerkt hat. Der Transistor ist in dem Schaltungsbild falsch eingezeichnet, da geht die Base zum WeMos. Das sollte aber zum Ritto 🙂

    3. ich hab leider doch noch eine Frage: wenn ich den Taster direkt vor der Wohnung drücke, dann kommt ein “0” im /bell/state topic:

      1. sollte da nicht ein 1 für “on” kommen
      2. wenn ich unten drücke, dann klingelt es zwar, aber es kommt gar kein state per MQTT

      Irgend eine Idee was ich falsch mache?

      LG
      Philipp

  18. Hallo zusammen, mein Haustelefon verliert scheinbar immer die Verbindung zum EIngang wenn ich das wemos anschließe. keine Ahnung warum.

    kann es sein, dass der Transistor wirklich falsch angeschlossen ist? sollte doch so sein: Collector=Wemos, base=Wemos und Emiter=gnd. oder?

    LG
    Philipp

    1. Moin Philipp,

      > […] mein Haustelefon verliert scheinbar immer die Verbindung zum EIngang wenn ich das wemos anschließe.
      > keine Ahnung warum.

      Das wird mit der schwachen Stromleistung der meisten Anlagen zusammenhängen. Probier mal den Wemos nur über USB zu powern. Habe leider auch viele Probleme (Knacken im Hörer, Teils überhaupt kein Klingel, …) deswegen gehabt. Mit einer separaten Spannungsversorgung klappt es bei mir einwandfrei. Echt schade, weil jetzt so ein dummes Kabel aus der Sprechanlage raushängt …

      > kann es sein, dass der Transistor wirklich falsch angeschlossen ist? sollte doch so sein: Collector=Wemos,
      > base=Wemos und Emiter=gnd. oder?

      Der Transistor soll ja das Klingelsignal von der Ritto Platine annehmen und dann an den Wemos geben. Dazu baut die Ritto Platine eine Spannung zwischen Basis und Emitter auf, sodass am Kollektor der angeschlossene Wemos das Signal erhält. Der Emitter wird dabei als shared Ground jeweils an einen Ground vom Wemos und von der Ritto Plantine angeschlossen. Der Widerstand an der Basis soll das ankommende Signal dabei dann noch etwas “stoppen”, sodass der Transistor nicht platt gemacht wird. Der Fritzing Schaltplan hat da also tatsächlich einen Fehler (Collector und Emitter vertauscht). Ich werde den mal anpassen. Danke für den Hinweis.

      Gruß Anton

      PS: Berichtigt mich immer gerne, wenn ich bei etwas falsch liege.

  19. Hallo Leute, ich hatte das Projekt leider nach mehreren Fehlschlägen abgebrochen da beim Klingeln von unten kein Signal erkannt werden konnte, nur wenn ich oben vor der Wohnungstür geklingelt habe. Bei mir handelt es sich um ein Ritto Twinbus System mit dem Wohntelefon 4630/01. Hat jemand eventuell das gleiche System und kann bestätigen, dass alles funktioniert? Eine Alternative konnte ich leider nicht finden (Selbst Nello One hat nicht funktioniert).

    1. Moin Rene,

      ich hatte leider auch immer wieder mal einige Probleme mit dem Empfang. Hast du mal versucht den Wemos direkt per USB zu powern (WICHTIG: vorher das Power-Shield ganz ablöten)? Das hat das System bei mir wesentlich stabiler gemacht, da das Wohntelefon einfach nicht genug Power geliefert hat. Klingelt es denn sonst ganz ohne irgendwelche Module / Zusatzgeräte bei dir ordentlich?

      Gruß Anton

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.