Hacking my door phone
Overview
The goal of this project is to:
- Detect when someone rings my doorbell.
- Trigger the buzzer for the door to the staircase.
The ringer on my doorbell makes a deeply horrible sound. It would be much better to be able to detect a ring and based on the state of my home, use some combination of:
- Playing a pleasant chime through the speakers.
- Using light signals, for example softly pulsing some LEDs.
- Sending a push notification while away.
- Just doing nothing and ignoring the whole busines.
In the current state of the project, I'm about to control the buzzer and detct when the doorbell outside the door to my flat is pressed. The remaining part is detecting when the doorbell on the street is pressed. The project started by using a Z-Wave relay to detect the buzzer and then used ESPHome for the ring detection, but will move to ESPHome to keep everything in one single unit.
A very useful and interesting project is ESPBell-LITE
.
I replied to a /r/homeautomation thread on Reddit where someone else was working on a similar project.
Siedle HTS-711
Filename | |
---|---|
Systemhandbuch 1+n-Technik | Systemhandbuch_1+n-Technik_2019_210009634-00_DE.pdf |
Bitron 1+n datasheet | bitron_1_n_datasheet.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.
Manuals for other similiar Siedle 1+n systems
Filename | |
---|---|
HTS 811-0 Infosheet (multilang) | HTS_811-0_200035398-00_PI.pdf |
HTA 711-01 Manual (english) | hta_71101.pdf |
HTA 711-01 Infosheet (multilang) | hta_71101-1.pdf |
ZTMO 711 Secondary signal unit | ZTMO_711-0_16_032971_PI.pdf |
ZT-711 Table-top mount (wiring) | ZT_711-0_4_015143_PI.pdf |
ZT-711 more wiring diagrams | ZT_711-01_16_032963_PI--.pdf |
HTC-711 Ciruit board manual | HTC_711-0_115317_PI.pdf |
Terminals
As per the datasheet and wiring digarams from Siedle2 (on pages 3-6), the pinout is:
Pin | Function | Notes |
---|---|---|
ERT | Etagenruf | Doorbell at apartment door. |
7 | Ca to 1 . | |
1 | ||
15 | ||
16 | Not connected. |
In den Plänen liegt die gemeinsame Ader an Klemme 1 und die Rufader "n" an Klemme 7. Beide Adern müssen im gleichen Kabel geführt werden. Klemme 7 wird im Ruhezustand über das Tasten-Modul mit Gleichspannung versorgt. Solange die Klingeltaste gedrückt wird, steigt die Spannung auf den vollen Wert an.
In the plans, the common wire is connected to terminal 1 and the call wire "n" to terminal 7. Both wires must be routed to the same cable. In the idle state, terminal 7 is supplied with DC voltage via the button module. As long as the button is pressed, the voltage increases to full potential.
Triggering the buzzer
Started on the easy part first, triggering the buzzer for the staircase door. Since the buzzer for the house door is triggered by a simple switch, all we need is a relay that we can control remotely.
Used a Fibaro FGBS-222 implant that I had on hand, which is (among other things) a relay (connected to Z-Wave JS, controlled with Home Assistant).
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.
Instead of using Z-Wave for this part, the FGB-222 will be replaced with a relay connected to an ESP32 with ESPHome that would both detect the doorbell signal and trigger the buzzer.
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.
Detecting doorbell
The ERT
header on the Siedle HTS-711 circuit board is
to the header 1
while idle and gets pulled up to around
when the doorbell for the flat door is pressed (and approx
to the header 7
).
Using a SRD-05VDC-SL-C relay that handles and and wiring it as:
Relay terminal | |
---|---|
DC+ | Doorbell 7 |
DC- | Doorbell 1 |
IN | Doorbell ERT |
NO | ESP32 GPIO ${pin_doorbell_etage} |
COM | ESP32 GND |
Then when the doorbell button (outside flat) is pressed, the relay is
triggered and the GPIO pin on the ESP is pullen down when the NO
contact is closed.
ESPHome config
Using a binary_sensor
component3:
binary_sensor:
- platform: gpio
id: doorbell_etage
name: Doorbell Etage
pin:
number: ${pin_doorbell_etage}
inverted: true
mode:
input: true
pullup: true
entity_category: ''
device_class: ''
publish_initial_state: true
We need to enable inverted
since the pin gets pulled to when
the NO
contact on the relay closes the circuit. Likewise, enable the
internal pull-up (because the relay will pull the pin down) resistor
to prevent the pin from floating.
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 |
2024-08-04 | Limited pinout |
2024-08-07 | Detecting doorbell signal for apartment door |
References
PricelessToolkit/ESPBell-LITE
: ESPHome doorbell module (can handle 1+n)
Intercom Handset Finder Tool. Referenced by ESPBell-LITE
as a resource to identify your doorbell.
Integration of my Doorbell in Home Assistant - Syralists blog: Deals with apartment unit doorbells connected in parallel to a bus and reading directly addressed messages.
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.