Archive

Smart Intercom

More than a year ago I was looking for a solution to integrate our intercom with Home Assistant. Back then nello seemed to be the only option that works with the most popular intercom in Switzerland the Koch AG TC Bus system.

Together with mensi I started do some research. Since there is not a lot of information available we quickly hooked up an oscilloscope to the intercom. The following shows a which is the signal line measured against b which is ground. The measured signal shows the open the outside door command.

alt text

While we were curious how the protocol works I did not want to decode the full protocol since I just needed to understand it enough to detect the signal sent when someone rings my apartment and be able to dispatch the 'open the door' command. To get started with recording the signal I designed a circuit that level-converted this the 9-24V to 0-3.3V and also allows to pull down the bus to 9V for active signaling. The schematic used is available through easyeda but the PCB is outdated and I needed to be creative with fixing my already ordered PCBs.

alt text

To integrate this with Home Assistant I used ESPHome and specifically the remote receiver and transmitter components. Using dump: raw I dumped all the signals and identified which ones I need. Then using the receiver and transmitter with the previously gathered raw signal I was able to successfully open the door and detect when ever the door bell signal was sent.

remote_receiver:
  pin:
    number: GPIO5
    inverted: true
    mode: INPUT
  dump:
    - raw
  idle: 7ms

remote_transmitter:
  pin: GPIO4
  carrier_duty_percent: 100%

switch:
  - platform: template
    name: Open Door
    turn_on_action:
      remote_transmitter.transmit_raw:
        code: [6463, -4387, 2142, -2208, 2142, -4387, 2142, -2207, 2142, -2213,
               4318, -2207, 2142, -4388, 2142, -4382, 2142, -2208, 2142, -2207,
               2142, -2212, 4318, -4382, 2142, -4392, 4319, -2207, 2142, -2207,
               2142, -2207, 2142, -2199, 4330]
binary_sensor:
  - platform: remote_receiver
    name: "Klingel"
    raw:
      code: [6000, -4000, 2000, -2000, 2000, -2000, 2000, -2000, 2000, -2000,
             4000, -2000, 2000, -4000, 2000, -4000, 2000, -2000, 2000, -2000,
             2000, -2000, 4000, -4000, 2000, -4000, 4000, -2000, 2000, -2000,
             2000, -2000, 2000, -2000, 2000]

Having this integrated with Home Assistant gives me some interresting options. To start with when we expect visitors we enable an automation that will automatically let people in once they ring the doorbell. We do not yet have a good solution on how to open the door from outside without opening Home Assistant but I have several ideas on how to achieve that.