In our house we have a few older generation Teckin SP22’s running Espurna and newer Gosund SP111 running Tasmota that all publish their energy statistics via MQTT to Home Assistant.

I wanted a unified way to visualise the daily and monthly energy usage of these devices to better grasp how much energy we are consuming.

Home Assistant provides a Utility Meter component that allows exactly that behaviour, with the granularity of even providing peak and off-peak tariffs if your energy provider offer such.

The problem however is this operates on a single entity and the devices that I had configured are exposed individually.

e.g. this is how Espurna and Tasmota expose them when manually configured.

# Tasmota - name : socket_7_energy platform : mqtt state_topic : " tele/socket-7/SENSOR" value_template : ' ' unit_of_measurement : kWh - name : socket_7_power platform : mqtt state_topic : " tele/socket-7/SENSOR" value_template : ' ' unit_of_measurement : W # Espurna - name : socket_balcony_energy platform : mqtt state_topic : socket-6/energy unit_of_measurement : kWh - name : socket_balcony_power platform : mqtt state_topic : socket-6/power unit_of_measurement : W

To unify these sensor readings you can use the powerful Templating platform to combine these and expose them as a single reading.

- platform : template sensors : energy_total_usage : friendly_name : Total Energy Usage unit_of_measurement : kWh value_template : >- {{ (states.sensor.socket_media_energy.state | float) + (states.sensor.socket_desk_energy.state | float) + (states.sensor.socket_coffee_energy.state | float) + (states.sensor.socket_aurora_bedlight_energy.state | float) + (states.sensor.socket_fairy_lights_energy.state | float) + (states.sensor.socket_7_energy.state | float) + (states.sensor.socket_8_energy.state | float) }} power_total_usage : friendly_name : Total Power Usage unit_of_measurement : W value_template : >- {{ (states.sensor.socket_media_power.state | float) + (states.sensor.socket_desk_power.state | float) + (states.sensor.socket_coffee_power.state | float) + (states.sensor.socket_aurora_bedlight_power.state | float) + (states.sensor.socket_fairy_lights_power.state | float) + (states.sensor.socket_7_power.state | float) + (states.sensor.socket_8_power.state | float) }}

Next you’ll be able to hook up the utility meter configuration as such.

energy_total_usage_daily : source : sensor.energy_total_usage cycle : daily energy_total_usage_monthly : source : sensor.energy_total_usage cycle : monthly

Visualising

Like in previous posts, I highly recommend the Mini Graph Card extension by @kalkih. It provides various minimalistic and customisable cards that can be useful for displaying metrics and sensor statistics.

- type : custom:mini-graph-card name : Energy Daily entities : - sensor.energy_total_usage_daily

- type : custom:mini-graph-card name : Energy Monthly entities : - sensor.energy_total_usage_monthly

- type : gauge name : Power unit : W max : 1500 entity : sensor.power_total_usage severity : green : 100 yellow : 150 red : 300

- type : custom:mini-graph-card name : Power icon : mdi:flash entities : - sensor.power_total_usage show : graph : bar

Next steps

While this easily gives you nice daily and monthly unified overviews the power consumption of your smart plugs it doesn’t allow you to query other time frames or drill down by device, without exposing the stats for each sensor manually.

An alternative approach which would complement this setup would be to publish your sensor stats to InfluxDB and graph this data using Grafana. But that’ll be for another post.

Further reading