Wasseruhr auslesen

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.

Wasseruhr mit Impuls-Ausgang ESP8266-ESP01 an der Wasseruhr

 

Aufbau und Funktion des ESP8266-ESP01

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:

Impuls der Wasseruhr

 

Beim Start holt der ESP8266 sich den letzten Wert aus der Datenbank (MariaDB) über eine PHP-Skript. Alternativ dazu kann der aktuelle Zählerstand dem ESP8266 über folgenden Befehl mitgeteilt werden: 192.168.X.Y/Set?value=xx.yy. Beim aller ersten Mal muss natürlich der aktuelle Stand der Wasseruhr dem ESP8266 so mitgeteilt werden.

 

Code für den ESP8266-ESP01

Der folgende Code wird über die Arduino-IDE auf dem ESP8266-ESP01 aufgespielt. Danach kann der Code bei Bedarf via OTA upgedated werden:

 

Nach dem Aufruf via 192.168.X.Y erhält man vom dem ESP8266 zum Beispiel folgende Antwort:
<MyHome>
 <data name="Device" value="ESP8266_ESP01_WaterMeter" valueunit="text"/>
 <data name="MAC" value="dc:ää:öö:üü:4b:cb" valueunit="AA:BB:CC:DD:EE:FF"/>
 <data name="Version" value="V2.00 from 2020-02-20" valueunit="text"/>
 <data name="SSID" value="YourSSID" valueunit="text"/>
 <data name="IP" value="192.168.X.Y" valueunit="xxx.xxx.xxx.xxx"/>
 <data name="StartTime" value="2020-02-28 19:09:08" valueunit="YYYY-MM-DD hh:mm:ss"/>
 <data name="RunTime" value="170.0" valueunit="hours"/>
 <data name="WIFIConnectCounter" value="2" valueunit=""/>
 <data name="help" value="use /Set?Value=xx to set new value" valueunit="text"/>
 <data name="WaterMeter" value="71.119" valueunit="m^3"/>
</MyHome>