The end of this year I wanted to finally get a video doorbell that I could hook up to home-assistant.
I had a few requirements:
- The doorbell would be able to operate completely offline, with no cloud services. This is partially because the big companies have started handing over your videos without a warrent or your permission if asked, which is ripe for both official and non-official abuse
- There was home-assistant integration, with video stream and doorbell button integration
- Didn't break the bank
The Options
Because of the requirements, that quickly ruled out a lot of the mainstream doorbells. What was left, was two options:
The Eufy Doorbell with Home Base
The Eufy was a contender because of its features, but spoiler alert -- I ultimately went with the Amcrest.
Pros:
- Locally hosted, with storage in base station
- Decent app, got good reviews
- Home assistant integration (Though lacking some features)
- Base station can act as chime
Cons:
- Base station storage is encrypted in a way that only the app can access
- Video streaming to HA seemed hacky at best, and a lot of forum posts seemed to suggest it didn't work (at time of writing)
Amcrest AD410 (or AD110)
Ultimately I landed on the Amcrest AD410. Though it had its own drawbacks, the pros outweighted the cons for me.
Pros:
- RTSP stream and working home-assistant integration (Though more on that later)
- Decent app that's easy to access, as long as you're okay with it having internet access
Cons:
- Could only wire up to an existing chime, which I didn't have.
- Work-around: I opted for using home-assistant to send a text and chime with my google home's
- Storage was in the doorbell itself (SD Card), so if stolen, storage gone too.
- Work-around: At least it's encrypted, and I worked around that by using home-assistant to store images elsewhere
A Note on Hookup
One thing that made me nervous online was a lot of reviews claiming if you wired it up wrong, you'd end up shorting and breaking it. A lot of this had to do with if you wired it directly to the doorbell transformer, and during the install process, set up a chime (either analog or digital). This ultimately caused the button to create a short and it'd fry.
When I installed it, they had made the app a lot clearer. By default, it didn't even have you set up a chime. Just be careful, and don't set up a chime if you don't have one!
The Software
First Try
When I started, I first used amcrest2mqtt. This worked for a while, but I noticed it would have a weird bug where after a while it would disconnect some fetures (eg. the doorbell-button press) and then fail to reconnect. This was obviously frustrating because, with my setup, it basically meant the doorbell had stopped functioning as a doorbell.
I did dig into the code a bit, but I suspected that if the core async loop threw an exception it'd stop the loop but not the application, so it wouldn't auto-restart. I'm not super familiar with python's asyncio
, so I wasn't sure.
Write my Own
I took this as an opportunity to reverse engineer the above and write something in go, which I hoped was more stable. This led to ha-adapters to connect devices to MQTT, and ultimately home-assistant.
After install and setup, there should be various sensors that show up on home-assistant immediately, with the exception of the RTSP camera which needs to be set up in the UI.
At this point, it's been running for several months with no issues.
Conclusion
At this point, I'm stil happy with the AD410. It's weather about a year in the Northeast US (Cold), and with one exception when it dropped below 10F, has worked fine. Human and motion detection works great, and I have it hooked up to my home-assistant instance in various ways.