{"id":670,"date":"2022-07-11T20:15:22","date_gmt":"2022-07-11T18:15:22","guid":{"rendered":"https:\/\/blog.r00x.at\/?p=670"},"modified":"2022-10-01T08:35:13","modified_gmt":"2022-10-01T06:35:13","slug":"silent-doorbell","status":"publish","type":"post","link":"https:\/\/blog.r00x.at\/?p=670","title":{"rendered":"Silent Doorbell"},"content":{"rendered":"\n<p>Da ich grunds\u00e4tzlich die Glocke der Gegensprechanlage abgedreht habe, war dennoch die \u00dcberlegung zu loggen, wenn und wann jemand anleutet.<\/p>\n\n\n\n<p>Um dies weiter auszubauen war angedacht dies auch zu visualisieren. Somit k\u00f6nnte ich trotzdem reagieren, ohne den schrecklichen Ton der Glocke h\u00f6ren zu m\u00fcssen (den im \u00fcbrigen auch die Person h\u00f6rt die anleutet).<\/p>\n\n\n\n<p>Zun\u00e4chst war es n\u00f6tig die Gegensprechanlage zu analysieren. Gl\u00fccklicherweise fand ich einen Schaltplan, wie diese verkabelt ist. Diesen habe ich bereits ben\u00f6tigt um den T\u00fcr\u00f6ffner mit einer 433 MHz Fernbedienung zu schalten und um die Glocke zu unterbrechen. Den <a rel=\"noreferrer noopener\" href=\"http:\/\/blog.r00x.at\/wp-content\/uploads\/2022\/07\/Urmet-1130-Intercom-Handset-Data-Sheet.pdf\" target=\"_blank\">Schaltplan<\/a><a rel=\"noreferrer noopener\" href=\"http:\/\/blog.r00x.at\/wp-content\/uploads\/2022\/07\/Urmet-1130-Intercom-Handset-Data-Sheet.pdf\" target=\"_blank\"> <\/a><a rel=\"noreferrer noopener\" href=\"http:\/\/blog.r00x.at\/wp-content\/uploads\/2022\/07\/Urmet-1130-Intercom-Handset-Data-Sheet.pdf\" target=\"_blank\">gibt es hier.<\/a><\/p>\n\n\n\n<p>Nun war die Idee, die Klingel auf einen Input eines ESP8266 zu legen. Sobald dort eine Pegel\u00e4nderung erkannt wird, soll der ESP sein Programm ausf\u00fchren. Hierf\u00fcr steuer ich einen Ledstreifen im WZ an, welcher mit <a rel=\"noreferrer noopener\" href=\"https:\/\/kno.wled.ge\/\" target=\"_blank\">WLED<\/a> l\u00e4uft. WLED unterst\u00fctzt eine <a rel=\"noreferrer noopener\" href=\"https:\/\/kno.wled.ge\/interfaces\/http-api\/\" target=\"_blank\">HTTP Request API<\/a>. Somit muss der ESP nur ein paar Befehle per http an den Controller mit WLED senden. Zus\u00e4tzlich ist es nice to have, dass man am Handy eine Benachrichtigung bekommt. So kann man sicher sein, ob z.B. der Zustelldienst angeleutet hat oder nicht. Deshalb habe ich noch den <a rel=\"noreferrer noopener\" href=\"https:\/\/www.callmebot.com\/blog\/free-api-whatsapp-messages\/\" target=\"_blank\">CallMeBot f\u00fcr Whatsapp<\/a> hinzugef\u00fcgt. Dieser Dienst sendet mir eine Whatsapp Nachricht an mein Smartphone, sobald die Klingel gedr\u00fcckt wurde.<\/p>\n\n\n\n<p>Da die Klingel mit Wechselspannung versorgt wird, musste ich noch einen Br\u00fcckengleichrichter und ein Relais hinzuf\u00fcgen, um 1. die Pegel\u00e4nderung mit dem Relais zu realisieren, 2. von der Gegensprechanlage galvanisch getrennt zu sein und 3. das Gleichspannungsrelais bei Tastendruck korrekt zu versorgen.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"http:\/\/blog.r00x.at\/wp-content\/uploads\/2022\/07\/IMG_20220711_193709-scaled.jpg\" alt=\"\"\/><\/figure>\n\n\n\n<pre class=\"prettyprint\">#include <ESP8266WiFi.h>\n\nconst char* ssid = \"WLAN Name\";\nconst char* password = \"WLAN Passwort\";\nconst char* host = \"192.168.0.6\";        \/\/IP von WLED\nconst char* host2 = \"api.callmebot.com\"; \/\/ Domain vom callmebot\n\nconst int buttonPin = D6;           \/\/Pin am ESP wo der Taster mit 10k gegen Ma\u00dfe geschalten ist\nint buttonState = LOW;              \/\/Pin ist zu Begin LOW\nint lastButtonState = LOW;          \/\/Variable lastButtonState ist zu Begin LOW\n\nunsigned long lastDebounceTime = 0; \/\/ last toggle\nunsigned long debounceDelay = 50;   \/\/ debounce time\n\nvoid setup() {\n  Serial.begin(115200);\n  delay(10);\n  WiFi.begin(ssid, password);\n  while (WiFi.status() != WL_CONNECTED)\n  {\n    delay(500);\n    Serial.print(\".\");\n  }\n  IPAddress local_IP(192, 168, 0, 50); \/\/ Fixe IP Adresse des ESP\n  IPAddress gateway(192, 168, 0, 1);   \/\/ Gateway(IP des Modems \/ Routers)\n  IPAddress subnet(255, 255, 255, 0);    \/\/ Subnetzmaske f\u00fcr den ESP\n  WiFi.config(local_IP, gateway, subnet);\n}\n\nint vartest = 0;   \/\/Variable um das Licht ein paar mal auf und abzudrehen siehe while Schleife\n\nvoid loop() {\n  int reading = digitalRead(buttonPin); \/\/read\n\n  if (reading != lastButtonState) \/\/ If the switch changed\n  {\n    lastDebounceTime = millis();  \/\/ reset the debouncing\n  }\n  \/\/check if debounce time > 50ms\n  if ((millis() - lastDebounceTime) > debounceDelay)\n  { if (reading != buttonState)\n    { buttonState = reading;\n      if (buttonState == LOW)\n      {\n        Serial.println(\"button pressed\");\n        SendDispatch();\n      }\n    }\n  }\n  lastButtonState = reading;       \/\/ save the reading\n  vartest = 0;\n}\n\n\nvoid SendDispatch() {\n  WiFiClient client;\n  const int httpPort = 80;\n\n  if (!client.connect(host2, httpPort)) {\n    return;\n  }\n\n  String url2 = \"\/whatsapp.php?phone=+436641234567&text=...knock,%20knock,%20knock&apikey=111111\";\t\/\/ Telefonnummer; Textnachricht und API Key \u00e4ndern\n  client.print(String(\"GET \") + url2 + \" HTTP\/1.1\\r\\n\" + \"Host: \" + host2 + \"\\r\\n\" + \"Connection: close\\r\\n\\r\\n\");\n  unsigned long timeout = millis();\n\n  while (vartest < 10) {  \/\/10 durchl\u00e4ufe, also 5x aufdrehen, 5x abdrehen\n    delay(1000);\n    WiFiClient client;\n    const int httpPort = 80;\n\n    if (!client.connect(host, httpPort)) {\n      return;\n    }\n\n    String url = \"win&#038;T=2\";\n    client.print(String(\"GET \") + url + \" HTTP\/1.1\\r\\n\" + \"Host: \" + host + \"\\r\\n\" + \"Connection: close\\r\\n\\r\\n\");\n    unsigned long timeout = millis();\n\n    vartest++;\n  }\n}\n\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Da ich grunds\u00e4tzlich die Glocke der Gegensprechanlage abgedreht habe, war dennoch die \u00dcberlegung zu loggen, wenn und wann jemand anleutet. Um dies weiter auszubauen war angedacht dies auch zu visualisieren. Somit k\u00f6nnte ich trotzdem reagieren, &hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13],"tags":[],"class_list":["post-670","post","type-post","status-publish","format-standard","hentry","category-arduino-esp"],"_links":{"self":[{"href":"https:\/\/blog.r00x.at\/index.php?rest_route=\/wp\/v2\/posts\/670","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.r00x.at\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.r00x.at\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.r00x.at\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.r00x.at\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=670"}],"version-history":[{"count":13,"href":"https:\/\/blog.r00x.at\/index.php?rest_route=\/wp\/v2\/posts\/670\/revisions"}],"predecessor-version":[{"id":686,"href":"https:\/\/blog.r00x.at\/index.php?rest_route=\/wp\/v2\/posts\/670\/revisions\/686"}],"wp:attachment":[{"href":"https:\/\/blog.r00x.at\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=670"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.r00x.at\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=670"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.r00x.at\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=670"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}