Template - przeprowadzka z "legacy" na nową wersję

Cześć,

Potrzebuję pomocy z templatami. Przy okazji wynoszenia wszystkiego z configuration.yaml, zdecydowałem się na poprawę template z “legacy” na nowe wersje. I tutaj mam problem.
Takie coś działa bez problemu w template.yaml:

# template.yaml
sensors:
  solaredge_modbus_consumption:
    friendly_name: "Konsumpcja obecnie"
    unit_of_measurement: "W"
    value_template: "{{ ((states('sensor.solaredge_modbus_ac_power') | float(100)) - (states('sensor.solaredge_modbus_m1_ac_power') | float(100)))  }}"
    icon_template: mdi:home-import-outline
  solaredge_modbus_status_description:
    friendly_name: "Status falownika"
    value_template: "{{ state_attr('sensor.solaredge_modbus_status', 'status_description') }}"
    icon_template: mdi:eye-check-outline

ale już takie coś nie (brak zmiany wartości), mimo że sprawdzałem w szablonach i wartość pokazuje prawidłową:

# template.yaml
- sensor:
    # Solaredge - konsumpcja obecnie (auto i z sieci)
    - unique_id: solaredge_modbus_consumption
	  name: Konsumpcja obecnie
      icon: mdi:home-import-outline
      unit_of_measurement: "W"
      state: >-
        '{{ ((states('sensor.solaredge_modbus_ac_power') | float(100)) - (states('sensor.solaredge_modbus_m1_ac_power') | float(100)))  }}'
    # Solaredge - konsumpcja (dom)
    - unique_id: solaredge_modbus_grid_consumption
      name: Konsumpcja z sieci obecnie
      icon: mdi:transmission-tower-export
      unit_of_measurement: "W"
      state: >-
        '{% if states('sensor.solaredge_modbus_m1_ac_power') | float(100) >= 0 %} {{ 0 | float(100) }} {% else %} {{ states('sensor.solaredge_modbus_m1_ac_power') | float(100) *-1}} {% endif %}'

Gdzie popełniłem babola?

Dobra rada: jeżeli zamieszczasz kody z jakiegoś pliku warto dodać informacyjnie jaki to plik, dokładnie tak wszystko opisywane:

# Example configuration.yamlconfiguration.yaml entry
lock:
  - platform: template
    name: Garage door
    value_template: "{{ is_state('sensor.door', 'on') }}"
    lock:
      service: switch.turn_on
      target:
        entity_id: switch.door
    unlock:
      service: switch.turn_off
      target:
        entity_id: switch.door

W przykładzie powyżej wpis jest w pliku configuration.yaml.

Pisałem o tym w treści posta, ale ok, wyedytowałem.

@stemer czy gdzieś jeszcze użyłeś nowego sposobu definicji template?

No właśnie nie, ale zauważyłem, że HA tworzy nową encję (sensor.konsumpcja_obecnie) z name (która działa), ale już olewa unique_id, które ma taką samą nazwę, jak stara encja (sensor.solaredge_modbus_consumption).

Edit:

Okej, to ogarnąłem temat. Ciapki (’) trzeba usunąć, bo w tym przypadku to są liczby (dodatkowo zamieniłem je na integery). Przez to zmienia się format pola w bazie i dlatego HA tworzy nowe encje. W nowych template HA bierze nazwę z pola “name”. Stare encje znikną, jak się zrobi purge bazy (defaultowo po 10 dniach chyba), albo strzeli update do bazy, żeby je usunąć. Tak na razie to zostawiłem:

- sensor:
    # Solaredge - Konsumpcja obecnie
    - unique_id: solaredge_modbus_consumption
      name: solaredge_modbus_consumption_new
      icon: mdi:home-import-outline
      unit_of_measurement: "W"
      state: >-
        {{ ((states('sensor.solaredge_modbus_ac_power') | int) - (states('sensor.solaredge_modbus_m1_ac_power') | int))  }}
    # Solaredge - Konsumpcja z sieci obecnie
    - unique_id: solaredge_modbus_grid_consumption
      name: solaredge_modbus_grid_consumption_new
      icon: mdi:transmission-tower-export
      unit_of_measurement: "W"
      state: >-
        {% if states('sensor.solaredge_modbus_m1_ac_power') | int >= 0 %} {{ 0 | int }} {% else %} {{ states('sensor.solaredge_modbus_m1_ac_power') | int *-1}} {% endif %}