--- 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 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 ```