My personal Dahua VTO doorbell setup in Home Assistant, with no VTH or cloud dependency.
MIT License
My personal Dahua VTO doorbell setup in Home Assistant, with no VTH or cloud dependency.
While my own setup is working fine, this guide is work in progress, but I plan to explain every bit of it (even if just to myself).
I was using a fully SIP setup before, using Asterisk and the SIP card. I decided to move away because:
I could not yet get rid of Asterisk. Since I am not using a VTH, I still need Asterisk so that the doorbell can attempt to call a SIP extension.
And only in such case the button pressed event will be detected.
So, right now, until I find a better solution, I am running Asterisk just to create a dummy extension for the doorbell to call.
Another caveat is the need of Frigate. The Frigate Card has support for go2rtc running outside Frigate, but it will require you to expose your go2rtc to the internet (https://github.com/dermotduffy/frigate-hass-card/issues/1299). Theoretically it should work, but I never tried.
This is not a step-by-step guide. This is just a reference for the specific configurations of each of the components above to make it work like in the demo.
You need to install the Asterisk add-on and then add a PJSIP extension for the VTO. Also, you need a "virtual" number/extension for the VTO to call to. The VTO will later connect to Asterisk and when someone rings it, it will call such number.
The relevant Asterisk configuration files can be found at asterisk/custom
.
The VTO SIP server configuration should be as following:
Also, this is how I configure my video stream in the VTO:
It works well for me. I use the sub stream to record in Frigate.
Nothing outside of the usual. You can check Frigate docs.
The relevant section of my frigate.yaml
can be here.
Make sure the Frigate Home Assistant integration is also configured.
go2rtc runs inside Frigate in this setup. The go2rtc configuration is included in the Frigate configuration. The important thing here is to use the fix_vto_codecs.sh
script to echo
your VTO RTSP URLs.
In my case, I added such script to /config/scripts/fix_vto_codecs.sh
. Make sure it has execution permission with chmod +x /config/scripts/fix_vto_codecs.sh
, otherwise go2rtc will not be able to execute it.
The minimum version of the Frigate Card required for this setup is v6.0.0-beta.2.
The code for my dashboard with the Frigate Card configured can be found here.
My dashboard is configured to use layout-card, but you are free to make it use other dashboard types.
My Fully Kiosk Browser settings.json
can be found here. Do not forget to have the Fully Kiosk Browser Home Assistant integration configured, since it is used in the automations below.
Make sure to have the Home Assistant Dahua integration configured.
Then, everything is handled through Home Assistant automations.
I left a reference of my automations here.
You can manually pick all the ones you want, and then edit them to fit your needs.
The main one is doorbell-ringed.yaml
, which starts when someone rings the VTO and performs the necessary actions like you saw in the demo video.
For example, the first action is to cancel the call in the VTO. This is important so that 2-way audio communication can work well with go2rtc and the Frigate Card.
You will need to create two input_boolean
s as well. In my automations they are named input_boolean.doorbell_calling
and input_boolean.do_not_disturb
(suggested icon is mdi:bell-off
).
The integration also uses the ringtone.mp3
to emulate a call by playing it on the tablet. Make sure such file is in your /config/www/asterisk/
folder.
I created notification groups for my mobile devices and for my TVs to simplify my automation. If you want to do the same, it's as simple as adding this to your Home Assistant configuration.yaml
:
notify:
- name: all_phones
platform: group
services:
- service: mobile_app_phone_a
- service: mobile_app_phone_b
- name: all_tvs
platform: group
services:
- service: kitchen_tv
- service: bedroom_tv