1 Punkte von GN⁺ 2023-08-17 | 1 Kommentare | Auf WhatsApp teilen
  • Ein Projekt zum Bau einer DIY-Türklingel, die für Nutzer gedacht ist, die cloudabhängige Smart-Türklingeln vermeiden möchten, und die über ESP32-CAM und ESPHome lokal in Home Assistant integriert wird
  • Die Grundkonfiguration besteht aus Home Assistant, dem ESPHome-Add-on und der mobilen Home-Assistant-Companion-App; ein Tastendruck dient als Auslöser, um einen Kamera-Schnappschuss per Benachrichtigung an das Smartphone zu senden
  • Die Hardware besteht aus ESP32-CAM, einem Taster, einem optionalen 8-RGB-LED-Ring, einem 10-m-Micro-USB-Kabel und einem 3D-gedruckten Gehäuse; die eingebaute LED kann den Blitz ersetzen
  • Je nach ESP32-CAM-Variante können Pinbelegung und Pulldown-Verhalten unterschiedlich sein; für den Tastereingang an GPIO14 ist daher eine Verdrahtung mit einem 10kΩ-Pulldown-Widerstand gegen GND erforderlich
  • Das PLA-Gehäuse wurde für den Beispielausdruck verwendet, aber für Witterungsschutz sind PETG oder ABS besser geeignet; wegen der Kameraöffnung ist ein Montageort nötig, der vor Regen geschützt ist

Aufbau der lokalen Türklingel und benötigte Komponenten

  • Diese Smart-Türklingel ist auf eine datenschutzfreundliche Konfiguration ausgelegt und wird über ESPHome in Home Assistant integriert
  • Für den Start wird folgende Konfiguration benötigt
    • eine laufende Home Assistant-Instanz
    • das ESPHome-Add-on
    • die mobile Home-Assistant-Companion-App, um Benachrichtigungen bei Tastendruck zu empfangen
  • Im Beispiel-Build wurde ein 8-RGB-LED-Ringlicht verwendet, aber wer es einfacher halten möchte, kann es weglassen und die eingebaute LED des ESP32-CAM als Blitz verwenden
  • Die AI-Thinker-Version des ESP32-CAM verfügt möglicherweise nicht wie ein gewöhnlicher ESP32 über alle Pull-up- und Pulldown-Widerstände
    • Die ESPHome-Funktion INPUT_PULLDOWN wurde an GPIO14 ausprobiert, funktionierte aber nicht
    • Es scheint viele chinesische ESP32-CAM-Varianten zu geben, daher kann es je nach Board Unterschiede geben

Bauteile und veröffentlichte Dateien

  • Die wichtigsten Bauteile sind:
    • ESP32-CAM
      • Empfohlen wird ein Board mit flash/download/io0-Taste, damit sich ESPHome leichter erstmals flashen lässt
      • Boards ohne diese Taste müssen mit einem FTDI-Adapter geflasht werden
    • Taster
    • 8-RGB-LED-Ringlicht
    • 10-m-Micro-USB-Kabel
  • 3D-Druckdateien und Konfigurationsdateien sind veröffentlicht

Gehäusedruck und Montage

  • Das Gehäuse wird in drei Teilen gedruckt
    • Hauptkörper
    • Halteplatte für das ESP32-CAM
    • Rückplatte, die zugleich als Wandhalterung dient
  • Das vordere und das hintere Gehäuseteil müssen mit Support gedruckt werden
  • Für den Beispieldruck wurde PLA verwendet, aber für Witterungsschutz werden PETG- oder ABS-Filament und 20–30 % Infill empfohlen
  • Nach dem Druck werden zwei M2.5-Gewindeeinsätze hinzugefügt
    • in die Frontabdeckung, damit die Halterung des ESP32-CAM festgeschraubt werden kann
    • unten in die Rückplatte, damit die Frontplatte mit 10-mm-M2.5-Schrauben befestigt werden kann

ESP32-CAM mit ESPHome flashen

  • Um das ESP32-CAM im Flash-Modus zu starten, wird die flash/download/io0-Taste gedrückt gehalten und das Board dabei per Micro-USB-Kabel mit dem Computer verbunden
  • In Home Assistant wird das ESPHome-Add-on geöffnet und ein neues Gerät angelegt
    • Pfad: Settings -> Add-ons -> ESPHome -> Open Web UI
    • Als Name für das neue Gerät kann zum Beispiel Doorbell vergeben werden
    • Als Gerätetyp wird ESP32 ausgewählt und use recommended settings aktiviert
  • Unter captive_portal: in der erzeugten YAML-Konfiguration wird der Konfigurationscode aus dem GitHub-Repository eingefügt
  • Danach auf Save und Install klicken und Plug into this computer auswählen
  • Über ESPHome Web wird die Firmware im Browser geflasht
    • Google Chrome gilt als der stabilste Browser zum Flashen der ESP32-CAM-Firmware
    • Nach dem Kompilieren der Firmware kann Download Project angeklickt werden; das kann einige Minuten dauern
  • Nach dem Flashen der neuen Firmware erkennt Home Assistant das neue Gerät, und die gewünschten Entitäten können dem Dashboard hinzugefügt werden

Automatisierung für Tastendruck-Benachrichtigungen

  • Es wird eine Automatisierung eingerichtet, die bei Druck auf die Türklingeltaste einen Kamera-Schnappschuss aufnimmt und an das Smartphone sendet
  • In Home Assistant wird eine neue Automatisierung erstellt
    • Pfad: Settings -> Automations -> + Create Automation
    • Eine neue Automatisierung von Grund auf anlegen und oben rechts im Menü Edit in YAML auswählen
  • Die Automatisierungs-YAML aus dem GitHub-Repository einfügen und anschließend die Entitätsnamen von Geräten wie dem Mobiltelefon an die eigene Umgebung anpassen
  • Nach dem Speichern wird Home Assistant neu gestartet, damit die neue Automatisierung aktiv wird

Verdrahtung und Einschränkungen bei der Installation

  • Es gibt viele Varianten des ESP32-CAM-Boards, daher sollte die tatsächliche Pinbelegung des verwendeten Boards geprüft werden
  • Die Verdrahtung erfolgt durch Löten auf der Rückseite der unteren PCB mit dem Micro-USB-Port
  • Zwischen GPIO14 und GND wird ein 10kΩ-Pulldown-Widerstand hinzugefügt
    • Ohne diesen Widerstand wurde beobachtet, dass GPIO14 häufig in einem High-Zustand schwebt
    • Es wird empfohlen, den Widerstand mit Schrumpfschlauch zu ummanteln
  • Wegen der integrierten Kameraöffnung ist die Konstruktion nicht vollständig wasserdicht und sollte an einem vor Regen geschützten Ort installiert werden
  • Die Stromversorgung erfolgt über das in der Teileliste enthaltene 10-m-Micro-USB-Kabel

1 Kommentare

 
GN⁺ 2023-08-17
Meinungen auf Hacker News
  • Schön. Die Beleuchtung gefällt mir auch.
    Man kann auch einen Reed-Schalter (so etwas wie ein normaler Tür-auf/zu-Sensor) in der Nähe der Magnetspule anbringen, die die Klingel einer dummen Türklingel auslöst, und die Information an Home Assistant senden lassen.
    Einen Reed-Schalter für 0,50 Dollar an die vorhandene Türklingel anschließen und auf einen digitalen I/O-Port eines ESP führen, der aus derselben Stromversorgung wie die Türklingelspule versorgt wird. Wenn die Türklingel gedrückt wird, wird ein E-Mail-Snapshot der rein lokalen Eingangskamera verschickt und oben auf der Stereoanlage eine Aufnahme des Türklingel-Gongs abgespielt. Ursprünglich wollte ich die Spulenspannung über einen Analogeingang überwachen, aber das war zu instabil; die einfachere Reed-Schalter-Methode ist bei der Stromerkennung sehr zuverlässig.

    • Die Idee mit derselben Stromversorgung wie die Türklingelspule ist cool. Ich frage mich, welche etwas ungewöhnlichen Spannungsquellen es im Haus sonst noch gibt. HVAC-Bedienteile, analoge Telefonleitungen und so weiter.
      POTS-Leitungen (Plain Old Telephone Service) sollten etwa 48 V DC liefern, wenn alle Telefone aufgelegt sind. Wenn ein Telefon auf derselben Leitung abgehoben wird, fällt die Spannung in den Bereich von 3 bis 9 V. Ein abgehobenes Telefon verbraucht im normalen Betrieb typischerweise etwa 20 mA DC, und der DC-Widerstand liegt bei etwa 180 Ω. Der restliche Spannungsabfall entsteht auf dem Kupferleitungsweg und in der Telefonanbieter-Schaltung, wo normalerweise ein Serienwiderstand von 200 bis 400 Ω vorhanden ist, um Kurzschlussschutz und die Trennung der Audioschaltung zu gewährleisten.
      https://www.jkaudio.com/article_03.htm
    • Ich habe es genau genauso gemacht und einen Aqara-Zigbee-Kontaktsensor mit eingebautem Reed-Schalter direkt in die echte Türklingel gelegt. Über der Spule gab es zufällig eine flache Stelle, daher funktioniert das gut.
    • Gibt es Probleme damit, dass der Reed-Schalter kleben bleibt und nicht mehr öffnet? Für diesen Zweck hat ein Hall-Sensor bei mir sehr gut funktioniert, aber vielleicht habe ich auch nur minderwertige Reed-Schalter gesehen.
    • Reed-Schalter sind für solche Zwecke hervorragend.
      Ich habe sie ähnlich oben auf das Gehäuse eines Relais geklebt, um zu erkennen, ob die Spule bestromt ist, ohne direkt in den Steuerkreis oder Lastkreis eingreifen zu müssen.
  • Was ich bei solchen IoT-Geräten will, ist nur: keine Cloud-Abhängigkeit und PoE. Lieber verlege ich unzählige Kabel, als mich mit dummen Batterien herumzuschlagen, die ständig leer sind. Batterien werden auch immer teurer.

    • Für DIY-IoT: PoE ESP32 als Referenz
      nicht isoliert: https://www.olimex.com/Products/IoT/ESP32/ESP32-POE/open-sou...
      isoliert: https://www.olimex.com/Products/IoT/ESP32/ESP32-POE-ISO/open...
    • Genau. Ein Kabel einmal aufzulegen ist eine große Mühe, aber im schlimmsten Fall wächst der Aufwand linear. Wenn es mehr Geräte werden, braucht man mehr Kabel, und da man von vorhandenen Anschlussdosen abzweigen kann, ist es vielleicht sogar eher logarithmisches Wachstum.
      Einmal im Jahr Batterien zu wechseln ist eine kleine Mühe, aber bei Dutzenden Geräten summiert sich das schnell und wiederholt sich regelmäßig; das ist nicht besser als lineares Wachstum.
    • Für solche Zwecke halte ich Zigbee für ein hervorragendes Protokoll. Es läuft lokal, landet nicht einmal im WLAN, und Sensoren halten mit einer Knopfzelle jahrelang durch.
    • Ich will Solarstrom. Eine Türklingel wird doch vielleicht einmal alle fünf Tage gedrückt, oder? Man kann das Gehäuse mit einem Solarpanel bedecken und einen Superkondensator für die Stromversorgung bei Nacht einbauen.
    • Solche Batterien sind wirklich lästig. Batteriebetriebene Geräte neigen auch dazu, unzuverlässig zu sein. Jede Woche muss man irgendetwas neu pairen oder Batterien wechseln.
      Wenn ich ein eigenes Haus habe, will ich auf KNX setzen.
  • Etwas off-topic, aber meine Frau hat ziemlich starkes ADS und verliert häufig Dinge. Tile kann Gegenstände nur innerhalb einer bestimmten Entfernung finden und scheint oft kaputtzugehen.
    Es ist vielleicht unwahrscheinlich, aber ich frage mich, ob schon jemand ein Indoor-Ortungssystem gebaut hat, das Gegenstände im Haus über Bluetooth-Low-Energy-Beacons im 3D-Raum mit ein paar Zentimetern Genauigkeit findet.
    Näher am eigentlichen Thema: Der ESP32 ist ziemlich großartig. Allerdings konnte ich mit MicroPython oder CircuitPython keine stabile Wi-Fi-Verbindung aufrechterhalten; die Bandbreite dessen, was damit möglich ist, ist aber erstaunlich. Mein Board ist ziemlich alt, vielleicht macht es einen Unterschied, wenn ich ein neues kaufe.

    • DIY AirTags: https://github.com/seemoo-lab/openhaystack
    • Ich habe auf einem ESP32-Devkit-Board MicroPython laufen, es mit Wi-Fi und MQTT verbunden und lasse es 24/7 Sensorwerte senden; seit Wochen läuft es problemlos.
    • Es passt nicht ganz zu den Anforderungen, aber haben Sie https://www.room-assistant.io/ schon ausprobiert?
    • Bei MicroPython oder CircuitPython frage ich mich, was man da erwartet hat. Für Embedded Systems, bei denen Zuverlässigkeit nötig ist, sind sie praktisch tabu.
  • Interessant, dass in manchen Teilen der Welt die Existenz einer Türklingel so wichtig ist, dass man sie sogar „smart“ machen muss. Der Erfolg smarter Türklingelprodukte zeigt diese Nachfrage gut
    Ich habe keine Türklingel. Wenn ein Besucher nicht weiß, wie er mich oder jemand anderen im Haus erreichen kann, hat er wahrscheinlich von vornherein wenig Grund, dort aufzutauchen
    Damit bin ich auch nicht allein. Nach einer höchst unwissenschaftlichen Beobachtung bei einem Spaziergang letzte Woche ist der Großteil unserer Straße ähnlich, und vermutlich auch der Großteil meiner Stadt

    • Klingt ziemlich kühl. Als ich ein Haus gekauft habe und eingezogen bin, kamen Nachbarn vorbei, um Hallo zu sagen, manche brachten sogar Willkommensgeschenke mit. Ich möchte mich nicht so von der Nachbarschaftsgemeinschaft abkoppeln
    • Ein Teil der Nachfrage nach smarten Türklingeln scheint das Problem unbekannter Besucher zu adressieren. Sie können den Hausbesitzer auch dann benachrichtigen, wer vor der Tür steht, wenn er nicht zu Hause ist, und verbergen, dass das Haus leer ist
    • Häuser in Großbritannien sind so klein, dass Klopfen normalerweise ausreicht
      Türklingeln wirken anachronistisch. In unserer Straße hat fast niemand eine
    • Bestellen Sie nie Pakete im Internet? Haben Sie noch nie Einschreiben von der Steuerbehörde bekommen? Gerade smarte Türklingeln sind populär geworden, weil sie sich leicht an eine Stromversorgung anschließen lassen, die draußen am Haus bereits an einer passenden Stelle vorhanden ist
    • Es ist wohl weniger so, dass die Leute ihre Türklingeln wirklich „smart“ machen wollten; vielmehr hat die Entwicklung der Unterhaltungselektronik es ermöglicht, eine Sicherheits-/Überwachungskamera an einem hoch priorisierten Ort wie dem Eingang einfach zu installieren, indem man die in den meisten Häusern bereits perfekt positionierte Verkabelung mit etwa 20 V nutzt
  • Nach den Reviews, die ich gesehen habe, scheint die Reolink-Türklingelkamera die einzige kommerzielle Option zu sein, die zu den Anforderungen des Autors passt. Sie funktioniert lokal und lässt sich in Home Assistant integrieren
    Für die Gegensprechanlage braucht man allerdings eine separate App. Die selbst gebaute Lösung des Autors scheint keine Audiokommunikation zu bieten, und zumindest allein über das Kameraprotokoll scheint es auch keine Möglichkeit zu geben, Zwei-Wege-Audio direkt in Home Assistant zu nutzen

    • Wie wäre es mit der UniFi Doorbell? Sie braucht keine Cloud-Anbindung, bleibt lokal und lässt sich in HomeAssistant / Scrypted / Homebridge integrieren
    • Amcrest stellt ebenfalls Produkte her, die einen rein lokalen Betrieb unterstützen und sich in Home Assistant integrieren lassen
  • ESP32 fühlt sich wirklich wie ein Kaninchenbau an, in den man tief hinabsteigen kann. Es gibt schon sehr viele Projekte, die ESP32 nutzen oder gerade entwickeln, und jetzt habe ich noch eines mehr im Hinterkopf

    • Woran bauen Sie denn?
  • Tolles Projekt. Die Bildqualität der ESP32-Kamera kann ziemlich schlecht sein. Ein Foto in voller Auflösung von der Türklingel im Blog wäre hilfreich

  • Hervorragendes Projekt. Es ist schön, die verschiedenen ESP32-Türklingeln zu sehen, die Maker bauen
    Ein Beispielvideo oder ein paar Fotos wären gut. Ich habe früher die ESP32 Cam ausprobiert; sie ist für sich genommen beeindruckend, aber persönlich nicht die Qualität, die ich mir wünschen würde. Meine Nutzung einer smarten Türklingel geht allerdings eher in Richtung Sicherheit als nur „wer ist da“

  • Derzeit nutze ich eine ziemlich teure PoE-Türklingel, die ich als AS-IS gekauft habe, um Kosten zu sparen. Sie ist von Axis Communications
    Die Möglichkeit, ONVIF-Events zu empfangen, gefällt mir wirklich. Wenn man Events konsumieren kann, kann man im Grunde tun, was man will, was solchen Produkten viel Flexibilität gibt. Zum Beispiel gibt es auch eine Möglichkeit, Custom-Events zu erstellen, etwa wenn jemand mit der Hand das Kameraobjektiv verdeckt
    Home Assistant hat eine hervorragende ONVIF-Unterstützung. Ich würde gern eine Art Wrapper um Skripte herum bauen (zum Beispiel Boolean-Werte für Tür offen/geschlossen), um native ONVIF-Events zu bekommen

  • Einer der Kommentare auf dieser Seite hat auf Leistungsprobleme des ESP32 hingewiesen. Ich habe noch nie mit IoT-Geräten oder solchen Boards gearbeitet, aber sie sind relativ günstig, sodass ich damit experimentieren wollte; bei der Recherche fand ich heraus, dass der ESP32 in einem 40-nm-Prozess gefertigt wird
    Ich frage mich, ob es eine neuere Version gibt, die in einem fortschrittlicheren Prozess hergestellt wird und bei ähnlichem Leistungsbudget mehr Performance liefert

    • Zwei RISC-Kerne mit 240 MHz sind ziemlich leistungsfähig. 40 nm ist für einen Mikrocontroller nicht schlecht. Die konkurrierende nRF52-Serie von Nordic wird zum Beispiel in 55 nm gefertigt
    • Eigentlich nicht. Es gibt neuere Versionen des Chips, darunter auch RISC-V- oder Zigbee/Thread-Varianten, aber bei Performance/Leistung ist kaum eine dramatische Verbesserung zu erwarten. In diesem Marktsegment sind Performance-Beschränkungen üblich, und das ist der Trade-off, den man akzeptiert
      Es gibt auch SoC-Familien mit besseren Trade-offs, aber nur wenige sind für Hobbyentwickler so freundlich wie der ESP32. Nordic wäre eine Möglichkeit, oder man geht eher in Richtung kleiner Einplatinencomputer wie Pi Zero
      Trotzdem ist der ESP32 deutlich leistungsfähiger, als die meisten Home-Automation-Geräte benötigen. Nur bei ein paar schwereren Aufgaben wie Videostreaming oder Machine Learning stößt man allmählich an Grenzen. Selbst dann kann man mit geschicktem Vorgehen noch ziemlich viel herausholen