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

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

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.

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/
DIY Smart Door für 5 Euro (Smart Door Opener – Part 1)

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

19 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. Niklas says:

    // 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.

    • Anton Bracke says:

      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. Niklas says:

    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. Niklas says:

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

    • Anton Bracke says:

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

  5. Niklas says:

    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. Anton Bracke says:

    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. Niklas says:

    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.

    • Anton Bracke says:

      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. René says:

    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

    • Anton Bracke says:

      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. Niklas says:

    @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. René says:

    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. René says:

    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é

    • Anton Bracke says:

      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.

      • René says:

        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.

Leave a Reply

Your email address will not be published. Required fields are marked *