Hacking my door phone

Overview

FilenameFilename
Doorbell datashsheet and wiring diragramsSystemhandbuch_1+n-Technik_2019_210009634-00_DE.pdf
Fibaro FGBS-222FGBS-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

DateComment
2023-03-08Connected the buzzer to Fibaro FGBS-222 and HA
2023-09-08Added example YAML config for HA
2024-01-30Added PDF for FGBS-222 manual

References

12

ESPHome DC sensor components: INA219 (current), INA260 (current and power).

13

SSS Siedle HTA 811 - Door Phone - Home Assistant forum, similar project but uses the DC-powered HTA series from Siedle.

14

Reply from Fallingaway24 to "How to smartify my intercom?" - Home Assistant forum, gives a good high-level overview of the general approach.