Mise a jour des add-on HACS

Salut les amis.
Depuis un certain temps, je n’arrive plus a faire fonctionner mon sensor de mise a jours des add-on.
il est tout le temps “indisponible” hors je n’ai rien changer a mon sensor, et tout allait tres bien avant.

Capture d’écran 2022-06-03 à 15.39.58

Voici mon sensor:

maj:
    friendly_name: Mise à jour 
    value_template: >-           
      {% if states('sensor.hacs') | float == 1 and states('binary_sensor.home_assistant_versions_update_available')  == 'off' and states('binary_sensor.home_assistant_operating_system_update_available')  == 'off' and states('binary_sensor.deconz_update_available')  == 'off'%}
        Aucune
      {% elif states('sensor.hacs') | float > 1 or states('binary_sensor.home_assistant_versions_update_available') == 'on' or states('binary_sensor.home_assistant_operating_system_update_available')  == 'on'  or states('binary_sensor.deconz_update_available')  == 'on' -%}   
      {%- endif -%}
        {%- if states('binary_sensor.home_assistant_versions_update_available') == 'on' or states('binary_sensor.home_assistant_operating_system_update_available')  == 'on' or states('binary_sensor.deconz_update_available')  == 'on' %} 
           {%- if states('binary_sensor.home_assistant_versions_update_available') == 'on' %} 
             HA Core {{ states('sensor.home_assistant_versions') }}<br>
           {%- endif -%}
           {%- if states('binary_sensor.home_assistant_operating_system_update_available')  == 'on' %} 
             HassOS {{ states('sensor.home_assistant_operating_system_version') }} → {{ states('sensor.home_assistant_operating_system_newest_version') }}<br>
           {%- endif -%}
           {%- if states('binary_sensor.deconz_update_available')  == 'on' %}
             deCONZ {{ states.sensor.deconz_version.state }} → {{ states.sensor.deconz_newest_version.state }}<br>
           {%- endif -%}
        {%- endif -%}
        {%- if states('sensor.hacs') | float > 1  %}
             {%- if states('sensor.hacs') | float == 1 %}
              {{ states.sensor.hacs.attributes.repositories[0].display_name }} {{ states.sensor.hacs.attributes.repositories[0].available_version }}<br>
             {%- elif states('sensor.hacs') | float == 2 %}
               {{ states.sensor.hacs.attributes.repositories[0].display_name }} {{ states.sensor.hacs.attributes.repositories[0].available_version }}<br>
               {{ states.sensor.hacs.attributes.repositories[1].display_name }} {{ states.sensor.hacs.attributes.repositories[1].available_version }}<br>
             {%- elif states('sensor.hacs') | float == 3 %}
               {{ states.sensor.hacs.attributes.repositories[0].display_name }} {{ states.sensor.hacs.attributes.repositories[0].available_version }}<br>
               {{ states.sensor.hacs.attributes.repositories[1].display_name }} {{ states.sensor.hacs.attributes.repositories[1].available_version }}<br>
               {{ states.sensor.hacs.attributes.repositories[2].display_name }} {{ states.sensor.hacs.attributes.repositories[2].available_version }}<br>
             {%- elif states('sensor.hacs') | float == 4 %}
               {{ states.sensor.hacs.attributes.repositories[0].display_name }} {{ states.sensor.hacs.attributes.repositories[0].available_version }}<br>
               {{ states.sensor.hacs.attributes.repositories[1].display_name }} {{ states.sensor.hacs.attributes.repositories[1].available_version }}<br>
               {{ states.sensor.hacs.attributes.repositories[2].display_name }} {{ states.sensor.hacs.attributes.repositories[2].available_version }}<br>
               {{ states.sensor.hacs.attributes.repositories[3].display_name }} {{ states.sensor.hacs.attributes.repositories[3].available_version }}<br>
             {%- elif states('sensor.hacs') | float == 5 %}
               {{ states.sensor.hacs.attributes.repositories[0].display_name }} {{ states.sensor.hacs.attributes.repositories[0].available_version }}<br>
               {{ states.sensor.hacs.attributes.repositories[1].display_name }} {{ states.sensor.hacs.attributes.repositories[1].available_version }}<br>
               {{ states.sensor.hacs.attributes.repositories[2].display_name }} {{ states.sensor.hacs.attributes.repositories[2].available_version }}<br>
               {{ states.sensor.hacs.attributes.repositories[3].display_name }} {{ states.sensor.hacs.attributes.repositories[3].available_version }}<br>
               {{ states.sensor.hacs.attributes.repositories[4].display_name }} {{ states.sensor.hacs.attributes.repositories[3].available_version }}<br>
             {%- else -%}
             {%- endif -%}
      {%- else -%}
      {%- endif -%}

Les autre mise a jour fonctionnent: que ce soit HA ou operating system ou deconz. Mais pas pour mes add-on de HACS.

et voici l’erreur que je trouve dans les outils de developpement, modele:

UndefinedError: ‘homeassistant.util.read_only_dict.ReadOnlyDict object’ has no attribute ‘repositories’

Je ne comprend pas ce qui se passe. Y aurait-il eu du changements dans les precedentes mise a jour de HA ?
Je vous demande donc votre aide.
Merci a vous.

Salut.

C’est dommage tu as probablement passé plus de temps à décrire le souci qu’à chercher l’explication

je ne suis pas sur que ce soit cela, car j’avais deja cette erreur sur les dernieres version 2022.5

Mais si tu sais, je veux bien de tes lumieres pour arriver a retrouver mon sensor correcte.

Merci a toi

Commence par voir le premier point sur les templates et les valeurs par défaut

J’avoue que j’ai survolé le code très vite et que je ne me suis pas amusé à remettre le formatage propre pour comprendre les imbrications de tes IF : Donc c’est peut-être pas uniquement ça, mais ça y participe sans aucun doute très fortement.

Le probleme est que ce sensor fonctionne chez plusieurs personnes a l’heure actuelle (mise a jour de HA faite) et que chez moi, ca ne fonctionne plus. donc, il y a surement quelque chose d’autre qui empeche ce sensor de fonctionner, mais quoi ?? c’est la, la question.
si tu as l’occasion, copie le sensor et teste le dans ton developpeur, voir si toi aussi, tu as une erreur, ou si ca fonctionne.

Salut.

Je t’invite à relire très sérieusement le sujet de mon premier lien. La réponse est déjà connue
Dans tous les cas, ton sensor ne fonctionne plus à cause des templates. Et s’il fonctionne chez les autres c’est qu’ils ont soit fait les corrections (parce que ton erreur est présente plusieurs fois) soit parce qu’ils n’ont pas déployé la version 2022.06

Quant à tester de mon côté, il faut pour que ça fonctionne que je commence par revoir tout ton code, adapte toutes les entités (celles que je n’ai pas ou avec un nom différent), corrige les templates (ce que tu devra aussi faire tôt ou tard) … Voir refaire une partie du code pour simplifier ces IF
Donc je vais y passer 15min, alors que tu as 3 minutes de lecture et 30 secondes de corrections. Et qu’en plus, tu aura compris comment faire puisqu’il est probable que ce ne soit pas le seul sensor avec des templates à corriger chez toi.
D’ailleurs ne perds pas trop de temps à le tester dans le mode développeur seulement : il n’aide pas puisqu’il y a justement un comportement différent dans cette partie de ha. J’en parle dans le sujet suite à ton message initial
Si après tout ça, ça ne marche toujours pas, on verra mais pour l’instant le plus efficace n’est pas chez moi

1 « J'aime »

Je vais relire, mais je ne vois pas ce que je fais comme erreur, sachant que meme avant la mise a jour 2022.06.01 j’avais deja ce probleme, donc, pas vraiment du a la mise a jour HA.
Je ne suis pas du tout expert en yaml et en sensor, ce sensor m’a ete donner sur forum, et fonctionnait tres bien (sans rien modifier) donc, je ne sais pas vraiment quoi et ou modifier.

Concernant hacs, il n’y a qu’une seul entitee. sensor.hacs (que tu as aussi) !
donc rien a changer dans les entitéés. de plus, meme les autres mise a jour, sont des entitées d’origine de HA.(que tu as aussi).
Mais je comprend que tu ne veux pas faire le teste ou passer du temps la dessus. c’etait juste pour te prouver que ca fonctionne chez tout le monde, sauf chez moi. d’ou, surement un autre probleme autre part.
Mais je vais, comme tu me le signale, relire correctement ton lien, et voir les solutions connue (si il y a).
Merci a toi.

je viens d’essayer ceci, mais toujours pareil.

          {%- if states('sensor.hacs') | float(default=10) > 1  %}
               {%- if states('sensor.hacs') | float(default=10) == 1 %}
                {{ states.sensor.hacs.attributes.repositories[0].display_name }} {{ states.sensor.hacs.attributes.repositories[0].available_version }}<br>
               {%- elif states('sensor.hacs') | float(default=10) == 2 %}
                 {{ states.sensor.hacs.attributes.repositories[0].display_name }} {{ states.sensor.hacs.attributes.repositories[0].available_version }}<br>
                 {{ states.sensor.hacs.attributes.repositories[1].display_name }} {{ states.sensor.hacs.attributes.repositories[1].available_version }}<br>
               {%- elif states('sensor.hacs') | float(default=10) == 3 %}
                 {{ states.sensor.hacs.attributes.repositories[0].display_name }} {{ states.sensor.hacs.attributes.repositories[0].available_version }}<br>
                 {{ states.sensor.hacs.attributes.repositories[1].display_name }} {{ states.sensor.hacs.attributes.repositories[1].available_version }}<br>
                 {{ states.sensor.hacs.attributes.repositories[2].display_name }} {{ states.sensor.hacs.attributes.repositories[2].available_version }}<br>
               {%- elif states('sensor.hacs') | float(default=10) == 4 %}
                 {{ states.sensor.hacs.attributes.repositories[0].display_name }} {{ states.sensor.hacs.attributes.repositories[0].available_version }}<br>
                 {{ states.sensor.hacs.attributes.repositories[1].display_name }} {{ states.sensor.hacs.attributes.repositories[1].available_version }}<br>
                 {{ states.sensor.hacs.attributes.repositories[2].display_name }} {{ states.sensor.hacs.attributes.repositories[2].available_version }}<br>
                 {{ states.sensor.hacs.attributes.repositories[3].display_name }} {{ states.sensor.hacs.attributes.repositories[3].available_version }}<br>
               {%- elif states('sensor.hacs') | float(default=10) == 5 %}
                 {{ states.sensor.hacs.attributes.repositories[0].display_name }} {{ states.sensor.hacs.attributes.repositories[0].available_version }}<br>
                 {{ states.sensor.hacs.attributes.repositories[1].display_name }} {{ states.sensor.hacs.attributes.repositories[1].available_version }}<br>
                 {{ states.sensor.hacs.attributes.repositories[2].display_name }} {{ states.sensor.hacs.attributes.repositories[2].available_version }}<br>
                 {{ states.sensor.hacs.attributes.repositories[3].display_name }} {{ states.sensor.hacs.attributes.repositories[3].available_version }}<br>
                 {{ states.sensor.hacs.attributes.repositories[4].display_name }} {{ states.sensor.hacs.attributes.repositories[3].available_version }}<br>
               {%- else -%}
               {%- endif -%}
        {%- else -%}
        {%- endif -%}

je ne sais pas quoi modifier. je continue a chercher !

ça va être difficile de prouver quoique ce soit (et c’est pas le sujet) mais juste pour te montrer non il n’y a pas qu’un truc que et tu fais fausse route :

  • sensor.hacs
  • binary_sensor.home_assistant_versions_update_available
  • binary_sensor.home_assistant_operating_system_update_available
  • binary_sensor.deconz_update_available
  • sensor.home_assistant_versions
  • sensor.deconz_newest_version
  • sensor.deconz_version

Et je n’ai pas tout mis.

Donc même si je dois avoir un certain nombre de trucs qui sont similaires (pour sensor.hacs c’est vrai directement), je n’ai ni les éléments pour la partie deconz par exemple, ni le contenu qui pourrait me permettre de simuler tout ça, ni forcement les même noms …
Donc non c’est pas si simple, pas si direct et je ne peux pas tester… C’est faisable mais c’est long !

Je le dis et je le répéte, c’est peut-être pas le seul souci dans ton sensor… Mais tu as une erreur qui est présente au moins une demi douzaine de fois… Donc en commençant par cette correction, tu défriches le terrain

edit:
Donc maintenant que tu as vu une première partie de la solution. il faut regarder les logs, et comme tu as un gros bloc de code compliqué, faire les vérifications morceau par morceau
Tu peux par exemple vérifier individuellement les sensors que j’ai listé (et finir de faire la liste) pour t’assurer que toutes les bonnes conditions sont réunies
Copie les infos ici que l’on puisse résonner ensemble
Bon courage

2 pistes :

  • tu as pas partagé tout le code… il reste peut-être des float à corriger au début
  • Chez moi hacs.sensor a un attribut repositories vide

surement normal, tu es a 0 en meme temps.

Moi bizarement, je n’ai meme plus le repositories, et c’est la que je me questionne.

5 mise a jour en attente, mais pas de « repositories » !
ce n’est pas logique

voici, aussi, un autre sensor, qui lui aussi, avant fonctionnait, et maintenant en erreur, uniquement pour hacs celui ci.
Mais meme resultat. rien !

- platform: template
  sensors:
    mise_a_jour_hacs:
      friendly_name: "Mise a jour Hacs"
      value_template: >-
        {% set hacs_entity_id = 'sensor.hacs' %}
        {% if (states(hacs_entity_id) | float(default=10)) != 0 %}
        {% for repo in state_attr(hacs_entity_id, 'repositories') %}
        * **{{ repo.display_name }}** {{ repo["installed_version"] }} -> {{ repo["available_version"] }}
        {% endfor %}
        {% endif %}

j’y ai rajouter, comme dis dans ton lien, une valeur defaut. mais ca ne change rien.

le soucis, pas de repositories sur les infos de mon entitée sensor.hacs

et comme tu peux voir ici, tout est bon dans mes sensors, sauf HACS.

Logique je pense que ça l’est : pas de repositories = pas d’affichage possible. Que ça ne soit pas une bonne nouvelle pour toi sans doute, il y a de gros changements sur hacs Release 1.25.0 · hacs/integration · GitHub il faut creuser par là

Quelques remarques au fil de l’eau

  • la valeur par défaut à 10 ça ne me semble pas judicieux… Le nombre de mise à jour le plus courant c’est probablement 0, pas 10
  • mettre un float (nombre à virgule) pour comparer avec un int (nombre entier) c’est pas vraiment logique
  • pas de ta faute mais le code pique les yeux et manifestement c’est un assemblage de plusieurs « codeurs », dont 1 qui ne connait pas les boucles FOR

Ecoute, moi je cherche juste a avoir un sensor me permattant d’afficher sur mon lovelace, le noms de mes mise a jour addon dans HACS comme j’avais quand ca fonctionnait:

Capture d’écran 2022-06-04 à 10.56.48

Je ne suis quand meme pas le seul a avoir ce genre de sensor.

Tu n’es sans doute pas le seul, c’est certain. Après, c’est une question de goût
Vérifie si HACS est à jour

Hacs est a jour, et je n’ai pas de repertories ! donc, je pense que j’ai une merde dans hacs !

Quelle version de HACS tu as ?

la derniere.
Je viens de regarder, au 22 mai, j’avais toujours mes mise a jour sur mon sensor. donc, j’ai restaurer une version du 18 mai, et j’ai bien reccuperer mes mise a jour.
Je vais donc maintenant faire mise a jour par mise a jour, et voir ce qui peut faire merder hacs.

une fois que je met « HACS » a jour, version 1.25.5 je n’ai plus de « repertories »

et donc, je perds mon sensor de mise a jour add-on

En modifiant le sensor.hacs via les outils de dev pour ajouter ce qu’il manque, tu peux finir de vérifier que le sensor d’affichage est bien affiché


et ça mets à jour l’affichage