Garagentorüberwachung und Automatisierung

Sparschwein Die Inhalte gefallen Dir?

Unterstütze diese Seite indem du deinen AdBlocker oder Content Blocker deaktivierst. Ich habe einige, wenige eBay-Banner, sowie affiliate Links in die Seite eingebaut mit relevanten Suchergebnissen zu meinen jeweiligen Projekten. Links zu eBay sind durch eine Grünfärbung mit gepunktetem Unterstrich gekennzeichnet.

Erstellt am 28.10.2023

Wenn die Hunde scheißen

Nanu, geht es hier nicht sonst immer um elektronische Basteleien? Natürlich! Was haben also die Hunde damit zu tun? Nun, vor nicht all zu langer Zeit stand ein Umzug an und das neue Domizil ist mit einer Garage mit elektrischem Garagentor ausgestattet. Dies ist das erste mal, dass ich den Luxus des Garagenparkens genießen kann, allerdings habe ich dabei noch keine Routine und so kam es dann auch, dass ich des öfteren vergaß das Tor nach dem Verlassen der Garage auch wieder zu schließen. Ihr wisst ja sicher was das bedeutet: Ich riskiere voll, dass mir dann die Hunde rein scheißen!.

Da musste natürlich eine Lösung her, die meiner Vergesslichkeit zuträglich ist und was noch wichtiger ist, die das Garagentor mit dem Internet verbindet. Schließlich muss ich ja von überall auf dem Planeten wissen können, ob das Tor nun zu ist, oder offen und selbstredend muss ich es auch von überall in der Welt bedienen können. Gesagt getan, ab zum Elektronikversender meines Vertrauens und einen ESPDuino-32, eine passende Relaiskarte und zwei HC-SR04 Ultraschall Abstandssensoren geklickt.

Die Idee: Ich montiere einen Sensor über der Führungsschine des Tors, sodass ich detektieren kann wenn das Tor dort hineingefahren ist und der zweite Sensor sitzt über dem Auto um zu detektieren wenn das Auto die Garage verlassen hat. Mit einer simplen Statemachine kann ich dann entscheiden, ob das Tor wieder betätigt werden muss. Die folgenden zwei Zustände werden dabei berücksichtigt:

  1. Garagentor offen und Auto seit 60 Sekunden nicht detektiert
  2. Garagentor seit 30 Minuten offen

Trifft einer dieser Zustände ein, wird ein kurzes schaltsignal an den Torschalter gegeben.

Das Kabelgedöns

Hätte ich einen regulären Arduino verwendet wäre der Artikel wohl etwas kürzer ausgefallen. Die Beschreibung der Ultraschallsensoren behauptete, dass diese mit 3 bis 5 V betrieben werden können. Perfekt, der ESP32 auf meinem Arduino-Clone läuft mit 3,3 V, da kann ich das also einfach mit ein paar Jumperkabeln anschließen - leider nein. Es hat sich herausgestellt, dass die HC-SR04 5V benötigen damit da irgendwas passiert. Das Internet behauptet auf der anderen Seite auch, dass der ESP32 eigentlich schon 5 V tolerant sei. Man betreibt ihn dann aber trotzdem außerhalb seiner Spezifikation. Also musste noch ein Spannungsteiler her.

ESPDuino-32 mit Relaiskarte Fertige Gehäuse mit Ultraschallsensoren

Der HC-SR04 hat 4 Pins, plus, minus, trigger und echo. Sendet man einen kurzem Impuls an den Triggerpin sendet das Ultraschallmodul 8 Ultraschallimpulse aus und empfängt das Echo. Am echo-Pin wird dann ein Signal proportional zur Laufzeit des empfangenen Signals ausgegeben. Dieses Signal am echo-Pin hat einen 5 V Signalpegel. Mit einem einfachen 1:2 Spannungsteiler können wir das also auf für den ESP32 erträgliche Maße herunter spannen.

Die beiden Sensoren sind dann in jeweils ein Gehäuse mit etwas Kabel dazwischen gewandert, sodass ich den einen Sensor über den Torführungsschinen anbringen kann und den zweiten Sensor über dem Auto. Ein längeres Kabel geht dann zum Tordrücker. Dieser hat ein etwas seltsames 2-wire Interface das ich mir nicht näher angesehen habe. Darüber wird Strom zum Drücker übertragen aber wohl auch Signale für Licht, Tor and Anlernen neuer Funksender. Der Einfachheit halber habe ich aber einfach das Relayboard parallel zum mechanischen Schalter auf der Drückerplatine gelötet. Man muss sich das Leben ja nicht unnötig schwer machen.

Sensor in der Garage montiert

Einmal WLAN-Kabel bitte

Das nächste Problem stellte schließlich die WLAN-Verbindung dar. Das ESP32 Modul wollte sich partout nicht ins WLAN einwählen. Einiges Probieren hat ergeben, dass zunächst das Netzteil welches das Modul in der Garage mit Strom versorgt Störungen induziert. Das scheint aber wohl ein Zusammenspiel mit dem Netzteil im Garagentorantrieb zu sein. Versorge ich das WLAN-Modul via Batterie ist der Empfang besser. Also als erstes das Netzteil ausgetauscht und noch einen Ferritring spendiert. Wie viel der hilft weiß ich allerdings nicht.

Die Verbindung war dann aber immer noch eher instabil. Also mal weiter geforscht, ob man da nicht noch eine externe Antenne rausführen kann - und man kann:
Mit einem Dremel oder auch einfach nur einem scharfen Messer müsst ihr die Verbindung zwischen den beiden Antennenpolen welche aus dem Modul kommen auftrennen und ebenfalls die Verbindung zu der eigentlichen Antenne auf der Platine. Anschließend den Lötstopplack etwas wegkratzen (das geht mit einem flachen Feinmechanikerschraubenzieher ganz gut) und nun könnt ihr das Koaxkabel der Antenne anlöten. Der äußere Pin geht an die Schirmung des Kabels, der innere an den Innenleiter.

Lötstopplack wegkratzen Leiterbahnen auftrennen Antennenkabel anlöten
Bilder vom HASS community board.

Mit dieser kleinen Änderung hat das Modul jetzt tatsächlich besseren Empfang. Leider habe ich keine vorher/nachher Messung gemacht, da ich mehr am wild rumprobieren war. Aber dass die Verbindung jetzt funktioniert und davor nicht, ist mir eigentlich Beweis genug, dass die externe Antenne tatsächlich funktioniert. Die Antenne auf der Platine hat etwa 0 dBi gain, mit einer externen müssten +2.15 dBi drin sein.

Code und Test

Den Code habe ich mit dem Arduino Framework unter PlatformIO geschrieben. Das hat das Projekt deutlich vereinfacht, da es hier bereits eine fertige Bibliothek für die Ultraschallsensoren gibt und ich damit das Rad nicht neu erfinden muss. Alles was ihr braucht, ist die platformio.ini und die main.cpp. Noch die SSID und das Passwort dafür anpassen, den MQTT server eintragen und dann könnt ihr es auf den ESP32 laden. Es gibt auch ein HTTP Interface mit dem ihr die Abstände (Schwellwerte) konfigurieren könnt bei dem die Zustände sich ändern sollen. Auch können darüber die Relais manuell gesteuert werden.

BefehlErklärung
http://<IP>/getZeige JSON Object mit Zuständen, Abständen und Schwellwerten
http://<IP>/set?car=120&door=80Setze Schwellwerte für Auto oder Tor (kann auch einzeln gesetzt werden)
http://<IP>/tap?switch=[0-3]500 ms Schaltimpuls auf Relais 1 - 4
http://<IP>/switch?switch=[0-3]&state=[ON|OFF]Schalte Relais 1 - 4 ein oder aus


Den Code gibt es hier zum Herunterladen: garagedoor.zip

Visualisierung im Browser

Das zweite Stück Software ist schließlich die Visualisierung im Browser. In meiner Hausautomatisierung verwende ich normalerweise OpenHAB. Dort könnte man auch ein Widget erstellen, was mir den Zustand der Garage anzeigt. Also Tor offen oder zu und Auto geparkt oder unterwegs. Sich in das Widgetsystem einzuarbeiten, ist dann aber auch wieder mit erheblichem Zeitaufwand verbunden, also habe ich einen alternativen Weg genommen. Zunächst einmal habe ich ein paar Bilder für eine Toranimation erstellt, die in fünf schritten das Tor auf bzw. zu anzeigt und jeweils mit und ohne Auto. Das wäre wahrscheinlich ebenfalls für ein Widget direkt in OpenHAB notwendig gewesen. Um die richtigen Bildchen zu den jeweiligen Zuständen anzuzeigen habe ich jetzt aber einfach ChatGPT angeschmissen und dem Bot erklärt, dass ich einen einfachen Perl Webserver möchte, der sich auch auf dem MQTT Bus einklinkt und entsprechend bei jeder Änderung einen Status-JSON ausgibt. Das wird dann in der Webseite einfach alle 5 Sekunden über JavaScript gepollt. Ändert sich der Status wird die Animation eines sich öffnenden oder schließenden Tores angezeigt.

Mit hilfe des Chatbots war das Thema in 15 Minuten erledigt. Hätte ich mich in OpenHAB einlesen müssen wären da sicher drei Stunden (oder sogar mehr) verstrichen. Die Webseite des Perl Webservers wird jetzt einfach als iframe in meinem HABPanel eingebunden. Den Code für den Webserver könnt ihr natürlich ebenfalls hier herunterladen: garagewidget.zip

Einen kleinen Vorgeschmack, wie das dann aussieht ist in diesem Video zu sehen.


Video Download

Seitenanfang