├── README.md ├── images ├── board.png ├── circuit.png ├── graph.png └── photo.png └── watermeter_sensor.yaml /README.md: -------------------------------------------------------------------------------- 1 | 2 | # ESPHome Water Meter Sensor for Home assistant 3 | 4 | # Introduction 5 | Yesterday, I used a Cyble Sensor v2 to measure my house water usage over time. The project was a success. It's a very simple setup with a small custom circuit. I bought the Cyble Sensor for around `AU$70` online. Then connected it to a D1 mini with a pull up resistor. Programmed the D1 mini using the code in this repo. 6 | 7 | # Prerequisites 8 | - Home Assistant Setup 9 | - ESP Home setup 10 | - Cyble Sensor v2 11 | - D1 Mini (ESP32 MCU) 12 | 13 | # Circuil Diagram and Photos 14 | 15 | ![circuit](images/circuit.png) 16 | 17 | ![board](images/board.png) 18 | 19 | ![photo](images/photo.png) 20 | 21 | ![graph](images/graph.png) 22 | 23 | # Home Assistant configuration 24 | 25 | In Home Assistant you will need to have a counter and utility meter as below. 26 | 27 | ```yaml 28 | counter: 29 | water_meter_count: 30 | initial: 0 31 | step: 1 32 | icon: mdi:cup-water 33 | ``` 34 | 35 | ```yaml 36 | utility_meter: 37 | water_meter_daily: 38 | source: sensor.water_usage_liters 39 | cycle: daily 40 | 41 | water_meter_monthly: 42 | source: sensor.water_usage_liters 43 | cycle: monthly 44 | ``` 45 | 46 | ```yaml 47 | sensor: 48 | - platform: template 49 | sensors: 50 | water_usage_liters: 51 | unit_of_measurement: 'l' 52 | friendly_name: 'Water Usage Liters' 53 | value_template: "{{ states('counter.water_meter_count') | int }}" 54 | ``` -------------------------------------------------------------------------------- /images/board.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sameeraman/homeassistant_watermeter_sensor/f83229b4357390094ce92d936851aa538ddd30f4/images/board.png -------------------------------------------------------------------------------- /images/circuit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sameeraman/homeassistant_watermeter_sensor/f83229b4357390094ce92d936851aa538ddd30f4/images/circuit.png -------------------------------------------------------------------------------- /images/graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sameeraman/homeassistant_watermeter_sensor/f83229b4357390094ce92d936851aa538ddd30f4/images/graph.png -------------------------------------------------------------------------------- /images/photo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sameeraman/homeassistant_watermeter_sensor/f83229b4357390094ce92d936851aa538ddd30f4/images/photo.png -------------------------------------------------------------------------------- /watermeter_sensor.yaml: -------------------------------------------------------------------------------- 1 | esphome: 2 | name: watermeter_sensor 3 | platform: ESP8266 4 | board: d1_mini 5 | 6 | 7 | wifi: 8 | ssid: "XXXX" 9 | password: "XXXXX" 10 | manual_ip: 11 | static_ip: X.X.X.X 12 | gateway: X.X.X.X 13 | subnet: 255.255.255.0 14 | dns1: X.X.X.X 15 | dns2: X.X.X.X 16 | 17 | # Enable logging 18 | logger: 19 | 20 | # Enable Home Assistant API 21 | api: 22 | 23 | ota: 24 | 25 | 26 | binary_sensor: 27 | - platform: gpio 28 | pin: 29 | number: D2 30 | mode: INPUT_PULLUP 31 | inverted: true 32 | filters: 33 | - delayed_on: 40ms 34 | name: "watermeter_water_sensor" 35 | id: watermeter_water_sensor 36 | on_press: 37 | then: 38 | - homeassistant.service: 39 | service: counter.increment 40 | data: 41 | entity_id: counter.water_meter_count 42 | 43 | sensor: 44 | - platform: pulse_counter 45 | pin: D2 46 | name: "watermeter_water_pulsecounter" 47 | unit_of_measurement: 'l/min' 48 | count_mode: 49 | rising_edge: DISABLE 50 | falling_edge: INCREMENT --------------------------------------------------------------------------------