# Easy Watermeter Integration for Home Assistant [![License][license-shield]][license] [![ESP32 Release](https://img.shields.io/github/v/release/zibous/ha-watermeter.svg?style=flat-square)](https://github.com/zibous/ha-watermeter/releases) [![ESPHome release][esphome-release-shield]][esphome-release] [![Open in Visual Studio Code][open-in-vscode-shield]][open-in-vscode] [![Support author][donate-me-shield]][donate-me] [license-shield]: https://img.shields.io/static/v1?label=License&message=MIT&color=orange&logo=license [license]: https://opensource.org/licenses/MIT [esphome-release-shield]: https://img.shields.io/static/v1?label=ESPHome&message=2023.5.0&color=green&logo=esphome [esphome-release]: https://GitHub.com/esphome/esphome/releases/ [open-in-vscode-shield]: https://img.shields.io/static/v1?label=+&message=Open+in+VSCode&color=blue&logo=visualstudiocode [open-in-vscode]: https://open.vscode.dev/zibous/ha-watermeter [donate-me-shield]: https://img.shields.io/static/v1?label=+&color=orange&message=Buy+me+a+coffee [donate-me]: https://www.buymeacoff.ee/zibous
## Water meter with IZAR module (Diehl IZAR RC 868 I R4 PL) ![diehl_metering](https://github.com/zibous/ha-watermeter/blob/master/docs/diehl_metering.jpg) I did some experiments with **wmbusmeters**, **DVT SDR_STICK**, **NANOCUL** and ended up with: **ESPHome - ESP32 (v4) + CC1101**. With the NANOCUL solutions, I always had problems with the USB input and with the high resource consumption on the NUC or Raspberry computers.
## ESPHome + ESP32 (v4) + CC1101 ESPHome - ESP32 (v4) + CC1101 is the best solution for me because the resource requirement is low. [![](https://img.shields.io/badge/ESPHOME_ESP32_(v4)+CC1101-orange?style=for-the-badge)](https://github.com/zibous/ha-watermeter/blob/master/esphome/wm-esp32.yaml)
## ESP32 (v4) Variante ![ESPHome - ESP32 (v4) + CC1101](https://github.com/zibous/ha-watermeter/blob/master/esphome/docs/esp32_cc1101.png) ### Requirements - Water meter with IZAR module (Diehl IZAR RC 868 I R4 PL), IZAR Radio Compact Hall is designed for mobile reading and fixed network remote reading of Diehl Metering meters.
- [ ESP32 Dev Kit C V4 NodeMCU](https://amzn.eu/d/eUNLyYc) - [Fayme CC1101 868MHZ Funk ÜBertragung Antennen Transceiver Modul, Grün](https://amzn.eu/d/i5YwBkR)
Alternative: [ EBYTE TI CC1101 Wireless 868Mhz 915Mhz RF Modul](https://amzn.eu/d/7GPqsng) with external antenna.
## Wiring CC1101 module to boards ![CC1101 module to boards](https://github.com/zibous/ha-watermeter/blob/master/esphome/docs/cc1101_board_pins.png) ### Meter types: Currently supported meter types (wmbus 2.1.10): - amiplus - apator08 - apator162 - apatoreitn - bmeters - compact5 - elf - evo868 - fhkvdataiii - hydrocalm3 - hydrus - iperl - itron - **izar** - mkradio3 - mkradio4 - qheat - qwater - sharky774 - topaseskr - ultrimis - unismart - vario451 - ... more will come :) see: ## Installation / Details [ESPHome - ESP32 (v4) + CC1101](./esphome/README.md) ## Result ### ESPHOME Webserver V2 ![ESPHOME-WATERMETER](./esphome/docs/water-meter-esp.png) ### ESPHOME Webserver V3 ![ESPHOME-WEBSERVER3](./esphome/docs/watermeter-webserver3.png) ### Homeassistant Device ![ESPHOME-WATERMETER](./esphome/docs/ha_water-meter-esp.png)
## ESP8266 vs ESP32 (v4) The version with **WEMOS D1MINI (ESP8266)** was my first version. WEMOS D1MINI (ESP8266) has only limited RAM and can only be used to a limited extent. If there are too many sensors and the logger level is to high, a **JSON memory error occurs**, which causes the device to restart again and again. __Note__: The **ESP32** has more RAM memory and is therefore better suited for use. To prevent this, it is absolutely necessary to set the log level to `warn`. Otherwise, at a higher log level, JSON errors will occur in productive operation.
| Device | Remarks | Hardware | |---------|-----------|--------| |**Wemos D1 Mini Board 80KB RAM**
| CC1101, board: d1_mini | ESP8266 80MHz, **80KB RAM**, 4MB Flash | |**Wemos D1 Mini 80KB RAM**
| CC1101, board: esp12e (board: d1_mini )|ESP8266 80MHz, **80KB RAM** , 4MB Flash | |**NodeMCU Lolin V3 Modul 80KB RAM**
| CC1101, board: NodeMCU Lua Lolin V3 Module ESP8266 | ESP8266 80MHz, **80KB RAM** , 4MB Flash | |**D1MINI ESP32 320KB RAM**
| CC1101, board: D!MINI ESP32 | ESP32 240MHz, **320KB RAM**, 4MB Flash | |**ESP32 Dev Kit C V4 520KB RAM**
| CC1101, board: az-delivery-devkit-v4 | ESP32 240MHz, **520KB RAM**, 4MB Flash |
### Memory Usage D1 Mini ![memory_usage](https://user-images.githubusercontent.com/30198737/235585457-895bb25f-47a6-4901-a403-96a115caac3d.png)
## ESPHome Device configurations - **Testcase - and simple version** `Total Water m³ (Watermeter Display)`, `LQI`, `RSSI`, `Total m³`, `Last Month total m³`, `Current Month total liter`, `Remaining Battery Lifetime`, `Last Transmit periode`, `Current Alarm Code`, `Previous Alarm Code`, `Boot Counter`, `WIFI Signal`, `Application Version`. - **Full version** `Total Water m³ (Watermeter Display)`, `LQI`, `RSSI`, `Total m³`, `Last Month total m³`, `Water usage current`, `Water usage hour`, `Water usage today`, `Water usage yesterday`, `Water usage week`, `Water usage month`, `Water usage previous month`, `Water usage current year `, `Remaining Battery Lifetime`, `Last Transmit periode`, `Alarm Text`, `Previous Alarm Text`, `Boot Counter`, `WIFI Signal`, `Reset values`, `Restart`, `Set History value with Homeassistant service`, `Application Version`, `Online Time`, `Watermeter LED`, `Watermeter Timestamp`, `Watermeter Update intervall`.
| Version | Remarks | Configuration | |------------------|-----------|----------------| | 🛠 WMBUSCHECK |Test configuration and wmbus. NO SENSORS only messages: Details see Log window |[wm-check-wmbus.yaml](esphome/wm-check-wmbus.yaml) | | 🛠 ESP32 Test |Frist run to find watermeters. Messages see Log window or syslog messages |[wm-esp32-test.yaml](esphome/wm-esp32-test.yaml) | | 💻 ESP32 Simple |Simple Sensor outputs, no calculations. Low memory consumption.|[wm-esp32-simple.yaml](esphome/wm-esp32-simple.yaml) | |✔️ ESP32 |Full version - Sensors and calulated values, Statitics. Alarmcode text message |[wm-esp32.yaml](esphome/wm-esp32.yaml) | | 🛠 D1 MINI ESP32 Test |Frist run to find watermeters. Messages see Log window or syslog messages |[wm-d1mini32-test.yaml](esphome/wm-d1mini32-test.yaml) | | 💻 D1 MINI ESP32 Simple |Simple Sensor outputs, no calculations. Low memory consumption. |[wm-d1mini32-simple.yaml](esphome/wm-d1mini32-simple.yaml) | |✔️ D1 MINI ESP32 |Full version - Sensors and calulated values, Statitics. Alarmcode text message |[wm-d1mini32.yaml](esphome/wm-d1mini32.yaml) | | D1MINI IZAR WMBUS|Testcase for IZAR WMBUS METER |[wm-d1mini_izar-wmbus.yaml](esphome/wm-d1mini_izar-wmbus.yaml)| | 🛠 D1MINI Test|Frist run to find watermeters. Messages see Log window or syslog messages |[wm-d1mini-test.yaml](esphome/wm-d1mini-test.yaml)| | 💻 D1MINI Simple |Simple Sensor outputs, no calculations. Low memory consumption. |[wm-d1mini-simple.yaml](esphome/wm-d1mini-simple.yaml)| |✔️ D1MINI |Sensors and calulated values, Statitics. Alarmcode text message |[wm-d1mini.yaml](esphome/wm-d1mini.yaml)| | 🛠 NodeMCU Test |Frist run to find watermeters. Low memory consumption. Messages see Log window or syslog messages |[wm-nodemcu-test.yaml](esphome/wm-nodemcu-test.yaml) | |✔️ NodeMCU |Full version - Sensors and calulated values, Statitics. Alarmcode text message|[wm-nodemcu.yaml](esphome/wm-nodemcu.yaml) |

## Other solutions (alternatively) - 1. [NANOCUL-DOCKER.md](NANOCUL-DOCKER.md) - 2. [NANO-CUL.md](NANO-CUL.md) - 3. [RB3B_DVBT - RTL232-md](RTL232.md) ### For more information see: - - - - - - - #### DVB-T receiver or Nano CUL Adapter - DVB-T receiver: - nano-cul: - diehl watermeter: