Cet article a pour objectif de combler un petit manque de HomeAssistant par rapport à Jeedom : l’affichage des valeurs de pollens.fr pour les afficher dans une carte et permettre de réaliser des alertes personnalisées.
Comme pour Jeedom, les données sont issues du site pollens.fr. Je me suis également imposé comme contrainte d’éviter de faire 20 appels au site et surcharger inutilement.
La méthode est de créer un ensemble de sensors en une seule fois.
Première action : récupérer l’adresse du JSON de pollens.fr adapté à votre département en remplaçant XX par le numéro du département:
https://www.pollens.fr/risks/thea/counties/XX
Ensuite, il faut créer les sensors en YAML dans le fichier configuration.yaml … ou autre fichier .yaml, cela dépend de votre configuration. A noter que la mise à jour ne sera faite que toutes les 43 200 secondes, soit … 12h. On peut augmenter si on le souhaite pour ne le faire qu’une fois par jour.
J’ai positionné une icône de fleur qui vient de material design. Elle devrait fonctionner dans toutes les dernières versions de HomeAssistant. https://pictogrammers.github.io/@mdi/font/5.3.45/
sensor:
- platform: rest
name: Pollens
resource: https://www.pollens.fr/risks/thea/counties/XXXX
json_attributes:
- risks
- riskLevel
value_template: '{{ value_json.riskLevel }}'
- platform: template
sensors:
pollens_risks_tilleul:
friendly_name: Tilleul
value_template: '{{ states.sensor.Pollens.attributes["risks"][0]["level"] }}'
icon_template: mdi:flower
pollens_risks_ambroisie:
friendly_name: Ambroisie
value_template: '{{ states.sensor.Pollens.attributes["risks"][1]["level"] }}'
icon_template: mdi:flower
pollens_risks_olivier:
friendly_name: Olivier
value_template: '{{ states.sensor.Pollens.attributes["risks"][2]["level"] }}'
icon_template: mdi:flower
pollens_risks_plantain:
friendly_name: Plantain
value_template: '{{ states.sensor.Pollens.attributes["risks"][3]["level"] }}'
icon_template: mdi:flower
pollens_risks_noisetier:
friendly_name: Noisetier
value_template: '{{ states.sensor.Pollens.attributes["risks"][4]["level"] }}'
icon_template: mdi:flower
pollens_risks_aulne:
friendly_name: Aulne
value_template: '{{ states.sensor.Pollens.attributes["risks"][5]["level"] }}'
icon_template: mdi:flower
pollens_risks_armoise:
friendly_name: Armoise
value_template: '{{ states.sensor.Pollens.attributes["risks"][6]["level"] }}'
icon_template: mdi:flower
pollens_risks_chataignier:
friendly_name: Châtaignier
value_template: '{{ states.sensor.Pollens.attributes["risks"][7]["level"] }}'
icon_template: mdi:flower
pollens_risks_urticacees:
friendly_name: Urticacées
value_template: '{{ states.sensor.Pollens.attributes["risks"][8]["level"] }}'
icon_template: mdi:flower
pollens_risks_oseille:
friendly_name: Oseille
value_template: '{{ states.sensor.Pollens.attributes["risks"][9]["level"] }}'
icon_template: mdi:flower
pollens_risks_graminees:
friendly_name: Graminées
value_template: '{{ states.sensor.Pollens.attributes["risks"][10]["level"] }}'
icon_template: mdi:flower
pollens_risks_chene:
friendly_name: Chêne
value_template: '{{ states.sensor.Pollens.attributes["risks"][11]["level"] }}'
icon_template: mdi:flower
pollens_risks_platane:
friendly_name: Platane
value_template: '{{ states.sensor.Pollens.attributes["risks"][12]["level"] }}'
icon_template: mdi:flower
pollens_risks_bouleau:
friendly_name: Bouleau
value_template: '{{ states.sensor.Pollens.attributes["risks"][13]["level"] }}'
icon_template: mdi:flower
pollens_risks_charme:
friendly_name: Charme
value_template: '{{ states.sensor.Pollens.attributes["risks"][14]["level"] }}'
icon_template: mdi:flower
pollens_risks_peuplier:
friendly_name: Peuplier
value_template: '{{ states.sensor.Pollens.attributes["risks"][15]["level"] }}'
icon_template: mdi:flower
pollens_risks_frene:
friendly_name: Frêne
value_template: '{{ states.sensor.Pollens.attributes["risks"][16]["level"] }}'
icon_template: mdi:flower
pollens_risks_saule:
friendly_name: Saule
value_template: '{{ states.sensor.Pollens.attributes["risks"][17]["level"] }}'
icon_template: mdi:flower
pollens_risks_cypres:
friendly_name: Cyprès
value_template: '{{ states.sensor.Pollens.attributes["risks"][18]["level"] }}'
icon_template: mdi:flower
# Request every 12 hours
scan_interval: 43200
Bien penser à redémarrer après la modification du fichier YAML pour que HomeAssistant ajoutent les nouveaux sensors .
Ensuite, il faut créer une carte spéciale de type entity-filter pour n’afficher que les valeurs de pollens non vide.
type: entity-filter
entities:
- sensor.pollens_risks_tilleul
- sensor.pollens_risks_ambroisie
- sensor.pollens_risks_olivier
- sensor.pollens_risks_plantain
- sensor.pollens_risks_noisetier
- sensor.pollens_risks_aulne
- sensor.pollens_risks_armoise
- sensor.pollens_risks_chataignier
- sensor.pollens_risks_urticacees
- sensor.pollens_risks_oseille
- sensor.pollens_risks_graminees
- sensor.pollens_risks_chene
- sensor.pollens_risks_platane
- sensor.pollens_risks_bouleau
- sensor.pollens_risks_charme
- sensor.pollens_risks_peuplier
- sensor.pollens_risks_frene
- sensor.pollens_risks_saule
- sensor.pollens_risks_cypres
state_filter:
- operator: '>'
value: 0
card:
type: glance
title: Pollens
Et voilà une jolie carte
Une amélioration possible serait de rajouter un code couleur pour que l’icône soit jaune ou rouge selon le niveau, mais il faudrait prendre en compte le thème pour que cela reste “lisible”.
Merci pour le tuto, c’est nickel 😉
je lâche petit à petit jeedom, suis assez fan de HA.
Merci pour cette belle intégration à HA !
J’essaie en vain d’étendre la récupération des informations de pollens.fr à plusieurs départements sans succès.
Auriez-vous une piste pour cela ?
THX
Bonjour,
Alors, je pense que le plus simple c’est de dupliquer le code en donnant un autre nom (Name) et le changer dans la partie sensor :
Par exemple:
- platform: rest
name: PollensGironde
resource: https://www.pollens.fr/risks/thea/counties/33
json_attributes:
- risks
- riskLevel
value_template: '{{ value_json.riskLevel }}'
- platform: template
sensors:
pollens_risks_tilleul:
friendly_name: Tilleul
value_template: '{{ states.sensor.PollensGironde.attributes["risks"][0]["level"] }}'
Puis d’afficher dans une autre entity filter les valeurs de PollensGironde.
Attention : le code indiqué en commentaire ne contient pas l’indentation, il ne faut pas le recopier tel quel… 🙁
Bonjour,
Merci, ça fonctionne de cette manière à condition de supprimer la première ligne :
sensor:
A voir maintenant s’il est possible de rassembler tous ces sensors dans un autre fichier que configuration.yaml pour diminuer le nombre de lignes de ce dernier (881 lignes dans mon cas pour # Pollens.fr).
En tout cas ça fonctionne, merci !
Content que cela fonctionne :
pour la séparation en plusieurs fichiers, c’est ce que je fais dans mon vrai fichier de configuration via une ligne
sensor: !include sensor.yaml
Le tutoriel suivant (en français) précise la façon d’écrire dans le fichier sensor.yaml, car ce n’est pas tout à faire pareil.
https://forum.home-assistant.lu/t/2-lorganisation-de-home-assistant-les-includes/478/2