---
title: Door bell
description: 
published: 1
date: 2024-03-03T21:33:41.160Z
tags: 
editor: markdown
dateCreated: 2024-03-02T02:22:57.232Z
---


# Requirements
- using Bluetooth or WiFi or Zigbee
- forwarding ringing of door bell
- opening of door
- Home Assistant connection
- smartphone app?
- physical reset button



# Current system
Siedle ht 511-01




# Manufacturer solution
https://www.siedle.de/de-de/produkte/iq-hts-siedle-iq-hts/
https://www.youtube.com/watch?v=DIXJsIaVCGQ




# Arduino-based solution
https://www.reichelt.de/magazin/projekte/smarte-tuerklingel/
https://rhfeinmechanik.de/blog/2022/07/25/klingelarduino-turklingel-an-fritzbox-mit-arduino/
https://www.az-delivery.de/en/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/smartgong-teil-1
https://www.mikrocontroller.net/topic/460394
https://www.videosprechanlagen.info/Kann-man-Klingeldraht-verlaengern
https://www.mikrocontroller.net/topic/533047
https://forum.arduino.cc/t/wlan-klingel-mit-esp8266-fur-fritzbox/589769



## Preferred solution

===https://www.panbachi.de/smarte-tuerklingel-alte-sprechanlage-smart-machen/===


### BOM
Wemos D1 mini --> can use wemos esp32-c3 mini
Relay Shield für den Wemos D1 mini
https://www.reichelt.de/d1-shield-relais-d1z-relais-p266083.html?&trstct=pos_2&nbc=1
Tripler Base für den Wemos D1 mini
https://www.reichelt.de/d1-shield-tripple-base-d1z-tripple-base-p266084.html?&trstct=pos_6&nbc=1
LM2596 DC-DC Step-down
https://www.reichelt.de/entwicklerboards-spannungsregler-dc-dc-wandler-lm2596-debo-dcdc-down-2-p282579.html?&trstct=pos_4&nbc=1
B80C800DM Brückengleichrichter
PC814 Wechselstrom Optokoppler (Vor den Optokoppler habe ich noch einen 1k Widerstand geschaltet)
https://www.reichelt.de/optokoppler-pc-824h-p76185.html?&trstct=pos_0&nbc=1



![awrfianhüu9wrfnh9t3qß8fni3qn4rt.png](/pictures/awrfianhüu9wrfnh9t3qß8fni3qn4rt.png)
![sdgsregpinjw540tgj8meaioufg083qhf.png](/pictures/sdgsregpinjw540tgj8meaioufg083qhf.png)
![schaltung_ausgebaut-1024x768.jpg](/pictures/schaltung_ausgebaut-1024x768.jpg)
![schaltung_verbaut-1024x768.jpg](/pictures/schaltung_verbaut-1024x768.jpg)
![relay-1024x768.jpg](/pictures/relay-1024x768.jpg)
![adfsafcbwazfg643782qfgz3wq4fr.png](/pictures/adfsafcbwazfg643782qfgz3wq4fr.png)
![adadwqed823e23re2d23qrf2g3.png](/pictures/adadwqed823e23re2d23qrf2g3.png)
![adf62643rgdzbvg67243rg7cgaqwegfsahbvv.png](/pictures/adf62643rgdzbvg67243rg7cgaqwegfsahbvv.png)




### Code

```
//DoorBell.ino
#include <Homie.h>

int readDelay = 50;
int buttonPressDelay = 3000;
int openingDelay = 3000;
int inputPin = D3;
int relayPin = D1;
int inputValue = 0;
bool opened = false;
int timeOpened = 0;

HomieNode doorbellNode("button", "button");
HomieNode openerNode("switch", "switch");

boolean openerHandler(const HomieRange& range, const String& value) {
  if(value != "true" && value != "false") return false;

  if(value == "true") {
    digitalWrite(relayPin, HIGH);
    openerNode.setProperty("on").send("true");
    Serial.println("Opener started ...");
    opened = true;
    timeOpened = millis();
  }

  return true;
}

void loopHandler() {
  inputValue = digitalRead(inputPin);

  digitalWrite(BUILTIN_LED, inputValue);

  if(inputValue == 0) {
    Serial.println("Doorbell pressed ...");
    doorbellNode.setProperty("pressed").send("true");
    delay(buttonPressDelay);
    doorbellNode.setProperty("pressed").send("false");
  }

  delay(readDelay);
}

void setup() {
  Serial.begin(115200);
  Serial.println();

  pinMode(inputPin, INPUT_PULLUP);
  pinMode(BUILTIN_LED, OUTPUT);
  pinMode(relayPin, OUTPUT);
  
  digitalWrite(relayPin, LOW);

  Homie_setBrand("doorbell");
  Homie_setFirmware("Doorbell", "1.0.0");

  openerNode.advertise("on").settable(openerHandler);
  Homie.setLoopFunction(loopHandler);

  Homie.setup();
}

void loop() {
  int timeNow = millis();

  if(timeOpened > 0 && (timeNow - timeOpened) > 3000) {
    Serial.println("Close ...");
    Serial.println(timeNow);
    Serial.println(timeOpened);
    timeOpened = 0;

    digitalWrite(relayPin, LOW);
    openerNode.setProperty("on").send("false");
    Serial.println("Opener finished ...");
  }

  Homie.loop();
}
```

Die dazugehörige config.json würde wie folgt aussehen:

```
{
  "name": "Doorbell",
  "device_id": "c01",
  "wifi": {
    "ssid": "[SSID]",
    "password": "[PASSWORD]"
  },
  "mqtt": {
    "host": "192.168.178.54",
    "port": 1883,
    "base_topic": "doorbell/",
    "auth": true,
    "username": "homeassistant",
    "password": ""
  },
  "ota": {
    "enabled": true
  }
}
```

Zum Thema Homie und Wemos D1 mini werde ich noch einen weiteren Artikel schreiben.

Anbindung an Home-Assistant
```
#configuration.yaml
mqtt:
  embedded:
binary_sensor:
  - platform: "mqtt"
    name: intercom_bell
    state_topic: "doorbell/c01/button/pressed"
    payload_on: "true"
    payload_off: "false"
    device_class: "sound"
    retain: true
switch:
  - platform: mqtt
    name: intercom_opener
    state_topic: "doorbell/c01/switch/on"
    command_topic: "doorbell/c01/switch/on/set"
    payload_on: "true"
    payload_off: "false"
    retain: true
    icon: mdi:lock
#customize.yaml
binary_sensor.intercom_bell:
  friendly_name: Klingel
switch.intercom_opener:
  friendly_name: Türöffner
```

Regeln für Telegram
```
#automation.yaml
- alias: 'Telegram Bot: Benachrichtige über klingeln'
  trigger:
    platform: state
    entity_id: binary_sensor.intercom_bell
    from: 'off'
    to: 'on'
  action:
    - service: telegram_bot.send_message
      data_template:
        message: 'Es klingelt an der Tür'
        disable_notification: true
        inline_keyboard:
          - "Tür öffnen:/open_door"

- alias: 'Telegram Bot: Öffne die Tür'
  trigger:
    platform: event
    event_type: telegram_callback
    event_data:
      data: '/open_door'
  action:
    - service: telegram_bot.edit_replymarkup
      data_template:
        message_id: 'last'
        chat_id: '{{ trigger.event.data.chat_id }}'
        inline_keyboard: []
    - service: telegram_bot.send_message
      data_template:
        target: '{{ trigger.event.data.user_id }}'
        message: 'Die Tür wird geöffnet'
        disable_notification: true
    - service: switch.turn_on
      entity_id: switch.intercom_opener
```










