Hi all. I just upgraded Home Assistant Core to 2022.11.0 and was hoping to add my water meter to the Energy dashboard now that there’s a way to do that. However, when I go to add the meter, it says there’s “No matching statistics found”. I get my water meter data through the “Eye On Water” HACS integration. That integration reports water usage in “gal” (US gallons). The Energy pane appears to be expecting an entity reporting in either cubic meters (m3) or gigaliters (???) (gl). See screenshot attached. I’m not familiar with common water meter units of measurement outside the USA, but a gigaliter seems like a very large unit to measure residential water usage. Or, is the Energy pane looking for gallons but just expecting the statistics to show “gl” instead of “gal”? I’ve never seen gallons abbreviated as “gl” though.
Same issue for me, I made my own water meter using ESP8266 with values in liters but can’t be detected in the Energy dashboard.
You must add all statistic-needed attributes (unit_of_measurement, device_class & state_class).
Check my template sensor config (water pulse meter data from nodemcu running tasmota):
- name: "water_meter_total_m3"
state: >
{{ states('counter.voda') |float * 0.001 }}
unit_of_measurement: m³
device_class: water
state_class: total_increasing
I am using wmbusmeters for my wireless m-bus meters. I think I have everything set correctly, but it still does not show up for me in the energy dashboard config.
mqtt:
sensor:
- state_topic: "wmbusmeters/ColdWater"
json_attributes_topic: "wmbusmeters/ColdWater"
unit_of_measurement: "m3"
state_class: total_increasing
device_class: water
value_template: "{{ value_json.total_m3 }}"
name: Cold Water
icon: "mdi:gauge-low"
unique_id: cold_water
- state_topic: "wmbusmeters/HotWater"
json_attributes_topic: "wmbusmeters/HotWater"
unit_of_measurement: "m3"
state_class: total_increasing
device_class: water
value_template: "{{ value_json.total_m3 }}"
name: Hot Water
icon: "mdi:gauge"
unique_id: hot_water
Just guessing: m3 x m³?
I kind of sort it out adding this to my configuration.yaml:
template:
- sensor:
- name: "consumi"
state: "{{ states('sensor.total_water_used')|float * 0.001 }}"
unit_of_measurement: m³
device_class: water
state_class: total_increasing
However, I find quite weird that, from an entity in “L”, I have to create another one in “m3” which will be displayed in “L” in the Energy tab…
Here same issue. ESPHome entities are not visable while device_class: water, state_class: total_increasing and unit_of_measurement: m³ are configured. Even tried with unit_of_measurement: m3. Without any result.
I’m also trying to add my water sensor to the energy dashboard but it is also not available.
What do I wrong?
ESPHome:
sensor:
# ⬇ watermeter ⬇ #
- platform: pulse_counter
pin: D2
id: watermeter_pulse
name: "watermeter pulse"
update_interval: 1s
unit_of_measurement: L
accuracy_decimals: 1
filters:
- multiply: 0.01342282
# ⬇ Totaal watermeter ⬇ #
total:
id: sensor_pulse_meter_total
name: "watermeter Totaal"
icon: "mdi:cube-outline"
unit_of_measurement: "L"
accuracy_decimals: 1
filters:
- multiply: 0.8
In Home Assistant:
utility_meter:
waterverbruik_per_dag:
source: sensor.watermeter_totaal
cycle: daily
sensor.waterverbruik_per_dag is not available as option in the energy dashboard for water.
Thanks, looks like m³ helped
I am still waiting for cold water to show up, but I think it is just a matter of getting at least one update from the meter. Both meters now show up after they read new values using the “new” unit of measurement.
I guess ‘L’ does not work, although it is supported by the water device_class.
In my ESPhome I have this:
- platform: pulse_meter
pin: GPIO13
name: "Water Flow Meter"
unit_of_measurement: "L/min"
icon: "mdi:water"
internal_filter: 100ms
timeout: 20s
total:
name: "Water Total"
unit_of_measurement: "L"
device_class: water
state_class: total_increasing
icon: "mdi:water"
I set the unit_of_measurement, device_class and state_class, but I cannot select the sensor in the energy dashboard. I also have the hourly, daily and monthly utility sensors.
If I need to change it to m³, what happens to my history? Can I do a mysql database update query to the measured data in ‘L’ ?
I have a similar problem. My gas consumption is defined as:
mqtt:
sensor:
- name: "Gas volume consumption"
state_topic: "gasmeter/main/value"
value_template: "{{ value| float }}"
unit_of_measurement: "m³"
state_class: 'total_increasing'
device_class: 'gas'
This shows up in my energy dashboard under “Gas Consumption”.
However, my water consumption which is coming from a similar device is defined similarly as:
- name: "Water consumption"
state_topic: "watermeter/main/value"
value_template: "{{ value| float }}"
unit_of_measurement: "m³"
state_class: 'total_increasing'
icon: "mdi:faucet"
device_class: "water"
This doesn’t show up under “Water Consumption” in the energy dashboard.
Is it expected that it behaves differently than gas consumption?
I’m pretty sure that the statistics required states need to go in your home assistant config, not the esphome one.
It looks correct. Maybe use only single quotes not double. I do not use any quotes and it works. You may need a statistics sensor, but it should at least show up in the dropdown.
sensor:
- platform: statistics
entity_id: sensor.water_consumption
state_characteristic: mean
sampling_size: 20
Not sure why the devs made it so darn complicated!
I managed to get data for water consumption but somehow very strange
Based on following incomplete ESPHome device config
sensor:
- platform: pulse_counter
pin:
number: D4
mode: INPUT_PULLUP
count_mode:
rising_edge: DISABLE
falling_edge: INCREMENT
name: 'Conso Eau Potable'
id: 'h2oPotable'
unit_of_measurement: 'L'
icon: 'mdi:water'
internal_filter: 10ms
state_class: measurement
filters:
- lambda: |-
if(x==0){
return {};
} else {
return x;
}
total:
name: 'Eau Potable : volume total'
device_class: water
state_class: total_increasing
unit_of_measurement : m³
filters:
- multiply: 0.001
- platform : integration
name : testintegration
sensor: h2oPotable
time_unit: min
device_class: water
state_class: total
unit_of_measurement : m³
I got the following results in the dashboard
The sensor used is “testintegration” , what’s the prb (except negative value & very high values)
Thx
I created statistics and it indeed shows up. Strange however that this wasn’t needed for my gas consumption.
Also the configuration for water in the energy dashboard it gives the warning:
Last reset missing. The following entities have state class ‘measurement’ but ‘last_reset’ is missing:…
I’m not sure if that is a problem?
FYI, I added the new water device class and converted to m3, below works for gas and water:
sensor:
# Device class, icon, and accuracy are not inherited from main sensor, manually repeat
- platform: pulse_meter
pin:
number: GPIO32
mode: INPUT_PULLUP
internal_filter_mode: PULSE
internal_filter: 100ms
timeout: 60s
unit_of_measurement: 'gal/min'
accuracy_decimals: 3
name: ${device_name}_water_meter
icon: 'mdi:water'
filters:
- multiply: 10
total:
name: ${device_name}_water_meter_total
icon: 'mdi:water'
device_class: 'water'
id: water_total
unit_of_measurement: 'gal'
accuracy_decimals: 3
filters:
- multiply: 10
- platform: pulse_meter
pin:
number: GPIO33
mode: INPUT_PULLUP
internal_filter_mode: PULSE
internal_filter: 100ms
timeout: 60s
unit_of_measurement: 'ft³/min'
accuracy_decimals: 3
name: ${device_name}_gas_meter
icon: 'mdi:fire'
filters:
- multiply: 10
total:
name: ${device_name}_gas_meter_total
icon: 'mdi:fire'
device_class: 'gas'
id: gas_total
unit_of_measurement: 'ft³'
accuracy_decimals: 3
filters:
- multiply: 10
# https://esphome.io/components/sensor/template.html
# TODO: l unit for water is not used, m³ is used, remove l when no longer needed
- platform: template
name: ${device_name}_water_meter_total_l
icon: 'mdi:water'
device_class: 'water'
state_class: 'total_increasing'
accuracy_decimals: 3
unit_of_measurement: 'l'
# Convert gal to l
lambda: |-
return id(water_total).state / 3.785;
- platform: template
name: ${device_name}_water_meter_total_m3
icon: 'mdi:water'
device_class: 'water'
state_class: 'total_increasing'
accuracy_decimals: 3
unit_of_measurement: 'm³'
# Convert gal to m³
lambda: |-
return id(water_total).state / 0.003785;
- platform: template
name: ${device_name}_gas_meter_total_m3
icon: 'mdi:fire'
device_class: 'gas'
state_class: 'total_increasing'
accuracy_decimals: 3
unit_of_measurement: 'm³'
# Convert ft³ to m³
lambda: |-
return id(gas_total).state / 35.315;
I think there are a few issues in this thread, but for me, I was not able to add my ESPHome water sensor with the “gl” unit_of_measurement
when I changed it according to the dropdown hint. (I read ‘gl’ as an abbreviation for gallons, even though I’ve never seen that either).
I changed the unit_of_measurement
in my ESPHome yaml to m³
and It was found. I tried changing it back to ‘gl’ to see what would happen, and I got this warning
So even though the dropdown “hint” asks for ‘gl’ or ‘m³’, the warning says it wants ‘m³ or ’ ft³’. If I change the unit_of_measurement
in ESPHome to ‘gal’ it also works.
Here’s my working ESPHome water configuration:
- platform: pulse_counter
pin: D1
accuracy_decimals: 2
unit_of_measurement: 'GPH'
update_interval: 1s
name: "Main Water"
id: main_water
icon: mdi:water
filters:
# 330 pulses/L .00303 L/m * 15.8503 to get GPH
- multiply: 0.048031212
total:
unit_of_measurement: 'gal'
name: 'Total Main Water'
id: total_main_water
icon: mdi:water
device_class: water
filters:
# 330 pulses/L 3.78541 L/G
- multiply: 0.0008005217
So my problem was just confusion between what the dropdown says vs the warning vs what it really wants in addition to a lack of documentation here Integrating your water usage - Home Assistant (or maybe I just completely missed the relevant documentation). Hope it helps someone.
I’ve tried various things based on information in this thread, but still have no relevant data in my Energy Dashboard for water section. Could someone help with a full example ESPHome yaml and Configuration.yaml or help me correcting my mistakes.
relevant part of my ESPHome yaml (for ESP8266 with NPN sensor):
relevant part of configuration.yaml:
Exact same issue here too, nothing comes in. Made sure i had some usage but no luck so far. Dashboard does say it can take up to 2 hours but since this data is coming in i assume that doesn’t matter. I left it on for a day too, no change.
Can anyone that has the dropdown list filled, show the content of the entiity? In what format it comes in, so we can compare?
Apparently, it is a problem indeed. After almost a day water consumption in the energy panel is still at 0 while the sensor (and statistics) reports more than 0 usage.