Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Incapable d'ajouter les sensors Template #318

Closed
gravelfreeman opened this issue Nov 18, 2023 · 28 comments
Closed

Incapable d'ajouter les sensors Template #318

gravelfreeman opened this issue Nov 18, 2023 · 28 comments

Comments

@gravelfreeman
Copy link

gravelfreeman commented Nov 18, 2023

Version of the custom_component

J'utilise la dernière version de Hilo à partir de HACS.

Configuration

Rien n'affiche dans les logs par rapport à ce problème.

J'ai copié le code dans un fichier defi_hilo.yaml dans mon dossier sensors qui est référencé dans mon fichier configuration.yaml.

Les sensors apparaissent mais j'ai l'impression qu'ils ne sont pas connectés à rien.

Describe the bug

J'ai ajouté les sensors comme indiqué à ce URL (Template).

Malheureusement tous les sensors disent être hors ligne.

image

image

Debug log

Erreur si je clique sur un sensor:

This entity ('sensor.defi_hilo_used_kwh') does not have a unique ID, therefore its settings cannot be managed from the UI. See the [documentation](https://www.home-assistant.io/faq/unique_id) for more detail.

À l'aide les défis s'en viennent haha!

@gravelfreeman
Copy link
Author

Précision: J'ai validé que je n'ai pas aucun Fix Issues sous Developer Tools > Statistics.

@ic-dev21
Copy link
Collaborator

@FrancoLoco corriges-moi si j'ai tord mais je crois que c'est simplement parce que ces valeurs n'ont jamais été populées dans le passé?

@gravelfreeman est-ce ta première année avec Hilo?

@FrancoLoco
Copy link
Collaborator

@ic-dev21 ah oui quand les tableaux sont vides ca faisait ca, j'avais ajusté mes templates localement pour gérer celà, mais j'avais oublié d'updater le wiki, c'est fait.

@gravelfreeman tu peux prendre le nouveau code des templates que j'ai mis ca gère mieux les tableaux vides un peu partout comme ca: state_attr('sensor.defi_hilo', 'next_events') | length > 0

En bonus j'ai ajouté 2 autres petits templates que j'avais fait depuis:

  • electricity_kwh_today_consomme
  • electricity_cost_today

... enjoy!

@gravelfreeman
Copy link
Author

Merci de m'aider!

Tout est à 0 mais Hilo m'avait envoyé un courriel comme quoi il y aurait des pré-défis en Novembre pour me pratiquer mais toujours rien et on est le 21. Pas super facile de configurer ses automations sans données pour tester...

Celui-ci est toujours indisponible Nb de defis Hilo completes saison actuelle

J'ai aussi remarqué cette ligne de code dans le code, je crois qu'elle n'est pas sensé être là? Je l'ai retirée pour l'instant.

unique_id: 3017014c-d089-11ec-9d64-0242ac120028

Je ne suis pas certain maintenant comment faire mes automations.

J'ai vue dans le wiki la partie Pré-chauffer avant le prochain défi. qui semble plutôt simple à configurer.

Cependant la partie Abaisser la consigne de chauffage après défi utilise du code json avec Node-Red. Je n'ai pas Node-Red et préfèrerais limiter l'overhead sur mon setup. Je ne suis pas certain de comprendre ce que Node-Red permet de faire de plus.

J'ai lu sur le site ici que les défis sont toujours aux mêmes heures. Si c'est toujours aux mêmes heures quel est l'avantage exactement de scripter avec Node-Red?

Je suis dans l'entre 2 à savoir si je me lance dans la configuration de tout ce la moi-même ou si je prend le code proposé dans le wiki.

@FrancoLoco
Copy link
Collaborator

Quand il y a un défi c'est annoncé seulement la veille. C'est donc normal que tout soit à 0. Et tes limites maximales seront calculés seulement quelques heures avant la phase de réduction.

Pour le Nb de défis complétés, ca deviendra dispo dès que tu auras complété au moins un défi, ca ne saurait tarder comme tu dis d'ici fin novembre..

Moi perso je n'utilise pas node red, je trouve aussi plus simple et moins d'overhead d'utiliser les automatisations natives HA, je me et je me suis fait mes propres automatisations selon mes besoins.

@ic-dev21
Copy link
Collaborator

Merci de m'aider!

Tout est à 0 mais Hilo m'avait envoyé un courriel comme quoi il y aurait des pré-défis en Novembre pour me pratiquer mais toujours rien et on est le 21. Pas super facile de configurer ses automations sans données pour tester...

Celui-ci est toujours indisponible Nb de defis Hilo completes saison actuelle

J'ai aussi remarqué cette ligne de code dans le code, je crois qu'elle n'est pas sensé être là? Je l'ai retirée pour l'instant.

unique_id: 3017014c-d089-11ec-9d64-0242ac120028

Je ne suis pas certain maintenant comment faire mes automations.

J'ai vue dans le wiki la partie Pré-chauffer avant le prochain défi. qui semble plutôt simple à configurer.

Cependant la partie Abaisser la consigne de chauffage après défi utilise du code json avec Node-Red. Je n'ai pas Node-Red et préfèrerais limiter l'overhead sur mon setup. Je ne suis pas certain de comprendre ce que Node-Red permet de faire de plus.

J'ai lu sur le site ici que les défis sont toujours aux mêmes heures. Si c'est toujours aux mêmes heures quel est l'avantage exactement de scripter avec Node-Red?

Je suis dans l'entre 2 à savoir si je me lance dans la configuration de tout ce la moi-même ou si je prend le code proposé dans le wiki.

Perso je n’irais pas inutilement avec Node-Red, les automatisations natives sont correcte pour les besoin.

En arrivant chez moi je vais te donner quelques exemples de ce que je fais chez moi qui convient à mes besoins. Ça peut t’inspirer!

@gravelfreeman
Copy link
Author

Super merci, je ne les ai pas trouvées dans le github, mais je prendrais bien les tiennes :)

@FrancoLoco
Copy link
Collaborator

Il y a un défi justement et je me suis rendu compte d’une petite faute dans le sensor de nb de défis je l’ai ajusté

@gravelfreeman
Copy link
Author

Merci pour la correction, je viens de voir le défi aussi, ça serait nice si j'ai les automations tantôt @ic-dev21 ma essayer ça! :)

@ic-dev21
Copy link
Collaborator

Merci pour la correction, je viens de voir le défi aussi, ça serait nice si j'ai les automations tantôt @ic-dev21 ma essayer ça! :)

Bon, prépares-toi, ça va être un pan de mur de texte ;) Au début je voulais te mettre des screnshots mais je vais y aller en YAML commenté ça va être moins lourd. Donc:

  • Première affaire, ici, maison de plein pied avec 2 adultes un enfant.
  • L'autre adulte a des horaires atypiques(rotatif jour nuit), donc il peut y avoir quelqu'un à la maison pas mal n'importe quand.
  • On travail tous deux en présentiel, donc pratiquement jamais de télétravail.
  • Maison unifamiliale, 4 chambre, 2 salles de bain. 2 chambres en haut (occupées), 2 en bas (1 bureau et une pour invités).
  • J'ai une thermopompe murale qui est wifi, tu vas la voir sortir dans mes automatisations.
  • J'utilise du geofencing pour pas mal de trucs.
  • Je baisse la consigne du chauffage la nuit, et lorsque la maison est vide tous les jours. J'utilise une "période de préchauffe" pour qu'on arrive dans une maison chaude le soir.
  • Dernier truc: j'utilise hilo un peu en hybride, c'est à dire que je contrôle mon point de départ du défi mais je laisse le contrôle à Hilo pour le reste, c'est pour ça que mes thermostats sont encore dans l'app. Est-ce parfait? Probablement pas, mais ça m'arrange.

Avec ça en tête, je fais quelques trucs. Défis AM, comme demain:

  1. À 1h05 du matin, je grimpe la température de consigne de certaines pièces où personne est, pour pas crever en dormant:
alias: Défi Hilo AM Préchauffe
description: ""
trigger:
  - platform: time
    at: "01:05:00"  #ici je check l'heure
condition:
  - condition: template
    value_template: "{{'am' in state_attr('sensor.defi_hilo','next_events')[0]['period'] }}"  #ici je vérifie que la prochaine période de défi est bien "AM"
  - condition: or
    conditions:
      - condition: state
        entity_id: sensor.defi_hilo  #sensor défi hilo soit en appréciation, soit en scheduled est accepté
        state: appreciation
      - condition: state
        entity_id: sensor.defi_hilo
        state: scheduled
action:
  - service: climate.set_temperature
    data:
      temperature: 22
    target:
      entity_id:
        - climate.thermostat_cuisine
        - climate.thermostat_salle_de_jeux  #je monte la température des plus grandes pièces un brin, de 18 à 22
  - service: climate.set_temperature
    data:
      temperature: 23
    target:
      entity_id:
        - climate.thermostat_salle_de_bain_en_bas  #je monte la température du reste un peu plus, de 16 à 23.
        - climate.thermostat_bureau
        - climate.thermostat_chambre_invite
  - service: climate.set_temperature
    data:
      temperature: 20
    target:
      entity_id:
        - climate.thermostat_salle_de_bain
mode: single

Pourquoi 1h05? Parce que la phase d'appréciation est 3h avant la préchauffe, qui elle est à 4h du matin. Pourquoi 1h05 et non 1h? Parce que des fois le sensor update pas exactement à l'heure pile.

  1. Phase de réduction AM, on criss tout ça à 15 sauf la thermopompe, parce que moins énergivore et aide le confort.
alias: Défi Hilo Réduction AM
description: ""
trigger:
  - platform: state
    entity_id:
      - sensor.defi_hilo  #quand on est à réduction, let's go.
    to: reduction
condition:
  - condition: time
    before: "06:30:00"  #on check que l'heure a de l'allure pour un défi AM' pour pas faire rouler ça en PM
    after: "05:45:00"
action:
  - service: climate.set_temperature
    data:
      temperature: 15
    target:
      entity_id:
        - climate.thermostat_salle_de_jeux
        - climate.thermostat_cuisine
        - climate.thermostat_salle_de_bain
        - climate.thermostat_salle_de_bain_en_bas
        - climate.thermostat_bureau
        - climate.thermostat_chambre_invite
        - climate.thermostat_chambre_des_maitres
        - climate.thermostat_chambre_REDACTED
  - service: climate.set_temperature
    data:
      temperature: 21
    target:
      entity_id: climate.climatisation
mode: single

  1. Phase de reprise défi AM, ici on revient à des températures plus normales.
alias: Défi Hilo recovery AM
description: ""
trigger:
  - platform: state
    entity_id:
      - sensor.defi_hilo  #le sensor vire à recovery
    to: recovery
condition:
  - condition: time
    before: "10:30:00"  #on vérifie que l'heure a du sens pour un défi AM
    after: "09:45:00"
  - condition: or
    conditions:
      - condition: state
        entity_id: person.REDACTED  #on s'assure qu'il y a quelqu'un à la maison, parce que à quoi bon remonter si y'a pas un chat
        state: home
      - condition: state
        entity_id: person.REDACTED
        state: home
action:
  - service: climate.set_temperature #je remonte la température de la pièce principale
    data:
      temperature: 21
    target:
      entity_id:
        - climate.thermostat_cuisine
mode: single

Le reste tombe dans son horaire normal sans intervention de ma part.

Pour les défis PM, c'est sensiblement pareille, sauf que j'agis différemment s'il y a quelqu'un dans la maison ou pas.

S'il y a quelqu'un:

alias: Défi Hilo PM Préchauffe (présent)
description: ""
trigger:
  - platform: time
    at: "13:00:00"   #Ancrage à 13h05, même raison que plus haut
condition:
  - condition: template
    value_template: "{{'pm' in state_attr('sensor.defi_hilo','next_events')[0]['period'] }}" #on check que le défi à venir est bien en PM
  - condition: or
    conditions:
      - condition: state     #on vérifie l'état du sensor Hilo, confirmer que c'est bien un défi qui s'en vient.
        entity_id: sensor.defi_hilo
        state: appreciation
      - condition: state
        entity_id: sensor.defi_hilo
        state: scheduled
  - condition: or
    conditions:    #je check s'il y a quelqu'un
      - condition: state
        entity_id: person.REDACTED
        state: home
      - condition: state
        state: home
        entity_id: person.REDACTED
action:
  - service: climate.set_temperature
    data:
      temperature: 21  #on crinque, la plupart des pièces sont à 18 de jour sauf le salon, au pire allé, je lui renvois la même commande qu'il a déjà.
    target:
      entity_id:
        - climate.thermostat_cuisine
        - climate.thermostat_salle_de_jeux
        - climate.thermostat_salle_de_bain
        - climate.thermostat_salle_de_bain_en_bas
        - climate.thermostat_bureau
        - climate.thermostat_chambre_invite
        - climate.thermostat_chambre_des_maitres
        - climate.thermostat_chambre_REDACTED
mode: single

Même chose, mais s'il y a personne:


alias: Défi Hilo PM Préchauffe (absent)
description: ""
trigger:
  - platform: time
    at: "13:05:00"  #L'heure
condition:
  - condition: template
    value_template: "{{'pm' in state_attr('sensor.defi_hilo','next_events')[0]['period'] }}"  #on vérifie que le prochain défi est en PM
  - condition: or
    conditions:
      - condition: state
        entity_id: sensor.defi_hilo  #on vérifie l'état du sensor
        state: appreciation
      - condition: state
        entity_id: sensor.defi_hilo
        state: scheduled
  - condition: not
    conditions:
      - condition: state   #on s'assure que la maison est vide.
        entity_id: person.REDACTED
        state: home
      - condition: state
        entity_id: person.REDACTED
        state: home
action:
  - service: climate.set_temperature #on crinque plus, parce que why not, personne va crever de chaud
    data:
      temperature: 22
    target:
      entity_id:
        - climate.thermostat_cuisine
        - climate.thermostat_salle_de_jeux
        - climate.thermostat_salle_de_bain
        - climate.thermostat_salle_de_bain_en_bas
        - climate.thermostat_bureau
        - climate.thermostat_chambre_invite
        - climate.thermostat_chambre_des_maitres
        - climate.thermostat_chambre_megane
mode: single

Réduction en PM, là c'est pas mal certain qu'il y a quelqu'un:

alias: Défi Hilo Réduction PM
description: ""
trigger:
  - platform: state
    entity_id:
      - sensor.defi_hilo
    to: reduction
condition:
  - condition: time
    before: "21:00:00"
    after: "15:00:00"
action:
  - service: climate.set_temperature  #on descend ça
    data:
      temperature: 15
    target:
      entity_id:
        - climate.thermostat_salle_de_bain
        - climate.thermostat_salle_de_bain_en_bas
        - climate.thermostat_salle_de_jeux
        - climate.thermostat_chambre_invite
        - climate.thermostat_bureau
        - climate.thermostat_cuisine
        - climate.thermostat_chambre_des_maitres
        - climate.thermostat_chambre_megane
  - service: climate.set_temperature
    data:
      temperature: 21
    target:
      entity_id: climate.climatisation
mode: single

Et on remonte la pièce principale quand c'est fini

alias: Défi Hilo Recovery PM
description: ""
trigger:
  - platform: state
    entity_id:
      - sensor.defi_hilo
    to: recovery
condition:
  - condition: time
    before: "21:30:00"
    after: "20:45:00"
action:
  - service: climate.set_temperature
    data:
      temperature: 21
    target:
      entity_id:
        - climate.thermostat_cuisine
mode: single

@gravelfreeman
Copy link
Author

gravelfreeman commented Nov 23, 2023

Merci énormément @ic-dev21 d'avoir prit le temps de me partager ton code, j'ai sauvé énormément de temps. Pour le PM j'ai réussi à sauver une automation en utilisant un if/then/else pour savoir si je suis là ou non. Cela set la température de mon bureau en conséquence vue que je travail de la maison. Super bonne idée d'utiliser du geofencing, merci!

Sinon je partage 2 remarques.

La première étant que si vous utilisez scheduler component et scheduler card pour gérer vos thermostats vous devrez mettre à off toute vos automatisations pour ne pas qu'elles soient actives durant les défis Hilo. J'ai codé un template pour ce faire et le partage au cas que ça aiderait quelqu'un. Pour info scheduler component est vraiment pratique, ça donne accès à ma blonde de créer des scènes avec son téléphone sans qu'elle doive apprendre home assistant.

  - service: switch.turn_off
    data_template:
      entity_id: |
        {% set switches = states.switch
          | selectattr('entity_id', 'match', '^switch\.schedule_.*$')
          | map(attribute='entity_id') %}
        {{ switches | join(',') }}

La seconde étant que la période Préchauffe peu faire du gaspillage d'électricité si Hilo prend moins de 3 heures pour calculer le allowed_kwh. Je ne sais pas si une automation avec un template du genre pourrait aider à remettre le chauffage au plus bas dès lors que le allowed_kwh a été calculé?

{{ state_attr('sensor.defi_hilo', 'next_events')[0].allowed_kWh }}

On va peut-être y arriver à gang haha!

@ic-dev21
Copy link
Collaborator

Sinon je partage 2 remarques.

La première étant que si vous utilisez scheduler component et scheduler card pour gérer vos thermostats vous devrez mettre à off toute vos automatisations pour ne pas qu'elles soient actives durant les défis Hilo. J'ai codé un template pour ce faire et le partage au cas que ça aiderait quelqu'un. Pour info scheduler component est vraiment pratique, ça donne accès à ma blonde de créer des scènes avec son téléphone sans qu'elle doive apprendre home assistant.

On va peut-être y arriver à gang haha!

Oui et non, si tes automatisations utilisent le sensor défi comme condition, tu peux te mettre un "NOT" devant pour pas que ça roule, je le fais à quelques endroits.

Je ne t'ai pas tout donné comme ce n'est pas tout qui s'applique partout haha.

@gravelfreeman
Copy link
Author

Je ne t'ai pas tout donné comme ce n'est pas tout qui s'applique partout haha.

Je comprend t'inquiète, j'apprécie déjà énormément toute l'aide que tu m'as donné ainsi que le temps que tu as prit pour partager tes automations!

La seule chose que j'aimerais savoir c'est si tu as réussi à faire un template pour que lorsque allowed_kwh est disponible d'arrêter de chauffer pour ne pas gaspiller de l'électricité pour rien. Je l'ajouterais à une autre automation, mais c'est le template que je suis pas certain.

@FrancoLoco
Copy link
Collaborator

Le calcul est toujours disponible aux même heures:

  • 4h00 le matin
  • 14h00 l’après-midi

Pas besoin de surveiller quand ça devient disponible.. si tu veux ralentir un peu ton chauffage tu peux toujours le faire à ces heures là.

@gravelfreeman
Copy link
Author

gravelfreeman commented Dec 8, 2023

Depuis le défi Hilo de hier j'ai enfin pu utiliser les sensors template. J'ai ces 3 erreurs dans mes logs:

2023-12-08 17:36:04.351 ERROR (MainThread) [homeassistant.helpers.event] Error while processing template: Template<template=({{state_attr('sensor.recompenses_hilo', 'history')[0]['events'] | length}}) renders=2>
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 569, in async_render
    render_result = _render_with_context(self.template, compiled, **kwargs)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 2243, in _render_with_context
    return template.render(**kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/jinja2/environment.py", line 1301, in render
    self.environment.handle_exception()
  File "/usr/local/lib/python3.11/site-packages/jinja2/environment.py", line 936, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "<template>", line 1, in top-level template code
  File "/usr/local/lib/python3.11/site-packages/jinja2/sandbox.py", line 303, in getitem
    return obj[argument]
           ~~~^^^^^^^^^^
jinja2.exceptions.UndefinedError: list object has no element 0

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 695, in async_render_to_info
    render_info._result = self.async_render(
                          ^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 571, in async_render
    raise TemplateError(err) from err
homeassistant.exceptions.TemplateError: UndefinedError: list object has no element 0
2023-12-08 17:36:04.359 ERROR (MainThread) [homeassistant.components.template.template_entity] TemplateError('UndefinedError: list object has no element 0') while processing template 'Template<template=({{state_attr('sensor.recompenses_hilo', 'history')[0]['events'] | length}}) renders=4>' for attribute '_attr_native_value' in entity 'sensor.defi_hilo_nb_defi_completes'

EDIT: correction des erreurs, les autres enlevés c'était ma faute

@ic-dev21
Copy link
Collaborator

Depuis le défi Hilo de hier j'ai enfin pu utiliser les sensors template. J'ai ces 3 erreurs dans mes logs:

2023-12-08 17:36:04.351 ERROR (MainThread) [homeassistant.helpers.event] Error while processing template: Template<template=({{state_attr('sensor.recompenses_hilo', 'history')[0]['events'] | length}}) renders=2>
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 569, in async_render
    render_result = _render_with_context(self.template, compiled, **kwargs)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 2243, in _render_with_context
    return template.render(**kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/jinja2/environment.py", line 1301, in render
    self.environment.handle_exception()
  File "/usr/local/lib/python3.11/site-packages/jinja2/environment.py", line 936, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "<template>", line 1, in top-level template code
  File "/usr/local/lib/python3.11/site-packages/jinja2/sandbox.py", line 303, in getitem
    return obj[argument]
           ~~~^^^^^^^^^^
jinja2.exceptions.UndefinedError: list object has no element 0

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 695, in async_render_to_info
    render_info._result = self.async_render(
                          ^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 571, in async_render
    raise TemplateError(err) from err
homeassistant.exceptions.TemplateError: UndefinedError: list object has no element 0
2023-12-08 17:36:04.359 ERROR (MainThread) [homeassistant.components.template.template_entity] TemplateError('UndefinedError: list object has no element 0') while processing template 'Template<template=({{state_attr('sensor.recompenses_hilo', 'history')[0]['events'] | length}}) renders=4>' for attribute '_attr_native_value' in entity 'sensor.defi_hilo_nb_defi_completes'

EDIT: correction des erreurs, les autres enlevés c'était ma faute

Si tu essayes ton jinja dans dev tools il marche?

@gravelfreeman
Copy link
Author

Je ne vois pas d'erreur, j'ai copy paste le code dedans, autre chose à faire?

image

image

@ic-dev21
Copy link
Collaborator

Quand j'utilise ça:

{{state_attr('sensor.recompenses_hilo', 'history')[0]['events'] | length}}

J'obtiens un output, type number, de 3. Donc ici ça fonctionne bien.

Que cherches-tu à faire exactement? Ça?
image

@ic-dev21
Copy link
Collaborator

Peut-on closer?

@gravelfreeman
Copy link
Author

Il y a toujours les 3 erreurs tel qu'indiqué dans mon post du 8 décembre. Veux-tu que je fasse un autre issue?

@ic-dev21
Copy link
Collaborator

Il y a toujours les 3 erreurs tel qu'indiqué dans mon post du 8 décembre. Veux-tu que je fasse un autre issue?

Nonon j’avais juste perdu le fil haha.

As-tu essayé de les faire dans le GUI tes templates? Ils peuvent être ajoutés dans les helpers dans 2024.X.X et +, peut-être que ça marcherait par là?

@ic-dev21
Copy link
Collaborator

ic-dev21 commented Feb 1, 2024

@gravelfreeman j’ai pu reproduire mais je pense que c’est un bug HA. Tu dois avoir ça juste au reboot?

HA scan tes templates avant que l’info se load via le websocket. Ça doit venir de là.

@gravelfreeman
Copy link
Author

Bon j'ai enfin eu le temps de retourner à HA et je suis sur toute les dernières MAJ incluant la latest stable de Hilo. J'ai donc procédé à la recréation de tout mes sensors Hilo templates dans Helpers et j'ai de nouvelles erreurs cette fois ci.

Je crois que cette erreur provient du sensor sensor.recompenses_hilo

2024-02-07 20:14:39.962 ERROR (MainThread) [homeassistant.helpers.event] Error while processing template: Template<template=({{state_attr('sensor.recompenses_hilo', 'history')[0]['events'] | length}}) renders=2>
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 572, in async_render
    render_result = _render_with_context(self.template, compiled, **kwargs)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 2332, in _render_with_context
    return template.render(**kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/jinja2/environment.py", line 1301, in render
    self.environment.handle_exception()
  File "/usr/local/lib/python3.12/site-packages/jinja2/environment.py", line 936, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "<template>", line 1, in top-level template code
  File "/usr/local/lib/python3.12/site-packages/jinja2/sandbox.py", line 303, in getitem
    return obj[argument]
           ~~~^^^^^^^^^^
jinja2.exceptions.UndefinedError: list object has no element 0

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 698, in async_render_to_info
    render_info._result = self.async_render(
                          ^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 574, in async_render
    raise TemplateError(err) from err
homeassistant.exceptions.TemplateError: UndefinedError: list object has no element 0

Ensuite celle-ci pour sensor.defi_hilo_nb_defi_completes

2024-02-07 20:14:39.969 ERROR (MainThread) [homeassistant.components.template.template_entity] TemplateError('UndefinedError: list object has no element 0') while processing template 'Template<template=({{state_attr('sensor.recompenses_hilo', 'history')[0]['events'] | length}}) renders=4>' for attribute '_attr_native_value' in entity 'sensor.defi_hilo_nb_defi_completes'

Celui-ci je ne sais pas trop c'est quel sensor exactement

2024-02-07 20:14:39.970 ERROR (MainThread) [homeassistant.helpers.event] Error while processing template: Template<template=({{ "%.2f"|format(1.15*(float(states.sensor.hilo_energy_total_low.state, 0) *    float(states.sensor.hilo_rate_low.state, 0) +    float(states.sensor.hilo_energy_total_medium.state, 0) *   float(states.sensor.hilo_rate_medium.state, 0) + 0.435))  | round(2)}}) renders=2>
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 572, in async_render
    render_result = _render_with_context(self.template, compiled, **kwargs)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 2332, in _render_with_context
    return template.render(**kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/jinja2/environment.py", line 1301, in render
    self.environment.handle_exception()
  File "/usr/local/lib/python3.12/site-packages/jinja2/environment.py", line 936, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "<template>", line 1, in top-level template code
  File "/usr/local/lib/python3.12/site-packages/jinja2/sandbox.py", line 393, in call
    return __context.call(__obj, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 1996, in forgiving_float
    return float(value)
           ^^^^^^^^^^^^
jinja2.exceptions.UndefinedError: 'None' has no attribute 'state'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 698, in async_render_to_info
    render_info._result = self.async_render(
                          ^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 574, in async_render
    raise TemplateError(err) from err
homeassistant.exceptions.TemplateError: UndefinedError: 'None' has no attribute 'state'

Celui-ci concerne sensor.electricity_cost_today, je crois que je dois mettre un state attritube mais je ne sais pas lequel?

2024-02-07 20:14:39.973 ERROR (MainThread) [homeassistant.components.template.template_entity] TemplateError('UndefinedError: 'None' has no attribute 'state'') while processing template 'Template<template=({{ "%.2f"|format(1.15*(float(states.sensor.hilo_energy_total_low.state, 0) *    float(states.sensor.hilo_rate_low.state, 0) +    float(states.sensor.hilo_energy_total_medium.state, 0) *   float(states.sensor.hilo_rate_medium.state, 0) + 0.435))  | round(2)}}) renders=4>' for attribute '_attr_native_value' in entity 'sensor.electricity_cost_today'

Voici un autre que je ne suis pas certain c'est quel sensor

2024-02-07 20:14:39.974 ERROR (MainThread) [homeassistant.helpers.event] Error while processing template: Template<template=({{ float(states.sensor.hilo_energy_total_low.state, 0) +    float(states.sensor.hilo_energy_total_medium.state, 0) }}) renders=2>
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 572, in async_render
    render_result = _render_with_context(self.template, compiled, **kwargs)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 2332, in _render_with_context
    return template.render(**kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/jinja2/environment.py", line 1301, in render
    self.environment.handle_exception()
  File "/usr/local/lib/python3.12/site-packages/jinja2/environment.py", line 936, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "<template>", line 1, in top-level template code
  File "/usr/local/lib/python3.12/site-packages/jinja2/sandbox.py", line 393, in call
    return __context.call(__obj, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 1996, in forgiving_float
    return float(value)
           ^^^^^^^^^^^^
jinja2.exceptions.UndefinedError: 'None' has no attribute 'state'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 698, in async_render_to_info
    render_info._result = self.async_render(
                          ^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 574, in async_render
    raise TemplateError(err) from err
homeassistant.exceptions.TemplateError: UndefinedError: 'None' has no attribute 'state'

Un autre que je crois que je dois mettre un attribut de state? sensor.electricity_kwh_today_consomme

2024-02-07 20:14:39.977 ERROR (MainThread) [homeassistant.components.template.template_entity] TemplateError('UndefinedError: 'None' has no attribute 'state'') while processing template 'Template<template=({{ float(states.sensor.hilo_energy_total_low.state, 0) +    float(states.sensor.hilo_energy_total_medium.state, 0) }}) renders=4>' for attribute '_attr_native_value' in entity 'sensor.electricity_kwh_today_consomme'

Merci de m'aider et en espérant que les sensors fonctionnent sans erreurs désormais dans Helpers.

@RayLation
Copy link

RayLation commented Feb 8, 2024

c'est effectivement bizarre
J'ai revalidé le code des templates sur le wiki et tout fonctionne bien ici.
On voit aussi dans tes screenshots que les templates passent (au moment où tu les exécutes) dans dev tools. Alors je vois pas de raisons que le sensor lui-même qui utilise le même template ne fonctionne pas.

Tu pourrais peut-etre essayer de flusher complètement les sensors de ta config, rebooter, et ensuite les recréer

@gravelfreeman
Copy link
Author

c'est effectivement bizarre J'ai revalidé le code des templates sur le wiki et tout fonctionne bien ici. On voit aussi dans tes screenshots que les templates passent (au moment où tu les exécutes) dans dev tools. Alors je vois pas de raisons que le sensor lui-même qui utilise le même template ne fonctionne pas.

Tu pourrais peut-etre essayer de flusher complètement les sensors de ta config, rebooter, et ensuite les recréer

C'est exactement ce que j'ai fait en supprimant les sensors de mon dossier /sensors/hilo.yaml et en rebootant. Enuite je les ai recréés dans Helpers directement. Je viens tout juste de faire cela.

@ic-dev21
Copy link
Collaborator

ic-dev21 commented Feb 8, 2024

c'est effectivement bizarre J'ai revalidé le code des templates sur le wiki et tout fonctionne bien ici. On voit aussi dans tes screenshots que les templates passent (au moment où tu les exécutes) dans dev tools. Alors je vois pas de raisons que le sensor lui-même qui utilise le même template ne fonctionne pas.
Tu pourrais peut-etre essayer de flusher complètement les sensors de ta config, rebooter, et ensuite les recréer

C'est exactement ce que j'ai fait en supprimant les sensors de mon dossier /sensors/hilo.yaml et en rebootant. Enuite je les ai recréés dans Helpers directement. Je viens tout juste de faire cela.

Faire un bête copier-coller dans configuration.yaml directement ne fonctionnerait pas?

@gravelfreeman
Copy link
Author

c'est effectivement bizarre J'ai revalidé le code des templates sur le wiki et tout fonctionne bien ici. On voit aussi dans tes screenshots que les templates passent (au moment où tu les exécutes) dans dev tools. Alors je vois pas de raisons que le sensor lui-même qui utilise le même template ne fonctionne pas.
Tu pourrais peut-etre essayer de flusher complètement les sensors de ta config, rebooter, et ensuite les recréer

C'est exactement ce que j'ai fait en supprimant les sensors de mon dossier /sensors/hilo.yaml et en rebootant. Enuite je les ai recréés dans Helpers directement. Je viens tout juste de faire cela.

Faire un bête copier-coller dans configuration.yaml directement ne fonctionnerait pas?

Bin dans configuration.yaml je déclare le dossier /sensors/* donc c'est comme ça avant que j'avais mes problèmes avec les templates. Donc de les remettres dans configuration.yaml c'est complètement inutile.

J'ai suivi ton conseil de les supprimer et de les ajouter en tant que sensor template dans les Helpers. C'est fait maintenant et j'ai de nouvelles erreurs, soit les dernières que j'ai posté.

@gravelfreeman
Copy link
Author

J'ai réactivé chaque sensor un par un pour enfin identifier quel sensor donne quelle erreur et par la même occasion j'ai pu trouver une erreur dans un template jinja qui ajoutait pas mal de cochonerie dans les logs.

Name: Hilo - Coût de l'électricité aujourd'hui
Icon: mdi:cash-sync
Entity_ID: sensor.electricity_cost_today
Unit of measurement: $
State class: Measurement
Template:

{{ "%.2f"|format(1.15*(float(states.sensor.hilo_energy_total_low.state, 0) *    float(states.sensor.hilo_rate_low.state, 0) +    float(states.sensor.hilo_energy_total_medium.state, 0) *   float(states.sensor.hilo_rate_medium.state, 0) + 0.435))  | round(2)}}

Erreur:

2024-03-04 18:35:56.465 ERROR (MainThread) [homeassistant.components.template.template_entity] TemplateError('UndefinedError: 'None' has no attribute 'state'') while processing template 'Template<template=({{ "%.2f"|format(1.15*(float(states.sensor.hilo_energy_total_low.state, 0) *    float(states.sensor.hilo_rate_low.state, 0) +    float(states.sensor.hilo_energy_total_medium.state, 0) *   float(states.sensor.hilo_rate_medium.state, 0) + 0.435))  | round(2)}}) renders=4>' for attribute '_attr_native_value' in entity 'None'

Name: Hilo - kWh consommés aujourd'hui
Icon: mdi:home-lightning-bolt
Entity_ID: sensor.electricity_kwh_today_consomme
Unit of measurement: kWh
State class: Measurement
Template:

{{ float(states.sensor.hilo_energy_total_low.state, 0) + float(states.sensor.hilo_energy_total_medium.state, 0) }}

Erreur:

2024-03-04 18:58:01.049 ERROR (MainThread) [homeassistant.components.template.template_entity] TemplateError('UndefinedError: 'None' has no attribute 'state'') while processing template 'Template<template=({{ float(states.sensor.hilo_energy_total_low.state, 0) + float(states.sensor.hilo_energy_total_medium.state, 0) }}) renders=4>' for attribute '_attr_native_value' in entity 'None'

Pour résumer ce sont ces 2 sensors sensor.hilo_energy_total_low et sensor.hilo_energy_total_medium qui sont responsables de la dysfonction des templates. Évidemment c'est normal puisque les sensors d'énergie sont brisés ça en revient au PR #324.

Je les ai supprimés en attendant un fix. Plus d'erreurs dans les logs. Enfin!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants