As earlier mentioned I’m a big fan of local solutions, part because of security and knowing where your data is stored and part being ownership.
Too many times a cloud solution leads to sudden risk of privacy, data or even your devices. Last seen with Sonos excluding old devices.
Therefore I went for a local doorbell solution.
The parts I have been using is a cheap TP C100 security camera (with rtsp support) and an Aqara WXKG11LM button.
For weatherproofing I ordered this one. It’s not a perfect fit because it was ment for the TP KC100 but good enough.
The doorbell camera can also be included in a security system with rtsp. Can recommend Blue Iris and Milestone.
Adjust to your liking!
Pushover notification:
Lovelace:
camera_image: camera.main_door_cam_stream
image_click: play
entities:
- binary_sensor.main_door_camera_motion
- switch.street_lights
style: |
ha-card {
border-radius: 15px;
}
title: Main door
type: picture-glance
Camera:
- platform: ffmpeg name: Main door cam stream input: -rtsp_transport tcp -i rtsp://xxxcam:looooongpassword@ip.ip.ip.ip:port/stream1
Script:
pause_media_doorbell:
alias: Doorbell pause media
sequence:
- service: remote.send_command
entity_id: remote.living_room_hub
data:
device: xxxxxx
command: Pause
- service: remote.send_command
entity_id: remote.living_room_hub
data:
device: xxxxxx
command: Pause
hallway_ceiling1_white_flash:
alias: Hallway ceiling 1 white flash
mode: single
sequence:
- service: light.turn_on
target:
entity_id: light.hallway_ceiling_1
data:
brightness: 255
flash: long
- delay: '5'
- service: light.turn_off
target:
entity_id: light.hallway_ceiling_1
hallway_ceiling2_white_flash:
alias: Hallway ceiling 2 white flash
mode: single
sequence:
- service: light.turn_on
target:
entity_id: light.hallway_ceiling_2
data:
brightness: 255
flash: long
- delay: '5'
- service: light.turn_off
target:
entity_id: light.hallway_ceiling_2
kitchen_lamp_purple_flash:
alias: Kitchen lamp purple flash
mode: single
sequence:
- service: light.turn_on
data:
xy_color: [0.291,0.141]
brightness: 255
flash: long
entity: light.kitchen_lamp
- delay: '5'
- service: light.turn_off
data:
entity_id: light.kitchen_lamp
sofa_lamp_purple_flash:
alias: Sofa lamp purple flash
mode: single
sequence:
- service: light.turn_on
data:
xy_color: [0.291,0.141]
brightness: 255
flash: long
entity: light.sofa_lamp
- delay: '5'
- service: light.turn_off
data:
entity_id: light.sofa_lamp
living_room_lamp_purple_flash:
alias: Living room lamp purple flash
sequence:
- service: light.turn_on
data:
xy_color: [0.291,0.141]
brightness: 255
flash: long
entity_id: light.living_room_lamp
office_ceiling_white_flash:
alias: Office ceiling white flash
mode: single
sequence:
- service: light.turn_on
target:
entity_id: light.office_ceiling
data:
brightness: 255
flash: long
- delay: '5'
- service: light.turn_off
target:
entity_id: light.office_ceiling
Group:
doorbell_notification_script: name: Doorbell script entities: - script.hallway_ceiling1_white_flash - script.hallway_ceiling2_white_flash - script.kitchen_lamp_purple_flash - script.living_room_lamp_purple_flash - script.sofa_lamp_purple_flash - script.office_ceiling_white_flash
Automation:
# Doorbell notification lights and voice
- alias: Doorbell notification lights and voice
id: doorbell_notification_lights_voice
description: 'Flash lights light blue when someone presses the doorbell'
trigger:
- platform: state
entity_id: sensor.doorbell_action
to: hold
- platform: state
entity_id: sensor.doorbell_action
to: release
condition:
- condition: state
entity_id: group.all_people
state: 'home'
action:
- service: homeassistant.turn_on
entity_id: script.pause_media_doorbell
- service: rest_command.rhasspy_speak
data_template:
payload_data: "You have visitors at the main door!"
- service: scene.create
data_template:
scene_id: doorbell_notification_revert
snapshot_entities:
- light.hallway_ceiling_1
- light.hallway_ceiling_2
- light.kitchen_lamp
- light.sofa_lamp
- light.living_room_lamp
- light.office_ceiling
- light.attic_ceiling
- service: homeassistant.turn_on
entity_id: group.doorbell_notification_script
- delay: '20'
- service: scene.turn_on
data:
entity_id: scene.doorbell_notification_revert
# Doorbell notification pushover and tv
- alias: Doorbell notification_pushover_tv
id: doorbell_notification_pushover_tv
trigger:
- platform: state
entity_id: sensor.doorbell_action
to: hold
- platform: state
entity_id: sensor.doorbell_action
to: release
condition: []
action:
- choose:
# Tv off
- conditions:
- condition: and
conditions:
- condition: state
entity_id: remote.living_room_hub
state: 'off'
sequence:
- service: timer.cancel
entity_id: timer.doorbell
- service: timer.start
entity_id: timer.doorbell
- service: camera.snapshot
data:
entity_id: camera.main_door_cam_stream
filename: '/config/www/snapshots/main_door_camera_snapshot.jpg'
- service_template: notify.pushover
data_template:
title: "Doorbell rang!"
message: "Visitors at the main door!"
data:
attachment: /config/www/snapshots/main_door_camera_snapshot.jpg
html: "1"
sound: "bike"
# User home and tv on
- conditions:
- condition: and
conditions:
- condition: state
entity_id: group.all_people
state: 'home'
- condition: state
entity_id: remote.living_room_hub
state: 'on'
sequence:
- service: timer.cancel
entity_id: timer.doorbell
- service: timer.start
entity_id: timer.doorbell
- service: camera.snapshot
data:
entity_id: camera.main_door_cam_stream
filename: '/config/www/snapshots/main_door_camera_snapshot.jpg'
- service: notify.living_room_media_center
data_template:
title: "Doorbell rang!"
message: "Visitors at the main door!"
data:
duration: 15
font-size: max
transparency: 50%
position: bottom-right
image:
path: "/config/www/snapshots/main_door_camera_snapshot.jpg"
- service_template: notify.pushover
data_template:
title: "Doorbell rang!"
message: "You have visitors at the main door!"
data:
attachment: /config/www/snapshots/main_door_camera_snapshot.jpg
html: "1"
sound: "bike"

