This is an old revision of the document!
The motivation of this project is to implement a device that improves an usual doorbell.
When a visitor at the door presses the doorbell button, the device will send a notification the owner's phone with a link to the video streaming page where the owner can see the person at the door from anywhere in the world.
The owner can choose to answer the visitor with a few pre-recorded voice responses which are played through the doorbell, such as “Someone is coming at the door”, “No one can come at the door”, “Someone is coming to the door in 5 minutes”.
For the hardware part, an ESP32-CAM module is used for sending the live video stream. For transmitting the pre-recorded responses, I will use a DF-Player mini with a microSD card and a speaker.
The doorbell is controlled through Home Assistant, along with ESPHome.
For creating the doorbell, I used the following components:
In order for the Doorbell to work as expected, the software configuration created is shown in the figure below:
I successfully configured Home Assistant with Nabu Casa Cloud, ensuring accessibility and control of the Smart Doorbell from the web browser and mobile phone as well. In this project, Home Assistant is used for receiving the notification with the live camera stream whenever someone presses the doorbell and to answer the doorbell with the desired response.
The automations shown in the image contribute to the proper functionality of the device:
handle_doorbell_press: sequence: - service: esphome.doorbell_dfplayer_play data: file: 4 - service: esphome.doorbell_switch_turn_on - service: notify.notify data: message: "Check the livestream" title: "Someone is at the door!" data: entity_id: camera.doorbell_camera clickAction: "lovelace/camera-view" - delay: '00:00:05' - service: notify.mobile_app_Stefania data: message: "Choose a response:" data: actions: - action: 'someone_is_coming' title: 'Someone is coming' - action: 'no_one_is_coming' title: 'No one is coming' - action: 'will_come_in_5_minutes' title: 'Will come in 5 minutes
play_someone_is_coming:
sequence:
- service: esphome.doorbell_dfplayer_play
data:
file: 3
- delay: '00:00:05'
- service: esphome.doorbell_switch_turn_off
play_no_one_can_come:
sequence:
- service: esphome.doorbell_dfplayer_play
data:
file: 1
- delay: '00:00:05'
- service: esphome.doorbell_switch_turn_off
play_will_come_in_5_minutes:
sequence:
- service: esphome.doorbell_dfplayer_play
data:
file: 2
- delay: '00:00:05'
- service: esphome.doorbell_switch_turn_off