Cheap wireless doorbells transmit a simple code on 433 MHz. An ESP32 with a receiver picks it up and the doorbell press reaches Home Assistant – for example as a notification on the phone.
The components and pins below are a typical choice; specific modules may differ.
Components
- ESP32-C3;
- a superheterodyne 433 MHz receiver, the RX470C – more sensitive and stable than the cheap XY-MK-5V, and it ships with an antenna;
- antenna: included with the RX470C; for longer range you can instead use a wire about 17.3 cm long (a quarter wavelength for 433.92 MHz).
Wiring
1. Capturing the code
The doorbell code can be found with a sketch in the Arduino framework using the rc-switch library (the ReceiveDemo_Advanced example), which prints the code, length and protocol. ESPHome with dump: rc_switch works just as well.
2. ESPHome configuration
remote_receiver:
pin: GPIO4
dump: rc_switch
tolerance: 50%
filter: 250us
idle: 4ms
buffer_size: 2kb
binary_sensor:
- platform: remote_receiver
name: 'Doorbell'
rc_switch_raw:
code: '100010000000000010111110' # example - code from your own capture
protocol: 1
filters:
- delayed_off: 1sThe doorbell sends its code repeatedly and only briefly; delayed_off turns that into one clean press.
3. Home Assistant
The “Doorbell” binary sensor appears through the ESPHome integration. An automation triggered when it turns on can send a phone notification, switch on a light or log the event.
Things to watch out for
- The 433 MHz band is busy;
filterandtolerancehelp against false presses. - Place the receiver away from sources of interference (power supplies, the Wi-Fi router).