7.2 KiB
layout, title, description, date, sidebar, comments, sharing, footer, ha_category, ha_release, ha_iot_class, logo, ha_qa_scale
| layout | title | description | date | sidebar | comments | sharing | footer | ha_category | ha_release | ha_iot_class | logo | ha_qa_scale |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| page | Utility Meter | Instructions on how to integrate the Utility Meter into Home Assistant. | 2019-01-02 | true | false | true | true | Sensor | 0.87 | Local Push | energy_meter.png | internal |
The utility meter component provides functionality to track consumptions of various utilities (e.g., energy, gas, water, heating).
From a user perspective, utility meters operate in cycles (usually monthly) for billing purposes. This sensor will track a source sensor values, automatically resetting the meter based on the configured cycle. On reset an attribute will store the previous meter value, providing the means for comparison operations (e.g., "did I spend more or less this month?") or billing estimation (e.g., through a sensor template that multiplies the metered value per the charged unit amount).
Some utility providers have different tariffs according to time/resource availability/etc. The utility meter enables you to define the various tariffs supported by your utility provider and accounts your consumptions in accordance. When tariffs are defined a new entity will show up indicating the current tariff. In order to change the tariff, the user must call a service, usually through an automation that can be based in time or other external source (eg. a REST sensor).
Sensors created with this component are persistent, so values are retained across restarts of home assistant. The first cycle for each sensor, will be incomplete; a sensor tracking daily usage, will start to be accurate the next day after the component was activated. A sensor tracking monthly usage, will present accurate data starting the first of the next month after being added to home assistant.
{% linkable_title Configuration %}
To enable the Utility Meter Sensor in your installation, add the following to your configuration.yaml file:
# Example configuration.yaml entry
utility_meter:
energy:
source: sensor.energy_in_kwh
cycle: monthly
{% configuration %}
source:
description: The entity ID of the sensor providing utility readings (energy, water, gas, heating).
required: true
type: string
cycle:
description: How often to reset the counter. Valid values are hourly, daily, weekly, monthly and yearly.
required: true
type: string
offset:
description: "Cycle reset occur at the beginning of the period (0 minutes, 0h00 hours, Monday, day 1, January). This option enables the offsetting of these beginnings. Supported formats: offset: 'HH:MM:SS', offset: 'HH:MM' and Time period dictionary (see example below)."
required: false
default: 0
type: time
type: integer
net_consumption:
description: Set this to True if you would like to treat the source as a net meter. This will allow your counter to go both positive and negative.
required: false
default: false
type: boolean
tariffs:
description: List of tariffs supported by the utility meter.
required: false
default: []
type: list
{% endconfiguration %}
{% linkable_title Time period dictionary example %}
offset:
# At least one of these must be specified:
days: 1
hours: 0
minutes: 0
{% linkable_title Services %}
{% linkable_title Service utility_meter.reset %}
Reset the Utility Meter. All sensors tracking tariffs will be reset to 0.
| Service data attribute | Optional | Description |
|---|---|---|
entity_id |
no | String or list of strings that point at entity_ids of utility_meters. |
{% linkable_title Service utility_meter.next_tariff %}
Change the current tariff to the next in the list. This service must be called by the user for the tariff switching logic to occur (e.g. using an automation)
| Service data attribute | Optional | Description |
|---|---|---|
entity_id |
no | String or list of strings that point at entity_ids of utility_meters. |
{% linkable_title Service utility_meter.select_tariff %}
Change the current tariff to the given tariff. This service must be called by the user for the tariff switching logic to occur (e.g. using an automation)
| Service data attribute | Optional | Description |
|---|---|---|
entity_id |
no | String or list of strings that point at entity_ids of utility_meters. |
tariff |
no | String that is equal to one of the defined tariffs. |
{% linkable_title Advanced Configuration %}
The following configuration shows an example where 2 utility_meters (daily_energy and monthly_energy) track daily and monthly energy consumptions.
Both track the same sensor (sensor.energy) which continously monitors the energy consumed.
4 different sensors will be created, 2 per utility meter and corresponding to each tariff.
Sensor sensor.daily_energy_peak, sensor.daily_energy_offpeak, sensor.monthly_energy_peak and sensor.monthly_energy_offpeak will automatically be created to track the consumption in each tariff for the given cycle.
utility_meter.daily_energy and utility_meter.monthly_energy entities will track the current tariff and provide a service to change the tariff.
utility_meter:
daily_energy:
source: sensor.energy
cycle: daily
tariffs:
- peak
- offpeak
monthly_energy:
source: sensor.energy
cycle: monthly
tariffs:
- peak
- offpeak
Assuming your energy provider tariffs are time based according to:
- peak: from 9h00 to 21h00
- offpeak: from 21h00 to 9h00 next day
a time based automation can be used:
automation:
trigger:
- platform: time
at: '09:00:00'
- platform: time
at: '21:00:00'
action:
- service: utility_meter.next_tariff
entity_id: utility_meter.daily_energy
- service: utility_meter.next_tariff
entity_id: utility_meter.monthly_energy
{% linkable_title Advanced Configuration for DSMR users %}
When using the DSMR component to get data from the utility meter, each tariff (peak and off-peak) has a separate sensor. Additionally, there is a separate sensor for gas consumption. The meter switches automatically between tariffs, so an automation is not necessary in this case. But, you do have to setup a few more instances of the utility_meter component.
If you want to create a daily and monthly sensor for each tariff, you have to track separate sensors:
sensor.power_consumption_lowfor off-peak powersensor.power_consumption_normalfor peak powersensor.gas_consumptionfor gas consumption
So, tracking daily and monthly consumption for each sensor, will require setting up 6 entries under the utility_meter component.
utility_meter:
daily_power_offpeak:
source: sensor.power_consumption_low
cycle: daily
daily_power_peak:
source: sensor.power_consumption_normal
cycle: daily
daily_gas:
source: sensor.gas_consumption
cycle: daily
monthly_power_offpeak:
source: sensor.power_consumption_low
cycle: monthly
monthly_power_peak:
source: sensor.power_consumption_normal
cycle: monthly
monthly_gas:
source: sensor.gas_consumption
cycle: monthly