Project to monitor electricity, water and natural gas consumption. Hardware is a D1Mini ESP8266 microcontroller development board for electricity and gas, water would be based on the ESP32-CAM board.
We have a small (max. 600 W) solar power plant on our balcony. So the negative consumption and the 'self produced breakdown' as well as the other data on the right comes from this. Luckily there is a very nice project for our inverter called grott. So we get the data directly via MQTT in our local network.
Currently code for power meters 'Holleytech DTZ 541-ZEBA' (2021) and 'Easymeter Q3MA' is available. For the Holleytech the date/version is important since the SML byte order has changed from 2019 to 2021 version.
As a write-read head I use a Osram SFH 3100 F phototransistor and 1 kOhm resistor. For testing purposes I cut a hole into a piece of cardboard at the position of the diode of the power meter. The first examples I did with an Arduino Uno for byte sequence debugging. Now I use a Wemos D1mini because of its direct WiFi capabilities.
The pulldown resistor gives a clean state to the input pin D2. The two capacitors are for stability reasons of the D1 mini following this site and this site unfortunately both in german language. If there is the need, just ask me. ;)
Part list:
- 1 kOhm resistor
- IR phototransistor
- 100 nF ceramic capacitor
- 3300 uF electrolyt capacitor
The sensor is a simple reed switch or reed contact. The last number on the meter contains a magnet which increments the gas meter count by 0.01 m³ when it passes the zero. I used the debounce example of the Arduino IDE and extended it by WiFi manager and MQTT client for value submission.
Not started yet.
My approach is completely based on a K3s cluster on Raspberry Pis (because it is already available), but native or docker deployments works also. For an external setup I use a Ubuntu EC2 instance on the Amazon AWS cloud with docker-compose.
graph LR;
A(ESP8266)-->|MQTT| B(mosquitto MQTT broker on K3s);
B-->|telegraf| C(InfluxDB);
C --> D(Grafana dashboard)
Create namespace
kubectl create namespace home-mon
Add helm repository
helm repo add influxdata https://helm.influxdata.com/
Install InfluxDB
helm install influx influxdata/influxdb \
--set image.tag=1.8.10 -n home-mon