DIY Smart Doorbell with Android notifications


My new doorbell. Note that it is completely protected from the elements so I could go for a wood-based finish

This is the successor of DoorDroid, as I was unable to get good 2-way audio from the mobile at the door even with an external microphone as you cannot select which microphone to use during audio calls in Android.

Features:

  • Video feed from the Doorbell
  • Two-way audio calling
  • Rings on Sonos speakers through the house
  • WhatsApp integration
  • Lovelace integration
  • Goes to silent mode at 20:00 hours when the kids go to bed so it only rings in the living room, not the complete house
  • Goes off completely at night

So, my new setup uses:

  • Raspberry Pi 3
  • Fisheye camera
  • RaspiAudio Mic+

Do note that this was one of my most challenging projects, if I would count my hours, I think it would be the most-expensive doorbell ever :grinning:. The 2-way audio is not great but understandable. The sound quality is very good at the doorbell but at my indoor station it could still be improved.

If there is enough interest, I can make an instructable on how to make it.

20 Likes

Kind of crazy to think there wouldnā€™t be :wink:

Yes please. I canā€™t believe I would be the only one interested in this. Even if it turns out not to be a suitable project for me Iā€™m very interested in the detailsā€¦

3 Likes

Would love to know how you made it

Yes, instructable, please!

Nice projet! I was planning to build something similar. I was researching of how to do the two way audio. Do you use WhatsApp audio calls? I was looking at the telegram api and webrtc. So instructable/sharing your code would be very nice!

Parking here first for further update

@iOtMy Am I right in thinking that your post is so that additions to this subject get flagged to you? If so, did you know that if you scroll to the bottom of a topic and click on the button you can change it to ā€˜Trackingā€™ which is the same state it goes to when you post?


Sorry that this was a bit off topicā€¦

1 Like

Also use the doorbird, made a custom frontplate for it but the audio is just really bad. In the end the camera is bad too. The only thing i actually still use is the motion sensor and the WAF part since she can just use the doorbird app and see someone and click on the key to open the door. But for now it will do.

In reality, how often do you use audio? Since by the time i get my app out or whatever to talk to the person i could have just gone towards the door. I only used it if i had a package to ā€˜drop it around the cornerā€™ when i knew the post guy.

Here is the link to the Instructable (ps, sorry for the bad code highlighting in the instrucable, I gave up after half an hour trying to format it nicely)

5 Likes

do these instructions contain on how to integrate it with whatsapp?

This is done in the doordroid package.

Use the tutorial here on the forum on how to setup WhatsApp.

I need to look for it as WhatsApp is not straightforward.

Note: the WhatsApp integration is not that great. Long story short, you only get a customized message like ā€˜there is someone at the doorā€™ the first 24 hours. After that, twilio requires you to use a predefined template and the message is not sent.
I now went for html5 notifications. Letā€™s see how that goes.

2 Likes

If anybody wants to build such a doorbell together, always welcome in Tienen, Belgium. Looking forward to share tips and tricks!

2 Likes

I should come over and check it out as Tienen is a 10min bike ride :slight_smile: would definitely like something like this but I donā€™t know if thereā€™s room enough at my front door to mount everything.

I was thinking of setting up something like an open-garage once a month. Have a beer and tinker on some stuff (home assistant, diy fire detector, smart doorbell, machine learning thermostat, ā€¦).

So, Always welcome! If you want to do so, drop me a note what days would fit you (either some evening this week or somewhere in August as weā€™re expecting a new-born and I hope things have settled by then). Itā€™s more fun to tinker with 2 than alone!

Wonderful project. And congrats on the panel aesthetic design! Usually we tinkerers forget about that part :smile:

What an amazing project. I was wondering rather than using a Pi3 if it would be possible to use a https://docs.espressif.com/projects/esp-adf/en/latest/get-started/get-started-esp32-lyrat.html as well as a ESP32 with camera?

I quickly did some research and I donā€™t think so: currently the board does not support webrtc which is needed for the two way audio and the aec.

I upvoted an issue about it: https://github.com/espressif/esp-adf/issues/17#issuecomment-515752787

Hi,

I started building the doorbell. As I am using a Pi 4 (has anybody an idea if a zero could deal with the video stream?) I had to overcome some compatibility issues with libssl and openssl first. I will show that here as it took me hours:

libssl and openssl are not compatible in the buster release. There is a /etc/ssl/openssl.cnf that confuses libssl and leads to something simmilar like this in the syslog when trying to start uv4l:

140099788864256:error:25070067:DSO support routines:DSO_load:could not load the shared library:dso_lib.c:233:
140099788864256:error:0E07506E:configuration file routines:MODULE_LOAD_DSO:error loading dso:conf_mod.c:271:module=ssl_conf, path=ssl_conf
140099788864256:error:0E076071:configuration file routines:MODULE_RUN:unknown module name:conf_mod.c:212:module=ssl_conf

Most people on the net where able to solve the problem for their app by using export OPENSSL_CONF=/etc/ssl or OPENSSL_CONF=/dev/null

This was not working for me at all. Solution: rename /etc/ssl/openssl.cnf to .bak. I might need to rename it back when I want to use OpenSSL to do something again, but for now everything is working and uv4l starts. Figured this out after hours and combining all the other information. Many users of many applications suffer this right now while using Buster and I think some current Ubuntu, too :slight_smile: The point is that the .cnf file is not needed at all for the module, it is just a standard search path to check IF there is a config file. And there it finds the incompatible one and crashes.

Next:

I configured the uv4l-raspicam.conf like described, but I added

server-option = --webrtc-receive-audio=yes

After adding that, when browsing to https://myhost:9090 and clicking on WebRTC and there on ā€œCallā€ I got two way audio working with my USB Mic (PS3 Eye) and a speaker on the headphone jack on the Pi and my Browser.

I then copied the doorpi demo files found here, edited the index.html to take the video file from my host instead yours and when I brwose to https://myhost:8888 I get a side with a field for an URL, Accept and Decline Button and my video image. The video is working great but I get no voice communication when I click on Accept.

Any idea what I could check or where I could find a log that gives me a hint? What is the correct entry for the URL field? What is the expected behaviour? Do I have to change the .js files?

Thanks in advance for any help!