Legacy sensor template deprecation converting problem

Today I updated to 2025.12 and i got this message:

this message

The legacy platform: template syntax for sensor is being removed. Please migrate power_import_oben to the modern template syntax.

Step 1 - Remove legacy configuration

Remove the power_import_oben template definition from the configuration.yaml sensor: section.

Note: If you are using sensor: !include <filename>.yaml in configuration.yaml, remove the sensor definition from the included <filename>.yaml.

Step 2 - Add the modern configuration

Add new template definition inside configuration.yaml:

template:
- sensor:
  - unit_of_measurement: W
    default_entity_id: sensor.power_import_oben
    availability: '{{ [ states(''sensor.shellypro3em_oben_phase_a_active_power''),
      states(''sensor.shellypro3em_oben_phase_b_active_power''), states(''sensor.shellypro3em_oben_phase_c_active_power'')
      ] | map(''is_number'') | min }}'
    name: Power Import oben
    state: "{% if (states('sensor.shellypro3em_oben_phase_a_active_power')|float +
      states('sensor.shellypro3em_oben_phase_b_active_power')|float + states('sensor.shellypro3em_oben_phase_c_active_power')|float)
      > 0 %}\n  {{ states('sensor.shellypro3em_oben_phase_a_active_power')|float +
      states('sensor.shellypro3em_oben_phase_b_active_power')|float + states('sensor.shellypro3em_oben_phase_c_active_power')|float
      }}\n{% else %}\n  {{ 0 }}\n{% endif %}"

Note: If there are any existing template: sections in your configuration, make sure to omit the template: line from the yaml above. There can only be 1 template: section in configuration.yaml. Also, ensure the indentation is aligned with the existing entities within the template: section.

Step 3 - Restart Home Assistant or reload template entities

Okay, I made the recommend changes and i get this error in the developer tools now:
Configuration warnings

Invalid config for ‘sensor’ at packages/saldieren.yaml, line 3: required key ‘platform’ not provided
Invalid config for ‘sensor’ at packages/saldieren.yaml, line 17: required key ‘platform’ not provided

I took the script from here:

Why:
e.g. if i get 3kw consumption and 3kw gain from solar power, don’t calculate this to zero.


from https://community.shelly.cloud/topic/3027-verständnisfrage-zum-saldieren/

This is my script:

sensor:
  - platform: template
    sensors:
      # Template sensor for values of power import (active_power > 0)
      power_import_oben:
        friendly_name: "Power Import oben"
        unit_of_measurement: 'W'
        value_template: >-
          {% if (states('sensor.shellypro3em_oben_phase_a_active_power')|float + states('sensor.shellypro3em_oben_phase_b_active_power')|float + states('sensor.shellypro3em_oben_phase_c_active_power')|float) > 0 %}
            {{ states('sensor.shellypro3em_oben_phase_a_active_power')|float + states('sensor.shellypro3em_oben_phase_b_active_power')|float + states('sensor.shellypro3em_oben_phase_c_active_power')|float }}
          {% else %}
            {{ 0 }}
          {% endif %}
        availability_template: "{{
            [ states('sensor.shellypro3em_oben_phase_a_active_power'),
              states('sensor.shellypro3em_oben_phase_b_active_power'),
              states('sensor.shellypro3em_oben_phase_c_active_power')
            ] | map('is_number') | min
          }}"

      # Template sensor for values of power export (active_power < 0)
      power_export_oben:
        friendly_name: "Power Export oben"
        unit_of_measurement: 'W'
        value_template: >-
          {% if (states('sensor.shellypro3em_oben_phase_a_active_power')|float + states('sensor.shellypro3em_oben_phase_b_active_power')|float + states('sensor.shellypro3em_oben_phase_c_active_power')|float) < 0 %}
            {{ (states('sensor.shellypro3em_oben_phase_a_active_power')|float + states('sensor.shellypro3em_oben_phase_b_active_power')|float + states('sensor.shellypro3em_oben_phase_c_active_power')|float) * -1 }}
          {% else %}
            {{ 0 }}
          {% endif %}
        availability_template: "{{
            [ states('sensor.shellypro3em_oben_phase_a_active_power'),
              states('sensor.shellypro3em_oben_phase_b_active_power'),
              states('sensor.shellypro3em_oben_phase_c_active_power')
            ] | map('is_number') | min
          }}"

      # Template sensor for values of power consumption
      power_consumption_oben:
        friendly_name: "Power Consumption oben"
        unit_of_measurement: 'W'
        value_template: >-
          {% if (states('sensor.power_export_oben')|float(0)) > 0 and (states('sensor.power_solargen_oben')|float(0) - states('sensor.power_export_oben')|float(0)) < 0 %}
            {{ 0 }} 
          {% elif (states('sensor.power_export_oben')|float(0)) > 0 and (states('sensor.power_solargen_oben')|float(0) - states('sensor.power_export_oben')|float(0)) > 0 %}
            {{ (states('sensor.power_solargen_oben')|float(0)) - states('sensor.power_export_oben')|float(0) }}    
          {% else %}
            {{ states('sensor.power_import_oben')|float(0) + states('sensor.power_solargen_oben')|float(0) }}
          {% endif %}

      # Template sensor for values of energy Solar generation (solar_power > 0)
      # YOU NEED TO UPDATE THE NAMES BELOW!!!
      power_solargen_oben:
        friendly_name: "Power Solar Generation oben"
        unit_of_measurement: 'W'
        value_template: >-
          {% if (states('sensor.wechselrichter_1_power')|float(0) + states('sensor.wechselrichter_2_power')|float(0)) > 0 %}
            {{ (states('sensor.wechselrichter_1_power')|float(0) + states('sensor.wechselrichter_2_power')|float(0)) }}
          {% else %}
            {{ 0 }}
          {% endif %}

  # Sensor for Riemann sum of energy import (W -> Wh)
  - platform: integration
    source: sensor.power_import_oben
    name: energy_import_oben_sum
    unit_prefix: k
    round: 2
    method: left

  # Sensor for Riemann sum of energy export (W -> Wh)
  - platform: integration
    source: sensor.power_export_oben
    name: energy_export_oben_sum
    unit_prefix: k
    round: 2
    method: left

  # Sensor for Riemann sum of energy consumption (W -> Wh)
  - platform: integration
    source: sensor.power_consumption_oben
    name: energy_consumption_oben_sum
    unit_prefix: k
    round: 2
    method: left

utility_meter:
  energy_import_oben_daily:
    source: sensor.energy_import_oben_sum
    name: Energy Import oben Daily
    cycle: daily
  energy_import_oben_monthly:
    source: sensor.energy_import_oben_sum
    name: Energy Import oben Monthly
    cycle: monthly
  energy_export_oben_daily:
    source: sensor.energy_export_oben_sum
    name: Energy Export oben Daily
    cycle: daily
  energy_export_oben_monthly:
    source: sensor.energy_export_oben_sum
    name: Energy Export oben Monthly
    cycle: monthly
  energy_consumption_oben_daily:
    source: sensor.energy_consumption_oben_sum
    name: Energy Consumption oben Daily
    cycle: daily
  energy_consumption_oben_monthly:
    source: sensor.energy_consumption_oben_sum
    name: Energy Consumption oben Monthly
    cycle: monthly

This is how i "converted it:

sensor:
     # Template sensor for values of power import (active_power > 0)
    - sensor:
        - unit_of_measurement: W
          default_entity_id: sensor.power_import_oben
          availability: '{{ [ states(''sensor.shellypro3em_oben_phase_a_active_power''),
      states(''sensor.shellypro3em_oben_phase_b_active_power''), states(''sensor.shellypro3em_oben_phase_c_active_power'')
      ] | map(''is_number'') | min }}'
          name: Power Import oben
          state: "{% if (states('sensor.shellypro3em_oben_phase_a_active_power')|float +
      states('sensor.shellypro3em_oben_phase_b_active_power')|float + states('sensor.shellypro3em_oben_phase_c_active_power')|float)
      > 0 %}\n  {{ states('sensor.shellypro3em_oben_phase_a_active_power')|float +
      states('sensor.shellypro3em_oben_phase_b_active_power')|float + states('sensor.shellypro3em_oben_phase_c_active_power')|float
      }}\n{% else %}\n  {{ 0 }}\n{% endif %}"

      # Template sensor for values of power export (active_power < 0)
    - sensor:
        - unit_of_measurement: W
          default_entity_id: sensor.power_export_oben
          availability: '{{ [ states(''sensor.shellypro3em_oben_phase_a_active_power''),
      states(''sensor.shellypro3em_oben_phase_b_active_power''), states(''sensor.shellypro3em_oben_phase_c_active_power'')
      ] | map(''is_number'') | min }}'
          name: Power Export oben
          state: "{% if (states('sensor.shellypro3em_oben_phase_a_active_power')|float +
      states('sensor.shellypro3em_oben_phase_b_active_power')|float + states('sensor.shellypro3em_oben_phase_c_active_power')|float)
      < 0 %}\n  {{ (states('sensor.shellypro3em_oben_phase_a_active_power')|float
      + states('sensor.shellypro3em_oben_phase_b_active_power')|float + states('sensor.shellypro3em_oben_phase_c_active_power')|float)
      * -1 }}\n{% else %}\n  {{ 0 }}\n{% endif %}"

      # Template sensor for values of power consumption
      power_consumption_oben:
        friendly_name: "Power Consumption oben"
        unit_of_measurement: 'W'
        value_template: >-
          {% if (states('sensor.power_export_oben')|float(0)) > 0 and (states('sensor.power_solargen_oben')|float(0) - states('sensor.power_export_oben')|float(0)) < 0 %}
            {{ 0 }} 
          {% elif (states('sensor.power_export_oben')|float(0)) > 0 and (states('sensor.power_solargen_oben')|float(0) - states('sensor.power_export_oben')|float(0)) > 0 %}
            {{ (states('sensor.power_solargen_oben')|float(0)) - states('sensor.power_export_oben')|float(0) }}    
          {% else %}
            {{ states('sensor.power_import_oben')|float(0) + states('sensor.power_solargen_oben')|float(0) }}
          {% endif %}

      # Template sensor for values of energy Solar generation (solar_power > 0)
      # YOU NEED TO UPDATE THE NAMES BELOW!!!
      power_solargen_oben:
        friendly_name: "Power Solar Generation oben"
        unit_of_measurement: 'W'
        value_template: >-
          {% if (states('sensor.wechselrichter_1_power')|float(0) + states('sensor.wechselrichter_2_power')|float(0)) > 0 %}
            {{ (states('sensor.wechselrichter_1_power')|float(0) + states('sensor.wechselrichter_2_power')|float(0)) }}
          {% else %}
            {{ 0 }}
          {% endif %}

  # Sensor for Riemann sum of energy import (W -> Wh)
    - platform: integration
      source: sensor.power_import_oben
      name: energy_import_oben_sum
      unit_prefix: k
      round: 2
      method: left

  # Sensor for Riemann sum of energy export (W -> Wh)
    - platform: integration
      source: sensor.power_export_oben
      name: energy_export_oben_sum
      unit_prefix: k
      round: 2
      method: left
 
  # Sensor for Riemann sum of energy consumption (W -> Wh)
    - platform: integration
      source: sensor.power_consumption_oben
      name: energy_consumption_oben_sum
      unit_prefix: k
      round: 2
      method: left

utility_meter:
  energy_import_oben_daily:
    source: sensor.energy_import_oben_sum
    name: Energy Import oben Daily
    cycle: daily
  energy_import_oben_monthly:
    source: sensor.energy_import_oben_sum
    name: Energy Import oben Monthly
    cycle: monthly
  energy_export_oben_daily:
    source: sensor.energy_export_oben_sum
    name: Energy Export oben Daily
    cycle: daily
  energy_export_oben_monthly:
    source: sensor.energy_export_oben_sum
    name: Energy Export oben Monthly
    cycle: monthly
  energy_consumption_oben_daily:
    source: sensor.energy_consumption_oben_sum
    name: Energy Consumption oben Daily
    cycle: daily
  energy_consumption_oben_monthly:
    source: sensor.energy_consumption_oben_sum
    name: Energy Consumption oben Monthly
    cycle: monthly

It’s imported into the configuration.yaml via this last lines:

homeassistant:
  packages: !include_dir_named packages

Thanks.

1 Like

Sorry, I’m going to be a bit harsh here, but did you read the repair?

and

So, you took out the old definition in sensor.yaml and placed the new one in sensor.yaml, but the repair says configuration.yaml.

2 Likes

Is this really the solution?
I hate cluttering up the configuration.yaml

Everything in one file shouldn’t be the solution.
( BTW: I hate configuration files…)

BTW:
I use

homeassistant:
packages: !include_dir_named packages

At the moment I am trying to import the sensor as helper in the home assistant interface.
Then I think I don’t need to change something else.

You can use packages too, but it does not go in the sensor section. It goes in the root, what is essentially configuraiton.yaml. For packages, it’s the main package file.

But to be very clear, it’s just a copy/paste, you do not alter any of the provided yaml.

You can do that but you will likely lose historical data

Hmm, would be the best Solution for me.
Is there a way to “migrate” the historical data?

Just use the yaml version and you won’t lose the history. What’s going to be easier? Editing database tables in the SQL database or doing yaml?

1 Like

Yes @Sir_Goodenough but @JokerGermany is using packages. To keep his template sensors in his packages he will have to use the method I mentioned above.

To be honest. I don’t know.
I hate handling files and yaml…

I tried the yaml way, but I don’t know what to do with the utility_meter

- sensor:
        - unit_of_measurement: W
          default_entity_id: sensor.power_import_oben
          # Template sensor for values of power import (active_power > 0)
          availability: '{{ [ states(''sensor.shellypro3em_oben_phase_a_active_power''),
      states(''sensor.shellypro3em_oben_phase_b_active_power''), states(''sensor.shellypro3em_oben_phase_c_active_power'')
      ] | map(''is_number'') | min }}'
          name: Power Import oben
          state: "{% if (states('sensor.shellypro3em_oben_phase_a_active_power')|float +
      states('sensor.shellypro3em_oben_phase_b_active_power')|float + states('sensor.shellypro3em_oben_phase_c_active_power')|float)
      > 0 %}\n  {{ states('sensor.shellypro3em_oben_phase_a_active_power')|float +
      states('sensor.shellypro3em_oben_phase_b_active_power')|float + states('sensor.shellypro3em_oben_phase_c_active_power')|float
      }}\n{% else %}\n  {{ 0 }}\n{% endif %}"
- sensor:
        - unit_of_measurement: W
          default_entity_id: sensor.power_export_oben
          # Template sensor for values of power export (active_power < 0)
          availability: '{{ [ states(''sensor.shellypro3em_oben_phase_a_active_power''),
      states(''sensor.shellypro3em_oben_phase_b_active_power''), states(''sensor.shellypro3em_oben_phase_c_active_power'')
      ] | map(''is_number'') | min }}'
          name: Power Export oben
          state: "{% if (states('sensor.shellypro3em_oben_phase_a_active_power')|float +
      states('sensor.shellypro3em_oben_phase_b_active_power')|float + states('sensor.shellypro3em_oben_phase_c_active_power')|float)
      < 0 %}\n  {{ (states('sensor.shellypro3em_oben_phase_a_active_power')|float
      + states('sensor.shellypro3em_oben_phase_b_active_power')|float + states('sensor.shellypro3em_oben_phase_c_active_power')|float)
      * -1 }}\n{% else %}\n  {{ 0 }}\n{% endif %}"

- sensor:
    - platform: template
      # Template sensor for values of power consumption
      power_consumption_oben:
        friendly_name: "Power Consumption oben"
        unit_of_measurement: 'W'
        value_template: >-
          {% if (states('sensor.power_export_oben')|float(0)) > 0 and (states('sensor.power_solargen_oben')|float(0) - states('sensor.power_export_oben')|float(0)) < 0 %}
            {{ 0 }} 
          {% elif (states('sensor.power_export_oben')|float(0)) > 0 and (states('sensor.power_solargen_oben')|float(0) - states('sensor.power_export_oben')|float(0)) > 0 %}
            {{ (states('sensor.power_solargen_oben')|float(0)) - states('sensor.power_export_oben')|float(0) }}    
          {% else %}
            {{ states('sensor.power_import_oben')|float(0) + states('sensor.power_solargen_oben')|float(0) }}
          {% endif %}

      # Template sensor for values of energy Solar generation (solar_power > 0)
      # YOU NEED TO UPDATE THE NAMES BELOW!!!
      power_solargen_oben:
        friendly_name: "Power Solar Generation oben"
        unit_of_measurement: 'W'
        value_template: >-
          {% if (states('sensor.wechselrichter_1_power')|float(0) + states('sensor.wechselrichter_2_power')|float(0)) > 0 %}
            {{ (states('sensor.wechselrichter_1_power')|float(0) + states('sensor.wechselrichter_2_power')|float(0)) }}
          {% else %}
            {{ 0 }}
          {% endif %}

  # Sensor for Riemann sum of energy import (W -> Wh)
    - platform: integration
      source: sensor.power_import_oben
      name: energy_import_oben_sum
      unit_prefix: k
      round: 2
      method: left

  # Sensor for Riemann sum of energy export (W -> Wh)
    - platform: integration
      source: sensor.power_export_oben
      name: energy_export_oben_sum
      unit_prefix: k
      round: 2
      method: left

  # Sensor for Riemann sum of energy consumption (W -> Wh)
    - platform: integration
      source: sensor.power_consumption_oben
      name: energy_consumption_oben_sum
      unit_prefix: k
      round: 2
      method: left

utility_meter:
  energy_import_oben_daily:
    source: sensor.energy_import_oben_sum
    name: Energy Import oben Daily
    cycle: daily
  energy_import_oben_monthly:
    source: sensor.energy_import_oben_sum
    name: Energy Import oben Monthly
    cycle: monthly
  energy_export_oben_daily:
    source: sensor.energy_export_oben_sum
    name: Energy Export oben Daily
    cycle: daily
  energy_export_oben_monthly:
    source: sensor.energy_export_oben_sum
    name: Energy Export oben Monthly
    cycle: monthly
  energy_consumption_oben_daily:
    source: sensor.energy_consumption_oben_sum
    name: Energy Consumption oben Daily
    cycle: daily
  energy_consumption_oben_monthly:
    source: sensor.energy_consumption_oben_sum
    name: Energy Consumption oben Monthly
    cycle: monthly

Configuration errors

Error loading /config/configuration.yaml: while parsing a block collection
in “/config/packages/saldieren.yaml”, line 1, column 1
expected , but found ‘?’
in “/config/packages/saldieren.yaml”, line 79, column 1

Well, if you want another layer of complication, then packages are for you IMO.
The original question was about templates.
The deprecation warning was about templates.
My answer is about templates.
Use it or not, don’t really care.

Just please understand what you are doing and it won’t be such a frustrating mystery.

For everyone…

1 Like

I’ve also bumped into this upgrade issue.
Maybe I’m wrong but the following upgraded config doesn’t return any errors for me (all in configuration.yaml)

template:
  - sensor:
    - unit_of_measurement: W
      default_entity_id: sensor.power_import
      name: Power Import
    availability: '{{ [ states(''sensor.shellypro3em_XYZ_phase_a_active_power''),
      states(''sensor.shellypro3em_XYZ_phase_b_active_power''), states(''sensor.shellypro3em_XYZ_phase_c_active_power'')
      ] | map(''is_number'') | min }}'
      state: "{% if (states('sensor.shellypro3em_XYZ_phase_a_active_power')|float
        + states('sensor.shellypro3em_XYZ_phase_b_active_power')|float + states('sensor.shellypro3em_XYZ_phase_c_active_power')|float)
        > 0 %}\n  {{ states('sensor.shellypro3em_XYZ_phase_a_active_power')|float
        + states('sensor.shellypro3em_XYZ_phase_b_active_power')|float + states('sensor.shellypro3em_XYZ_phase_c_active_power')|float
        }}\n{% else %}\n  {{ 0 }}\n{% endif %}"

  - sensor:
    - unit_of_measurement: W
      default_entity_id: sensor.power_export
      name: Power Export
      availability: '{{ [ states(''sensor.shellypro3em_XYZ_phase_a_active_power''),
        states(''sensor.shellypro3em_XYZ_phase_b_active_power''), states(''sensor.shellypro3em_XYZ_phase_c_active_power'')
        ] | map(''is_number'') | min }}'
      state: "{% if (states('sensor.shellypro3em_XYZ_phase_a_active_power')|float
        + states('sensor.shellypro3em_XYZ_phase_b_active_power')|float + states('sensor.shellypro3em_XYZ_phase_c_active_power')|float)
        < 0 %}\n  {{ (states('sensor.shellypro3em_XYZ_phase_a_active_power')|float
        + states('sensor.shellypro3em_XYZ_phase_b_active_power')|float + states('sensor.shellypro3em_XYZ_phase_c_active_power')|float)
        * -1 }}\n{% else %}\n  {{ 0 }}\n{% endif %}"

  - sensor:
    - unit_of_measurement: W
      default_entity_id: sensor.power_consumption
      name: Power Consumption
      state: "{% if (states('sensor.power_export')|float(0)) > 0 and (states('sensor.power_solargen')|float(0)
        - states('sensor.power_export')|float(0)) < 0 %} {% elif (states('sensor.power_export')|float(0))
        > 0 and (states('sensor.power_solargen')|float(0) - states('sensor.power_export')|float(0))
        > 0 %}\n  {{ (states('sensor.power_solargen')|float(0)) - states('sensor.power_export')|float(0)
        }}    \n{% else %}\n  {{ states('sensor.power_import')|float(0) + states('sensor.power_solargen')|float(0)
        }}\n{% endif %}"

sensor:
# Sensor for Riemann sum of energy import (W -> Wh)
  - platform: integration
    source: sensor.power_import
    name: energy_import_sum
    unit_prefix: k
    round: 2
    method: left

# Sensor for Riemann sum of energy export (W -> Wh)
  - platform: integration
    source: sensor.power_export
    name: energy_export_sum
    unit_prefix: k
    round: 2
    method: left

# Sensor for Riemann sum of energy consumption (W -> Wh)
  - platform: integration
    source: sensor.power_consumption
    name: energy_consumption_sum
    unit_prefix: k
    round: 2
    method: left

utility_meter:
  energy_import_daily:
    source: sensor.energy_import_sum
    name: Energy Import Daily
    cycle: daily
  energy_import_monthly:
    source: sensor.energy_import_sum
    name: Energy Import Monthly
    cycle: monthly
  energy_export_daily:
    source: sensor.energy_export_sum
    name: Energy Export Daily
    cycle: daily
  energy_export_monthly:
    source: sensor.energy_export_sum
    name: Energy Export Monthly
    cycle: monthly
  energy_consumption_daily:
    source: sensor.energy_consumption_sum
    name: Energy Consumption Daily
    cycle: daily
  energy_consumption_monthly:
    source: sensor.energy_consumption_sum
    name: Energy Consumption Monthly
    cycle: monthly
1 Like

That is the beauty of HA. You can configure it the way your mind works.

Those don’t look like copy/pastes from the repair. I see legacy syntax in that. You need to just copy/paste the code provided by the repair directly into that file. Below utility meter if you want.

It doesn’t look like you’re copy/pasting them because the yaml isn’t indented properly in some areas.

Do you still have access to the repair?

Is this your entire “/config/packages/saldieren.yaml” file?

Yes.

    availability: '{{ [ states(''sensor.shellypro3em_XYZ_phase_a_active_power''),
      states(''sensor.shellypro3em_XYZ_phase_b_active_power''), states(''sensor.shellypro3em_XYZ_phase_c_active_power'')
      ] | map(''is_number'') | min }}'

was a bit modified (out of curiosity)… corrected now.

But since we all copied it from the same source upgrade instructions are not complete as without
sensor:
before
- platform
is returning errors.

This don’t throw any errors, hope it works:

template:
- sensor:
  - unit_of_measurement: W
    default_entity_id: sensor.power_export_oben
    availability: '{{ [ states(''sensor.shellypro3em_oben_phase_a_active_power''),
      states(''sensor.shellypro3em_oben_phase_b_active_power''), states(''sensor.shellypro3em_oben_phase_c_active_power'')
      ] | map(''is_number'') | min }}'
    name: Power Export oben
    state: "{% if (states('sensor.shellypro3em_oben_phase_a_active_power')|float +
      states('sensor.shellypro3em_oben_phase_b_active_power')|float + states('sensor.shellypro3em_oben_phase_c_active_power')|float)
      < 0 %}\n  {{ (states('sensor.shellypro3em_oben_phase_a_active_power')|float
      + states('sensor.shellypro3em_oben_phase_b_active_power')|float + states('sensor.shellypro3em_oben_phase_c_active_power')|float)
      * -1 }}\n{% else %}\n  {{ 0 }}\n{% endif %}"

sensor:
    - platform: template
      sensors:
      # Template sensor for values of power consumption
        power_consumption_oben:
            friendly_name: "Power Consumption oben"
            unit_of_measurement: 'W'
            value_template: >-
                {% if (states('sensor.power_export_oben')|float(0)) > 0 and (states('sensor.power_solargen_oben')|float(0) - states('sensor.power_export_oben')|float(0)) < 0 %}
                {{ 0 }} 
                {% elif (states('sensor.power_export_oben')|float(0)) > 0 and (states('sensor.power_solargen_oben')|float(0) - states('sensor.power_export_oben')|float(0)) > 0 %}
                {{ (states('sensor.power_solargen_oben')|float(0)) - states('sensor.power_export_oben')|float(0) }}    
                {% else %}
                {{ states('sensor.power_import_oben')|float(0) + states('sensor.power_solargen_oben')|float(0) }}
                {% endif %}

      # Template sensor for values of energy Solar generation (solar_power > 0)
      # YOU NEED TO UPDATE THE NAMES BELOW!!!
        power_solargen_oben:
            friendly_name: "Power Solar Generation oben"
            unit_of_measurement: 'W'
            value_template: >-
                {% if (states('sensor.wechselrichter_1_power')|float(0) + states('sensor.wechselrichter_2_power')|float(0)) > 0 %}
                {{ (states('sensor.wechselrichter_1_power')|float(0) + states('sensor.wechselrichter_2_power')|float(0)) }}
                {% else %}
                {{ 0 }}
                {% endif %}

  # Sensor for Riemann sum of energy import (W -> Wh)
    - platform: integration
      source: sensor.power_import_oben
      name: energy_import_oben_sum
      unit_prefix: k
      round: 2
      method: left

  # Sensor for Riemann sum of energy export (W -> Wh)
    - platform: integration
      source: sensor.power_export_oben
      name: energy_export_oben_sum
      unit_prefix: k
      round: 2
      method: left

  # Sensor for Riemann sum of energy consumption (W -> Wh)
    - platform: integration
      source: sensor.power_consumption_oben
      name: energy_consumption_oben_sum
      unit_prefix: k
      round: 2
      method: left

utility_meter:
  energy_import_oben_daily:
    source: sensor.energy_import_oben_sum
    name: Energy Import oben Daily
    cycle: daily
  energy_import_oben_monthly:
    source: sensor.energy_import_oben_sum
    name: Energy Import oben Monthly
    cycle: monthly
  energy_export_oben_daily:
    source: sensor.energy_export_oben_sum
    name: Energy Export oben Daily
    cycle: daily
  energy_export_oben_monthly:
    source: sensor.energy_export_oben_sum
    name: Energy Export oben Monthly
    cycle: monthly
  energy_consumption_oben_daily:
    source: sensor.energy_consumption_oben_sum
    name: Energy Consumption oben Daily
    cycle: daily
  energy_consumption_oben_monthly:
    source: sensor.energy_consumption_oben_sum
    name: Energy Consumption oben Monthly
    cycle: monthly

Thought you aren’t allowed to use template in the config files more than once :thinking:

yes

Yes that one is better, you can use ‘template:’ once in every package. That is how packages work.

I have put a note for @petro in another thread to adjust the repair notification a bit to clear up this confusion.

Now you have this in

template:
- sensor:
  - unit_of_measurement: W
    default_entity_id: sensor.power_export_oben
    availability: '{{ [ states(''sensor.shellypro3em_oben_phase_a_active_power''),
      states(''sensor.shellypro3em_oben_phase_b_active_power''), states(''sensor.shellypro3em_oben_phase_c_active_power'')
      ] | map(''is_number'') | min }}'
    name: Power Export oben
    state: "{% if (states('sensor.shellypro3em_oben_phase_a_active_power')|float +
      states('sensor.shellypro3em_oben_phase_b_active_power')|float + states('sensor.shellypro3em_oben_phase_c_active_power')|float)
      < 0 %}\n  {{ (states('sensor.shellypro3em_oben_phase_a_active_power')|float
      + states('sensor.shellypro3em_oben_phase_b_active_power')|float + states('sensor.shellypro3em_oben_phase_c_active_power')|float)
      * -1 }}\n{% else %}\n  {{ 0 }}\n{% endif %}"

You can delete these or comment out and move them to the above format.

sensor:
    - platform: template
      sensors:
      # Template sensor for values of power consumption
        power_consumption_oben:
            friendly_name: "Power Consumption oben"
            unit_of_measurement: 'W'
            value_template: >-
                {% if (states('sensor.power_export_oben')|float(0)) > 0 and (states('sensor.power_solargen_oben')|float(0) - states('sensor.power_export_oben')|float(0)) < 0 %}
                {{ 0 }} 
                {% elif (states('sensor.power_export_oben')|float(0)) > 0 and (states('sensor.power_solargen_oben')|float(0) - states('sensor.power_export_oben')|float(0)) > 0 %}
                {{ (states('sensor.power_solargen_oben')|float(0)) - states('sensor.power_export_oben')|float(0) }}    
                {% else %}
                {{ states('sensor.power_import_oben')|float(0) + states('sensor.power_solargen_oben')|float(0) }}
                {% endif %}

      # Template sensor for values of energy Solar generation (solar_power > 0)
      # YOU NEED TO UPDATE THE NAMES BELOW!!!
        power_solargen_oben:
            friendly_name: "Power Solar Generation oben"
            unit_of_measurement: 'W'
            value_template: >-
                {% if (states('sensor.wechselrichter_1_power')|float(0) + states('sensor.wechselrichter_2_power')|float(0)) > 0 %}
                {{ (states('sensor.wechselrichter_1_power')|float(0) + states('sensor.wechselrichter_2_power')|float(0)) }}
                {% else %}
                {{ 0 }}
                {% endif %}

If you want your original line format to remain the same as previous (which looks a lot neater and human readable. You can try the below.

1 Like