Hallo zusammen! Anbei ein kleines Projekt für den ESP32 zusammen mit einen Funk-Türklingel von Grundig. Programmiert wird über die Arduino-Oberfläche. Ziel des Ganzen ist, einen batteriebetriebenen Klingelknopf über MQTT zu melden. Nach der Untersuchung des Empfängers der Funk-Türklingel habe ich ein Signal finden können (am Schiebeschalter) der die LED des Empfängers blinken lässt. Mit einer Amplitude von 3V werden dort 10 Impulse erzeugt damit die LED blinkt. Der Empfänger wird normalerweise mit 2xAA-Batterien betrieben. Statt der Batterien erfolgt die Stromversorgung des Empfängers jedoch über den 3V3-Pin des ESP32. Der gefundene LED-Anschluß des Empfängers wird bei mir direkt mit IO4 verbunden. Nun einen Ausschnitt für den USB-Anschluss des ESP32 ins Gehäuse des Funk-Empfängers einbringen und den ESP32 im Gehäuse befestigen, Platz genug ist. Das wars mit der Hardware, mehr ist nicht zu tun. Damit alles OTA-fähig wird muss beim ersten Mal natürlich über USB geflasht werden, danach kann die Netzwerkschnittstelle via OTA benutzt werden. Bevor die Software auf den ESP32 geladen wird müssen die Zugangsdaten des lokalen WLAN's eingetragen werden (SSID und PASSWORD). Software: Nach dem Einbinden der notwendigen Libraries erfolgt in "setup()" die Initialisierung der ser. Schnittstelle, danach die Anmeldung ans lokale WLAN. Mit 'mqtt.subscribe(...)' erfolgt das Aufsetzen des MQTT-Brokers und -Subscribers. Mit dem 'mqtt.subscribe("#",...)' erfolgt die Anmedung des Brokers für ALLE Nachrichten die über MQTT laufen ('#' ist ein Wildcard). Statt dem '#' können natürlich auch bestimmte 'topics' eingetragen werden. Beispiel: 'tele/Bell2MQTT/SENSOR'. Wer rumprobieren will startet ein Programm das MQTT-Nachrichten empfangen und anzeigen kann (z.B. 'MQTT-Explorer' für den PC oder 'MQTT Terminal' für das Smartphone). Wird ein solches Programm benutzt, ist die Netzwerkadresse des ESP anzugeben und die Anmeldedaten zum WLAN. Zeilen 53 bis 57 weisen picoMQTT an, alle MQTT-Nachrichten ('#') entgegen zu nehmen. In Zeile 61 wird dann der Service gestartet (das ist der 'Broker'). In 'loop()' wird zunächst picoMQTT bedient und anschließend der Klingelknopf abgefragt und ggf. eine MQTT-Nachricht mit 'topic' 'tele/Bell2MQTT/SENSOR' und payload 'Doorbell rings #...' erzeugt. Danach muss mit 'delay(6000)' gewartet werden bis alle 10 Impulse der LED-Ansteuerung erfolgten. Zum Schluß wird dann die OTA-Fähigkeit sicher gestellt. Denkbar ist auch noch eine ganz andere Anwendung: ESP batteriebetrieben mit direkter Anbindung des Klingelknopfes ohne Funk-Türklingel. Dazu müsste der ESP32 durch einen stromsparenderen ESP8266 ersetzt werden. Das ganze Gedöns um OTA fliegt raus (dazu müsste ja der ESP dauernd laufen was bei Batteriebetrieb nicht möglich ist) ebenso alles um 'mqtt.subscribe("#"..)'. MQTT-Broker ist nicht möglich (Hinweis: 'deepsleep()'). Die letzte Anweisung in der 'loop()' sollte dann ein 'deepsleep()' sein damit sich der ESP schlafen legt. Der physisch Klingelknopf wird dann nicht mit IO4 sondern mit 'RST' und 'GND' verbunden. Reset weckt den ESP auf und alles wird einmal durchlaufen, bis zum 'deepsleep()'. Das der Quellcode entsprechen angepasst werden muss versteht sich hoffentlich von selbst, ist aber sicher kein Hexenwerk. Das Tasten prellen sollte man im Hinterkopf behalten. Auch muss sichergestellt werden, daß die MQTT-Nachricht komplett raus ist bevor der ESP schlafen gelegt wird (siehe Doku 'picoMQTT'). Nachteil dieser Lösung ist, daß der ESP die MQTT-Broker-Funktion nicht übernehmen kann und das der ESP verhältnismäßig lange in Betrieb sein muss um die MQTT-Nachricht über das LAN abzusetzen. Eine bessere Lösung wäre dann die WLAN-Verbindung nicht über das HTTP-Protokoll (wie MQTT das macht) abzuwickeln sondern über ESPnow, von Espressiv entwickelt und wegen der kurzen Übertragungszeiten deutlich besser geeignet als HTTP. Dann aber müsste ein ESPnow nach MQTT Server aufgestzt werden. Der könnte allerdings dann auch die MQTT-Broker-Funktion übernehmen und, da im Haus, mit einem Netzteil als Stromquelle versorgt werden. Und da der dann sowieso läuft kann man dem Teil auch noch ein Bluetooth-BLE-Gateway aufs Auge drücken. Das wars. Viel Spass damit!!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.