Logger: homeassistant.components.sensor
Source: custom_components/pollens/sensor.py:148
Integration: Capteur (documentation, issues)
First occurred: 7:42:01 (2 occurrences)
Last logged: 7:42:01
Error adding entities for domain sensor with platform pollens
Error while setting up pollens platform for sensor
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 317, in async_add_entities
await asyncio.gather(*tasks)
File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 509, in _async_add_entity
await entity.add_to_platform_finish()
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 530, in add_to_platform_finish
self.async_write_ha_state()
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 295, in async_write_ha_state
self._async_write_ha_state()
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 334, in _async_write_ha_state
icon = (entry and entry.icon) or self.icon
File "/config/custom_components/pollens/sensor.py", line 148, in icon
return ICONS[self._data.get("riskLevel")]
KeyError: 2
Pour quel département ? J’ai corrigé un problème sur le pollen « Cupressacées » que je n’avais pas géré, mais qui ne semble pas être celui pour lequel vous avez un problème.
Bonsoir à tous,
J’ai bien réussi à importer le repository dans HACS et je suis averti des mises à jour.
Maintenant, question basique : je l’utilise comment ce « sensor » ?
Dans Lovelace, quand je crée une carte « entité » je ne trouve pas trace du sensor « pollen ».
Faut il le rechercher sous un autre nom ? ou bien faut il avant ajouter une intégration via configuration/intégration ?
Je précise que j’ai bien ajouté dans configuration.yaml la section « sensor » indiquée le manuel
Bref je débute et là il me manque un panneau de direction
Merci par avance pour vos infos
cdlt
Christophe
Indiquer le bon numéro de département. Le timeout est facultatif
Après avoir redémarré HomeAssistant, le sensor devrait appararaitre sours le nom sensor.pollens_dpt (sensor.pollens_oise dans l’exemple).
Ne pas hésiter a regarder dans les LOG de homeassistant s’il n’y a pas une erreur.
j’avais bien ajouté la section dans le fichier configuration.yaml, mais quand tu dis "le sensor devrait appararaitre sours le nom sensor.pollens_dpt " : il apparaît où ?
Cela devrait il créer automatiquement une carte dans lovelace ?
je corrige : la section dans le fichier configuration.yaml, est bien prise en compte.
je trouve le sensor.pollens_paris par contre j’aimerais afficher une carte avec les attributs de l’entité.
La seule info que me donne l’entité dans une carte est son « état global » mais pas le détail (donnés par les attributs) des différentes plantes (aulne, peuplier, … ) :
url: 'https://pollens.fr'
departement: Paris
aulne: très faible
peuplier: très faible
saule: très faible
cupressacees: très faible
friendly_name: pollens Paris
icon: 'mdi:alert-outline'
Comment faire pour créer une carte avec les valeurs des attributs de l’entité ?
Graphiquement cela ne semble pas réalisable, donc il faut probablement passer par l’éditeur de code ?
Cependant ce n’est pas la bonne solution car j’imagine que les attributs (les pollens) sont mis à jour et changent dès qu’un nouveau pollen (disp)apparaît.
Idéalement j’aimerais afficher un graphique similaire à celui du site pollens.fr à partir des attributs remontés par le « sensor » (c’est à dire un graphique limité aux lignes des pollens actifs) :
La bonne approche doit être du coté d’un template … mais là je découvre.
Si vous avez des pointeurs sur l’usage des templates dans lovelace, je suis preneur.
Dans mon cas je ne dois pas écrire « en dur » les noms (« name ») des pollens mais les déduires des attributs du sensor.
effectivement, plus simple d’écarter les valeurs désirées.
pour la sortie dans Lovelace, j’utilise une carte de type « entities » pour afficher les différents attributs. Ce qui donne le code suivant par ex où j’ai écrit en dur les noms des pollens. Ce qui n’est pas propre puisque demain ce sera peut être d’autres pollens :
je veux donc utiliser le code que tu as modifié pour construire une carte avec les valeurs (pollens) récupérées.
En fait, je pense que la solution est de faire un « sensor template » utilisant ce code … mais je n’ai pas encore tout compris
Erreur sur le sensors.yaml
je veux créer autant de sensors qu’il y a de pollens dans pollen_paris. Ensuite, j’utiliserai une carte de types « entities » pour dynamiquement les sensors correspondant aux différents pollens.
Dans l’outil de dev ça fonctionne :
{% set ns = namespace(pollen = []) -%}
{% for item in states.sensor.pollens_paris.attributes -%}
{% if not item in ("attribution","url", "departement", "friendly_name", "icon") -%}
{% set ns.pollen = ns.pollen + [item + ':' + state_attr('sensor.pollens_paris', item)] -%}
{%- endif -%}
{% endfor -%}
- platform: template
sensors:
{% for pollen in ns.pollen -%}
{% set p = pollen.split(':')[0] -%}
- sensor.pollen_{{p}}
friendly_name: Pollen {{ p }}
value_template: {% set risk = pollen.split(':')[1] -%}{{risk}}
{% endfor -%}
donne en sortie le résultat attendu :
- platform: template
sensors:
- sensor.pollen_aulne
friendly_name: Pollen aulne
value_template: très faible
- sensor.pollen_peuplier
friendly_name: Pollen peuplier
value_template: très faible
- sensor.pollen_saule
friendly_name: Pollen saule
value_template: très faible
- sensor.pollen_cupressacees
friendly_name: Pollen cupressacees
value_template: très faible
par contre quand je mets le code dans sensors.yaml j’ai une erreur :
Configuration invalide
Error loading /config/configuration.yaml: while scanning for the next token
found character ‹ % › that cannot start any token
in « /config/sensors.yaml », line 5, column 2
contenu de sensors.yaml :
- platform: pollens
location: "75"
timeout: 60
{% set ns = namespace(pollen = []) -%}
{% for item in states.sensor.pollens_paris.attributes -%}
{% if not item in ("attribution","url", "departement", "friendly_name", "icon") -%}
{% set ns.pollen = ns.pollen + [item + ':' + state_attr('sensor.pollens_paris', item)] -%}
{%- endif -%}
{% endfor -%}
- platform: template
sensors:
{% for pollen in ns.pollen -%}
{% set p = pollen.split(':')[0] -%}
pollen_{{p}}
friendly_name: Pollen {{ p }}
value_template: {% set risk = pollen.split(':')[1] -%}{{risk}}
{% endfor %}
N’hésitez pas a me remonter les améliorations que vous voudriez voir implémentées.
J’avais pensé au sensor pollen dominant, et a ajouter la possibilité de passer par l’interface graphique pour configurer l’intégration.
Je ne dis pas que je vais tout faire maintenant…