I’m brand new to HA and learning a lot in a short time. A lot of issues I could find on the forum, but there is one thing I couldn’t figure out.
The situation:
I have a smart energy meter for power and gas usage, which I can read with a P1 cable to my raspberry pi 4 where HA is running on. I got the readings working from the meter which is really nice. The meter works with two tariffs, low and high. Unfortunately sensor “total energy consumption” is coming in without a value. So in the front-end of HA I see now “total energy consumption tarif 1” and “total energy consumption tarif 2”. The additional I want is this two added up so I have the total energy consumption.
Now I started searching how to do this. I know I have to make a “sensor” in the configuration.yaml file. But the question is the coding, still a noob in this. So I need to sum two entities, the outcome will be the new sensor.
I’ve tried different variants but I keep getting an error, propably because the code is wrong:
Error loading /config/configuration.yaml: mapping values are not allowed here in “/config/configuration.yaml”, line 43, column 26
Invalid config for [sensor.template]: invalid template (TemplateSyntaxError: expected token ‘end of print statement’, got ‘:’) for dictionary value @ data[‘sensors’][‘energie_verbruik_totaal’][‘value_template’]. Got ‘{{ entity:sensor.energy_consumption_tarif_1 + entity:sensor.energy_consumption_tarif_2 }}’. (See ?, line ?).
Could someone help me pointing the correct direction, that would be great!
Error loading /config/configuration.yaml: while parsing a block mapping in “/config/configuration.yaml”, line 38, column 13 expected , but found ‘’ in “/config/configuration.yaml”, line 40, column 41
Invalid config for [sensor.template]: invalid template (TemplateSyntaxError: expected token ‘,’, got ‘sensor’) for dictionary value @ data[‘sensors’][‘energie_verbruik_totaal’][‘value_template’]. Got “{{ float(states('sensor.energy_consumption_tarif_1)) + float(states('sensor.energy_consumption_tarif_2)) }}”. (See ?, line ?).
Error loading /config/configuration.yaml: invalid key: “OrderedDict([(“float(states('sensor.energy_consumption_tarif_1)) + float(states('sensor.energy_consumption_tarif_2))”, None)])” in “/config/configuration.yaml”, line 40, column 0
Error loading /config/configuration.yaml: invalid key: “OrderedDict([(“float(states(‘sensor.energy_consumption_tarif_1’)) + float(states(‘sensor.energy_consumption_tarif_2’))”, None)])” in “/config/configuration.yaml”, line 40, column 0
Hi @darryl12123 - what I do to debug these type of issues is to use the template editor under developer tools (You should see Developer Tools on the left hand side of Home Assistant UI). Then select Template from the tabs. Home Assistant uses Jinja2 templating. Then copy the value_template into the template editor window. On the right hand side you see the result of the templating code. If there is an error it will show up in red, explaining where you went wrong.
That tool is really nice, thanks for pointing it out! I I copied your code and it seems to work in the template editor. When I put the code in config.yaml file I loose all the readings on the meter.
See below my full config.yaml file:
# Configure a default setup of Home Assistant (frontend, api, etc)
default_config:
# Uncomment this if you are using SSL/TLS, running in Docker container, etc.
# http:
# base_url: example.duckdns.org:8123
# Text to speech
tts:
- platform: google_translate
group: !include groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
tado:
username: *********
password: *********
sensor:
- platform: dsmr
port: /dev/ttyUSB0
dsmr_version: 5
group:
meter_readings:
name: Meter readings
entities:
- sensor.energy_consumption_tarif_1
- sensor.energy_consumption_tarif_2
- sensor.energy_production_tarif_1
- sensor.energy_production_tarif_2
- sensor.gas_consumption
homeassistant:
customize: !include customize.yaml
sensor:
- platform: template
sensors:
energie_verbruik_totaal:
friendly_name: "Energie Verbruik (totaal)"
unit_of_measurement: 'kWh'
value_template: '{{ states("sensor.energy_consumption_tarif_1") |float + states("sensor.energy_consumption_tarif_2") | float }}'
Aaah that is the issue, great! Everything is working now, amazing! Thanks!
I just have an additional question regarding entities;
When I added the meter in the config.yaml file, a lot of entities were added in the list but as you can see in the config.yaml file there are only 5 entities listed. All the extra entities are also not working (no value showing). How and why are those extra entities in the list and are they not working because it is not supported?
I expect that I can use something like sensor.P1_totaal to be available for displaying the newly calculated value. But I can’t find it. where am I going wrong?
still no luck.
the Template test section of developer tools does not show any errors and the calculation is fine.
the configuration is ok according to the config page.
and all my MQTT sensors are working fine
If I look to the mqtt sensor, I can specify the name with lower and uppercase, but indeed as search the sensor the it is sensor.p1_gas_day all in lowercase.