docs: update klingel

This commit is contained in:
admin_bora 2024-03-03 17:09:36 +01:00 committed by admin_bora
parent 9f43677681
commit 50e859b46a
1 changed files with 177 additions and 1 deletions

View File

@ -2,7 +2,7 @@
title: Door bell
description:
published: 1
date: 2024-03-03T16:06:03.702Z
date: 2024-03-03T16:09:33.767Z
tags:
editor: markdown
dateCreated: 2024-03-02T02:22:57.232Z
@ -54,6 +54,182 @@ https://forum.arduino.cc/t/wlan-klingel-mit-esp8266-fur-fritzbox/589769
## 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
```