Bonjour,
Ceci est mon premier tuto, alors soyez indulgents, mais dites moi si je m’y prends mal.
C’est un sujet malheureusement encore d’actualité pour les gens du nord, je me suis demandé comment récupérer une alerte crue sur home assistant.
VigiCrue diffuse les informations. Je me suis inspiré de ce post pour la méthode : Vigilance des crues via la box eedomus. Je ne reprends pas toutes les informations générale que donne l’auteur, je vais directement à la mise en oeuvre.
Je récupère :
- La couleur de vigilance de ma zone,
- La date de mise à jour
- le lien vers l’info directe Vigicrue
- Une description de la situation
Il ne semble plus possible d’avoir les hauteurs d’eau via VigiCrue. Je continue à chercher ce point.
La première étape consiste à récupérer l’ID de la zone qui vous intéresse.
- allez sur le site https://www.vigicrues.gouv.fr
- cliquez sur la zone qui vous intéresse
- ce qui nous intéresse ensuite est la liste des tronçons de vigilance, dans laquelle vous avez le lien du flux RSS de chaque tronçon. C’est ce flux RSS qu’on va utiliser.
Dans la suite, j’utilise le flux de l’Isère grenobloise, dont l’adresse est https://www.vigicrues.gouv.fr/rss/?CdEntVigiCru=AN12.
Sous home assistant, dans configuration.yaml, je crée 2 capteurs avec RESTFull.
rest:
- resource: "https://www.vigicrues.gouv.fr/territoire/rss/?CdEntVigiCru=AN12" # VigiCrues Isère Grenoblois
headers:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Content-Type: application/json
User-Agent: Wget/1.20.3 (linux-gnu)
scan_interval: 7200
sensor:
- name: VigiCrue
unique_id: vigicrue
json_attributes_path: "$.rss.channel.item"
json_attributes:
- pubDate
- link
value_template: "{{ ( (value_json.rss.channel.item.title).split(':') )[1] | trim | upper }}"
- name: VigiCrue description
unique_id: vigicrue_description
value_template: >
{% set t = value_json.rss.channel.item.description %}
{% set t = t.split('HL')[1].split('</p>')[1].split('Abonnez vous')[0] %}
{{ t | striptags }}
Et c’est tout, on a nos sensors.
Côté interface, j’ai choisis d’utiliser Markdown, avec config-template-card qui me permet de changer la couleur de la carte en fonction de la couleur de vigilance.
type: custom:config-template-card
entities:
- sensor.vigicrue
card:
type: markdown
content: |-
Vigicrue - *{{ state_attr('sensor.vigicrue','pubDate') }}*
---
# {{ states('sensor.vigicrue') }}
{% if states('sensor.vigicrue') != 'VERT' %}
{{ states('sensor.vigicrue_description') }}
[site VigiCrue]({{ state_attr('sensor.vigicrue','link') }})
{% endif %}
theme: ${ states['sensor.vigicrue'].state }
Le contenu de mon themes.yaml :
ROUGE:
card-background-color: '#ff8888'
state-icon-color: '#ff0000'
primary-text-color: '#ff0000'
secondary-text-color: '#363636'
VERT:
card-background-color: '#aaffaa'
state-icon-color: '#008800'
primary-text-color: '#008800'
secondary-text-color: '#008800'
JAUNE:
card-background-color: '#FCFCCF'
state-icon-color: '#B7B70B'
primary-text-color: '#B7B70B'
secondary-text-color: '#B7B70B'
ORANGE:
card-background-color: '#FAD7A0'
state-icon-color: '#7E5109'
primary-text-color: '#7E5109'
secondary-text-color: '#7E5109'
Enjoy!