Hacking my door phone
Overview
Filename | Filename |
---|---|
Doorbell datashsheet and wiring diragrams | Systemhandbuch_1+n-Technik_2019_210009634-00_DE.pdf |
Fibaro FGBS-222 | FGBS-222-T-EN-rev.1.2.6.pdf |
The intercom/buzzer/door-phone in my flat is a Siedle HTS 711-011 and I want to be able to programmatically press the the button triggering the lock downstairs in my building as well as sense when someone rings the doorbell.
Background
The ringer also makes a deeply horrible sound when some rings my bell, the next part for this project is to sense the ring signal when this happens, and play an actually pleasant sound instead. Being able to automate and schedule when it is on/off based on the rest of the state of my flat will also be nice. But I started with the easy part, triggering the door unlocking.
I replied to a /r/homeautomation thread on reddit where someone else was working on a similar project.
Triggering the buzzer
Since the buzzer for the house door is triggered by a simple switch, all we need is a relay that we can control remotely. I personally mainly use Z-Wave (with Z-Wave JS) devices, controlled with Home Assistant.
I used used a Fibaro FGBS-222 implant that I had on hand, which is (among other things) a relay.
This is a really simple switch, it just closes a circuit which triggers the buzzer. I soldered wires to each end of the open side of the circuit that the button closes, and use one of the relay contacts on the FGBS-222 to close it.
Home Assistant templating
Configuration for Home Assistant can be found at infra:roles/hass-core/files/packages/doorbell.yaml
:
---
script:
momentary_switch:
icon: mdi:button-pointer
mode: parallel
sequence:
- service: switch.toggle
target:
entity_id: |
{{ target_switch }}
- delay:
milliseconds: |
{{ press_for_ms | int }}
- service: switch.toggle
target:
entity_id: |
{{ target_switch }}
fields:
target_switch:
description: |
entity_id of the switch to toggle like
a button (a list of entity_id's also works)
example: switch.smart_implant_out1
press_for_ms:
description: |
how long to press the button, in
milliseconds
default: 200
template:
- binary_sensor:
- name: doorbell_buzzer
state: |
{{ is_state("switch.doorbell_buzzer", "on") }}
icon: |
{% if is_state("switch.doorbell_buzzer", "on") %}
mdi:electric-switch-closed
{% else %}
mdi:electric-switch
{% endif %}
- button:
name: doorbell_buzzer
icon: |
{% if is_state("switch.doorbell_buzzer", "on") %}
mdi:electric-switch-closed
{% else %}
mdi:electric-switch
{% endif %}
press:
- service: script.momentary_switch
data:
target_switch: switch.doorbell_buzzer
press_for_ms: 200
This assumes that the switch
entity on the FGBS-222 module is named
switch.doorbell_buzzer
, and creates a button.doorbell_buzzer
entity that
triggers the relay.
CHANGELOG
Date | Comment |
---|---|
2023-03-08 | Connected the buzzer to Fibaro FGBS-222 and HA |
2023-09-08 | Added example YAML config for HA |
2024-01-30 | Added PDF for FGBS-222 manual |
References
ESPHome DC sensor components: INA219 (current), INA260 (current and power).
SSS Siedle HTA 811 - Door Phone - Home Assistant forum, similar project but uses the DC-powered HTA series from Siedle.
Reply from Fallingaway24 to "How to smartify my intercom?" - Home Assistant forum, gives a good high-level overview of the general approach.