Mein SmartHome-Projekt Wasseruhr
Beim letzten turnusmäßigen Austausch der Wasseruhr habe ich eine mit Impulsausgang einbauen lassen. Ähnlich wie bei der Gasuhr wird mit einem ESP6266-ESP01 jeder Impuls gezählt und damit der aktuelle Zählerstand erfasst.
Der ESP8266-ESP01 wird über einen Spannungswandler AMS117-3.3 mit konstant 3,3 VDC versorgt. Ein kleiner Kondensator hinter dem AMS1117 stabilisiert die Spannung zusätzlich. Über GPIO2 wird der Impulsausgang der Wasseruhr angeschlossen. Der Impuls wird über einen Interrupt hochgezählt.
Ein Impuls dauuert ca. 46 ms und zieht die Spannung von 3.3 auf 0 0V:
Beim Start bekommt der ESP8266 den aktuellen Zählerstand via MQTT HomeRasPi/Water_MariaDB von dem Raspberry Pi, auf dem die MariaDB-Datenbank läuft. Ab dann wird ausgehend von diesem Startwert der Zählerstand kontinuierlich hochgezählt. Der aktuelle Zählerstand wird wiederum via MQTT ESP8266_WaterMeter/value bereitgestellt.
Der folgende Code wird über die Arduino-IDE auf dem ESP8266-ESP01 aufgespielt. Danach kann der Code bei Bedarf via OTA upgedated werden:
Der ESP8266 sendet via MQTT die folgendem Daten:
ESP8266_WaterMeter/time = Fri Oct 25 22:43:04 2024
ESP8266_WaterMeter/value = 753.957 (aktuelle Zählerstand in m³)
ESP8266_WaterMeter/all = {"Ver": "V2.13 from 2024-10-25", "MAC": "aa:bb:cc:dd:ee:ff", "SSID": "MySSID", "IP": "192.168.x.y", "Started": "2024-10-25 22:34:03", "OpHrs": 0.2} (weitere statische Informationen im JSON-Format)