Ok, could it be that it is also due to the Rasberry PI4, I am using a Raspberry P3B with firmware 4.14.93-Re4son-v7 +.
Maybe you can sell NANO-CUL to-masz
see: Question on NANO-CUL (mbus) 868 Mhz · Issue #3 · zibous/ha-watermeter · GitHub
Ok, could it be that it is also due to the Rasberry PI4, I am using a Raspberry P3B with firmware 4.14.93-Re4son-v7 +.
Maybe you can sell NANO-CUL to-masz
see: Question on NANO-CUL (mbus) 868 Mhz · Issue #3 · zibous/ha-watermeter · GitHub
Hi, I’ve just had a meter installed by Severn Trent in the UK:
I’m getting the following from the test:
15:10:45 [D] [wmbus:184]
Meter ID [0x32502971] RSSI: -63 dBm LQI: 128 Mode: T1 not found in configuration T: 5E44A511712950327C077A18005005957E2B712BFB380A541D21A79AD7D3A68964CC4BE9A11C894BF7350D19FD8CFA9CFDFCFDFEB821FF4AB827ACBCFAD4ED0F53E60F742C34129B9309914F693680667F1B9D61DF866FF1CF0995C1F78290 (95)
The messages I get don’t seem to analyse properly. https://wmbusmeters.org/analyze/5E44A511712950327C077A18005005957E2B712BFB380A541D21A79AD7D3A68964CC4BE9A11C894BF7350D19FD8CFA9CFDFCFDFEB821FF4AB827ACBCFAD4ED0F53E60F742C34129B9309914F693680667F1B9D61DF866FF1CF0995C1F78290
Any guidance at all on what i’m doing wrong?
I also get one random message of length 47:
15:47:24 [I] [wmbus:084]
Using driver ‘izar’ for ID [0x32502971] RSSI: -60 dBm LQI: 128 Mode: T1 T: 2E44A511712950327C077A1B0020255880EB29D37780CA3BB0E8FE42B85E3AB5F30BDFDEBCF2866DF956FB3C27E84A (47)
It seems to indicate an encryption key is required. Is that right? If so, where would I get this from and how do I add it to the configuration?
Hi @jamesdean, ST Water have just upgraded water meter to the same as yours - IZAR RC 868 i W G4.
Did you manage to make get yours working? I’ve tried using a ESP32/CC1101 approach (GitHub - zibous/ha-watermeter: Data provider for smartmeter watermeter.) but it doesn’t seem to pick anything up in the test.
It may be due to the following reasons:
For testing you can find ready-made firmware here:
Hi Amardeep, ST Water recently installed an IZAR RC 868 i W G4 meter outside my property and I am interested in creating a device to obtain the water useage reading without having to go outside the property.
Prior to purchasing any items I would appreciate if you could let me know if you manage to get your ESP32/CC1101 device to obtain the readings.
Any guidance you could provide would be appreciated.
Hi jamesdean, ST Water recently installed an IZAR RC 868 i W G4 meter outside my property and I am interested in creating a device to obtain the water useage reading without having to go outside the property.
Did you manage to resolve the issues that you had?
I would appreciate any guidance that you could provide regarding hardware used and if an encryption key is required.
Sadly not. I managed to get a connection, however ST refused to hand over the encryption key. It sounds like they use one key for all meters!
Thanks for your reply, it’s doubtful then that it will be possible to obtain the encryption key but if I see anything I will let you know.
Hi Petsi. I run this test file and I could read my meter when analyzing the frame. Nevertheless it wont show values in my application from → ha-watermeter/esphome/wm-esp32-test.yaml at 3001bd06ae586ba7607d0a7c78296d947b85514b · zibous/ha-watermeter · GitHub
Does it mean I need an encryption key?
thanks for your reply
oferl
Some watermeter needs a encryption key.
Check with verbose
logging:
log_level: "VERBOSE" # not that logging need memory, so in production mode use "WARN"
log_wmbus: "VERBOSE" # Loglevel for wmbus meters component
Which version esphome ?
Problem see : fault since last esphome update · Issue #46 · zibous/ha-watermeter · GitHub
I see that but mine is LoRaWAN + 868MHz (the 868MHz is an option but is available according to the picture and confirmed by my water company).
UPDATE: I ordered a CC1101 and hope for the best, it was cheap so even if it is useless, I’ll try
Hi Petsie.
Sorry my late response. I am on 2024.7.2 (core).
Hi again.
some additional remarks. If I leave “wmid” at 0 - CC1101 LQI and CC1101 RSSI display some values. Does that help?
tx
oferl
This is correct, but if you use wmid=0
only the watermeter ID’s will be displayed on the logs.
Only if the watermeter id <> 0 then you will see the decoded data on the dashboard.
Yes - thats what I thought but if I enter my meter id I still see all others as well - funny. I tried with !secret meterid or directly inserted in my file. No change at all. I dont think it has to do with a missing key otherwise not even LQI and RSSI values will be displayed, am I right?
Any other suggestions.
tx for your patience oferl
No LQI and RSSI values are from the CC1101 and if this is working you can see the values otherwise the CC1101 is not working.
I tried with !secret meterid or directly inserted in my file.
Yes this is possible for testing, for production set the Watermeter ID by secrets.
You can try this:
## ---------------------------------------------------------------------------
## WMBUS METER az-delivery-devkit-v4 + CC1101 for Diehl IZAR RC 868 I R4 PL
## Hardware: ESP32 240MHz, 520KB RAM, 4MB Flash
##
## this version shows all watermeters. Use this for the first test
##
## 1. uses the latest wmbusmeter component from github
##
## ---------------------------------------------------------------------------
substitutions:
## device settings
device_name_short: "watermeter-test"
friendly_name: "Watermeter"
device_description: "Testcase Wasserzähler ESP32, CUL - CC1101, IZAR module (Diehl IZAR RC 868 I R4 PL (SzczepanLeon) - all watermeters"
# The format of the name should be author_name.project_name.
projectname: "Diehl IZAR RC 868.Watermeter"
appversion: "2.0.7"
hardware: "ESP32_Devkit_V4"
location: "Labor"
# 1. Search Meter ID (wmid="0")
# wmid="0" # all watermeters
# log_level: "VERBOSE"
# log_wmbus: "VERBOSE"
# save and compile and install to device
# see log to find the Meter ID (wmid)
# [17:53:37][D][wmbus:182]: Meter ID [0x90620778] RSSI: -87 dBm LQI: 129 Frame: T1 A not found in configuration T:...
# 2. Edit wmid
# + wmid="0x90620778"
# + Compile and install
# For produktion set:
# log_level: "WARN"
# log_wmbus: "WARN"
wmid: "0"
## your watermeter: wmid: !secret watermeterId
## wmid: "0x90620778" # Test other watermeter
## logger settings
log_level: "VERBOSE" # not that logging need memory, so in production mode use "WARN"
log_wmbus: "VERBOSE" # Loglevel for wmbus meters component
log_baudrate: "0" # 0 disable uart logger messages
## ------------------------------------------------------------------
## HARDWARE az-delivery-devkit-v4
## https://esphome.io/components/esp32
## ------------------------------------------------------------------
esp32:
board: esp32dev
framework:
type: arduino
## ----------------------------------------------------------------
## APPLICATION ESPHOME
## ----------------------------------------------------------------
esphome:
name: ${device_name_short}
build_path: ./build/${device_name_short}
comment: ${device_description}
on_boot:
priority: 600
then:
- logger.log:
level: info
format: "BOOTMESSAGE: device ${device_name_short} API is connected, Device ready!"
- globals.set:
id: boot_counter
value: !lambda "return id(boot_counter)+=1;"
- component.update: bootcounter
on_shutdown:
then:
- logger.log:
level: ERROR
tag: "system"
format: "BOOTMESSAGE: device ${device_name_short} is down!"
project:
# This allows creators to add the project name and version to the compiled code.
# It is currently only exposed via the logger, mDNS and the device_info response
# via the native API. The format of the name should be author_name.project_name.
name: ${projectname}
version: ${appversion}
area: ${location}
platformio_options: {}
includes: []
libraries: []
name_add_mac_suffix: false
# minimum version of ESPHome required to compile.
min_version: 2024.6.6
## ----------------------------------------------------------------
## EXTERNAL COMPONENTS
## ----------------------------------------------------------------
external_components:
# uses the latest version from SzczepanLeon
# https://github.com/SzczepanLeon/esphome-components
# You can make ESPHome check the repository every time by setting this option to 0s
- source: github://SzczepanLeon/esphome-components@main
refresh: 0s
components: [wmbus]
## ----------------------------------------------------------------
## GLOBALS VARIABLES
## ----------------------------------------------------------------
globals:
- id: boot_counter
type: int
restore_value: yes
initial_value: "0"
- id: last_value
type: float
restore_value: yes
initial_value: "0.00"
- id: alarm_error_text
type: std::vector<std::string>
restore_value: no
initial_value: '{"no error", "general_alarm","leakage","meter_blocked","back_flow","underflow","overflow","submarine","sensor_fraud","mechanical_fraud"}'
## ------------------------------------------------------------------
## COMPONENT LOGGER
## https://esphome.io/components/logger.html
## ------------------------------------------------------------------
logger:
id: appslogger
level: ${log_level}
baud_rate: ${log_baudrate}
logs:
wmbus: ${log_wmbus}
wMBus-lib: ${log_wmbus}
sensor: WARN
sensor.filter: WARN
text_sensor: WARN
api.service: ERROR
json: ERROR
mqtt: WARN
scheduler: ERROR
internal_temperature: ERROR
wifi: WARN
component: ERROR
api: WARN
## ------------------------------------------------------------------
## COMPONENT WIFI
## https://esphome.io/components/wifi.html
## ------------------------------------------------------------------
wifi:
networks:
- ssid: <edit your wlan ssid>
password: <edit your wlan ssid password>
priority: 0.0
reboot_timeout: 15min
power_save_mode: LIGHT
fast_connect: false
passive_scan: false
enable_on_boot: true
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "${friendly_name} Fallback Hotspot"
password: <edit your Fallback hotspot password>
## ------------------------------------------------------------------
## COMPONENT Captive Portal
## ------------------------------------------------------------------
## The captive portal component in ESPHome is a fallback mechanism
## for when connecting to the configured WiFi fails.
## https://esphome.io/components/captive_portal.html
## ------------------------------------------------------------------
captive_portal:
## ---------------------------------------------------
## mDNS Component
## https://esphome.io/components/mdns.html
## ---------------------------------------------------
mdns:
# Both Home Assistant and the ESPHome dashboard use mDNS to identify the IP address
# of all ESPHome nodes on the network. If mDNS is disabled, they will no longer
# be able to automatically find your devices.
disabled: false
## ------------------------------------------------------------------
## COMPONENT Over-the-Air Updates
## https://esphome.io/components/ota/#over-the-air-updates
## ------------------------------------------------------------------
ota:
platform: esphome
password: !secret ota_pswd
on_begin:
then:
- logger.log:
format: "OTA Start"
tag: "OTA"
level: WARN
on_progress:
then:
- logger.log:
level: WARN
tag: "OTA"
format: "OTA progress %0.1f%%"
args: ["x"]
on_end:
then:
- logger.log:
format: "OTA End"
tag: "OTA"
level: WARN
on_error:
then:
- logger.log:
format: "OTA update error %d"
tag: "OTA"
level: ERROR
args: ["x"]
## ------------------------------------------------------------------
## COMPONENT WEBSERVER
## The web_server component creates a simple web server on the node
## that can be accessed through any browser and a simple REST API.
## https://esphome.io/components/web_server.html
## ------------------------------------------------------------------
web_server:
port: 80
version: 3
local: false
## ---------------------------------------------------
## Home Assistant API COMPONENT
## ---------------------------------------------------
api:
id: espapi_wmbus_esp32
port: 6053
reboot_timeout: 0s
## ---------------------------------------------------
## SNTP COMPONENT
## ---------------------------------------------------
time:
- platform: sntp
id: time_sntp
timezone: Europe/Berlin
servers:
- 0.at.pool.ntp.org
- 0.pool.ntp.org
- 1.pool.ntp.org
on_time_sync:
then:
- logger.log:
tag: "system"
level: INFO
format: "Synchronized sntp clock"
## ------------------------------------------------------------------
## WMBUS CC1101 --> ESP32 az-delivery-devkit-v4
## ------------------------------------------------------------------
##
##
## o 1 (3.3V)
## |
## ╭――x――x――x――x――x――x――x――x――x――x――x――x――x――x――x――x――x――x――x――o―╮
## | |
## | |
## - | 5v az-delivery-devkit-v4 | -- ANT
## | |
## | 16 17 5 18 19 23 |
## ╰――x――x――x――x――x――x――x――x――o――x――o――o――o――o――o――o――o――o――o――o―╯
## | | | | | | |
## o | | o | | ╰-o - 2 (GND)
## 7 o | 4 o o
## GDO0 6 | CLK 5 3
## GD02 o MISO M0SI
## 8
## CSN
##
## ------------------------------------------------------------------
wmbus:
mosi_pin: GPIO23 ## SI: braun
miso_pin: GPIO19 ## SO: grün
clk_pin: GPIO18 ## SCLK: violett
cs_pin: GPIO05 ## CSN: orange
gdo0_pin: GPIO16 ## GD00: gelb (rx)
gdo2_pin: GPIO17 ## GD02: weiss (tx)
# log_unknown (Optional): Show telegrams from not configured meters in log.
# Defaults to False
log_unknown: True
## ---------------------------------------------------
## SWITCHES, BUTTONS
## ---------------------------------------------------
button:
# reset boot counter value
- platform: template
name: Device Boot Counter reset
entity_category: "config"
icon: mdi:restart
on_press:
then:
- lambda: |-
id(boot_counter) = 0;
id(bootcounter).publish_state(id(boot_counter));
- logger.log:
level: WARN
tag: "system"
format: "${device_name_short} reset boot counter o.k!"
- component.update: bootcounter
- platform: safe_mode
name: "Device Restart (Safe Mode)"
icon: mdi:restart
entity_category: "config"
disabled_by_default: false
- platform: restart
name: "Device Restart"
id: restart_switch
icon: mdi:restart
entity_category: "config"
disabled_by_default: false
- platform: factory_reset
name: Device Restart Factory
icon: mdi:restart
entity_category: "config"
disabled_by_default: false
## ---------------------------------------------------
## SENSORS
## ---------------------------------------------------
sensor:
- platform: wmbus
# Meter ID (usually from sticker). Can be specified as decimal or hex.
# only hex is working for my watermeter !
# see: https://github.com/SzczepanLeon/esphome-components/issues/6
# edit watermeterid in the secrets file
meter_id: ${wmid}
type: izar
add_prefix: true
# The LQI value reported by the CC1101 is a 7 bit unsigned number with a range from 0 to 127.
# Note that a lower value indicates a better link.
# The LQI of a received packet will be bad (higher number) when there is lot of interference.
lqi:
id: wmbus_cc1101_lqi
name: "CC1101 LQI"
unit_of_measurement: "lqi"
icon: mdi:rss
entity_category: "diagnostic"
# The RSSI value reported by the CC1101 is a 8 bit signed number with an effective
# range from -138 dBm to -10.5 dBm when the CC1101 is operating around 868 MHz.
# RSSI stands for received signal strength (power) indication (in dBm).
# A higher value indicates higher power.
rssi:
id: wmbus_cc1101_rssi
name: "CC1101 RSSI"
icon: mdi:wifi-strength-1
unit_of_measurement: "dbm"
entity_category: "diagnostic"
# reports the watermeter display value
total_water_m3:
id: "waterdisplay"
name: "Total water"
unit_of_measurement: "m³"
state_class: total_increasing
device_class: "water"
accuracy_decimals: 3
icon: mdi:counter
# update and calulatet all watermeter data values
on_value:
then:
- lambda: |-
ESP_LOGI("wmbus", "Water Display value: %.3f, last value: %.3f", id(waterdisplay).state, id(last_value));
id(last_value)=id(waterdisplay).state;
- text_sensor.template.publish:
id: watermeter_lastupdate
state: !lambda return id(time_sntp).now().strftime("%Y-%m-%dT%H:%M:%S %Z");
# get the last month total watermter m3 from the wmbus telegram (wM-Bus 2.1.10)
last_month_total_water_m3:
name: "Water last month"
id: "waterdisplay_lastmonth"
unit_of_measurement: "m³"
state_class: total_increasing
device_class: "water"
accuracy_decimals: 3
icon: mdi:counter
# water current month (wM-Bus v2.1.4)
current_month_total_water_l:
name: "Water current month"
id: "watermonth"
accuracy_decimals: 2
unit_of_measurement: "L"
state_class: total_increasing
device_class: "water"
# get the battery life time (wM-Bus v2.1.4)
remaining_battery_life_y:
name: "Battery Life"
id: "watermeter_batterie"
accuracy_decimals: 2
unit_of_measurement: "Years"
icon: mdi:battery
# get the last transmit periode (wM-Bus v2.1.4)
transmit_period_s:
name: "Intervall"
id: "watermeter_transmit_periode"
unit_of_measurement: "sec"
accuracy_decimals: 2
icon: mdi:timelapse
## get the current watermeter alarms and publish the text message (wM-Bus 2.1.10)
current_alarms:
id: "watermeter_current_alarms"
name: "Current alarm code"
icon: mdi:alarm-light
entity_category: "diagnostic"
## get the prevois watermeter alarms and publish the text message (wM-Bus 2.1.10)
previous_alarms:
id: "watermeter_previous_alarms"
name: "Pervious alarm code"
icon: mdi:alarm-light
entity_category: "diagnostic"
# device uptime in hours
- platform: uptime
name: Device Uptime
id: device_uptime
icon: mdi:clock-start
filters:
- lambda: return x / 3600;
unit_of_measurement: "h"
entity_category: "diagnostic"
state_class: "measurement"
accuracy_decimals: 2
# device internal temperature
- platform: internal_temperature
name: Device Internal Temperature
id: device_internal_temperature
icon: mdi:thermometer-lines
state_class: "measurement"
update_interval: 60s
entity_category: "diagnostic"
disabled_by_default: true
- platform: wifi_signal
id: wifisignal
name: Device WiFi Signal
icon: mdi:wifi-strength-1
update_interval: 60s
entity_category: diagnostic
disabled_by_default: true
force_update: false
unit_of_measurement: dBm
accuracy_decimals: 0
device_class: signal_strength
state_class: measurement
# device boot counter
- platform: template
name: Device Boot counter
id: bootcounter
icon: mdi:counter
accuracy_decimals: 0
state_class: "measurement"
entity_category: "diagnostic"
lambda: return (id(boot_counter));
## ---------------------------------------------------
## TEXT SENSOREN
## https://esphome.io/components/text_sensor/
## ---------------------------------------------------
text_sensor:
# Wifi Info (parts only on webserver)
# https://esphome.io/components/text_sensor/wifi_info.html
- platform: wifi_info
ssid:
name: Device WIFI WLAN SSID
id: wlan_ssid
icon: mdi:wifi-settings
entity_category: "diagnostic"
bssid:
name: Device WIFI WLAN BSSID
icon: mdi:wifi-star
disabled_by_default: true
entity_category: "diagnostic"
ip_address:
name: Device WIFI IP Address
icon: mdi:ip
disabled_by_default: true
entity_category: "diagnostic"
dns_address:
name: Device WIFI DNS Address
icon: mdi:dns
disabled_by_default: true
entity_category: "diagnostic"
# waterdisplay timestamp last update (updated by id: "waterdisplay")
- platform: template
name: Timestamp
id: watermeter_lastupdate
icon: mdi:clock-start
entity_category: "diagnostic"
# installed esphome version
- platform: version
name: ESPHome Version
id: eshome_version
hide_timestamp: true
disabled_by_default: true
icon: mdi:information-box-outline
## E.O.F
if all is working you can see this:
Hi Petsie.
thanks for your support but no luck so far. Using meter id “0” I got this in diagnostics: