[Article] Suivi des cours d'eau

Bonsoir,
il tard mais je voulais poster le résultat de mes recherches sur la température des cours d’eau.
Je suis tombé sur HubEau qui fourni plusieurs API sur les données des cours d’eau en France :

  • température
  • qualité d’eau potable

Je crois qu’il y a moyen d’avoir pas mal d’infos :slightly_smiling_face:

Dis-nous si tu trouves quelque chose.
J’ai essayé de voir ce qui était disponible sur ces API, mais je n’ai pas réussi à récupérer quoi que ce soit pour les températures.

Bonjour @BBE
Je suis novice avec HA et j’ai essayé dans un premier temps de reproduire votre script afin de vérifier que tout fonctionne bien avant de l’adapter à ma situation.
J’ai copié le YAML dans sensors.yaml, puis le code de la carte (avec bien sûr mushroom et vertical stack-ind-card dans HACS). J’ai un message d’erreur qui s’affiche et je ne sais pas comment corriger. Ai-je oublié un étape ? Merci pour votre aide
2024-03-16 16_22_40-Aperçu – Home Assistant

Tu as rechargé la conf yaml ou redémarré HA apres avoir modifié sensors.yaml?

La il te dit que ton sensor n’est pas créé…

Apres une modif de yaml, HA ne la prends en compte qu’apres redemarrage.

Il faut donc d’abord verifier la config puis redémarrer ( dans un cas comme celui ci tu peux ne faire que recharger la configuration yaml sans redémarrer)

La config est correcte (sans erreur) et après avoir redémarrer le système complet, j’ai toujours la même erreur. Ma question : peut-on déclarer plusieurs sensors dans sensors.yaml ? (c’est mon cas)
En cherchant dans outils de développement - statistiques, sensor.hauteur_touch_plaisance n’existe pas !

Oui. On peut déclarer plusieurs sensors.

Tu as bien mis le include dans ton config.yaml?

Je ne suis pas disponible ce soir. Mais poste ton config.yaml et ton sensor.yaml pour qu’on regarde…

Bonjour,
Comme indiqué par @BBE , copie ici ton code pour que l’on puisse regarder. Il n’y a pas de raison que ça ne fonctionne pas.

Bonjour,
Je vous mets ci-dessous mes deux fichiers comme demandé et les détails du journal (Erreur) :

2024-03-17 11_54_58-Paramètres – Home Assistant Error

Failed to load integration for translation: Integration ‹ sensors › not found.

configuration.yaml

# Configure a default setup of Home Assistant (frontend, api, etc)
default_config:

# Text to speech
tts:
  - platform: google_translate

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
template: !include templates.yaml
sensors: !include sensors.yaml

frontend:
  themes: !include_dir_merge_named themes
  
logger:
  logs:
    RFXtrx: debug

sensors.yaml

binary_sensor :
    - platform: tod
      name: Nuit
      after: sunset
      before: sunrise

# recuperation de la hauteur d'eau du Touch à Plaisance
sensor:
    - platform: rest
      name: Hauteur Touch Plaisance
      unique_id: hauteur_touch_plaisance
      scan_interval: 300
      resource: https://hubeau.eaufrance.fr/api/v1/hydrometrie/observations_tr?code_entite=O196431001&size=1&pretty&grandeur_hydro=H&fields=date_obs,resultat_obs,continuite_obs_hydro
      value_template: "{{ (value_json['data'][0]['resultat_obs']) | int / 1000  }}" # mm en m
      unit_of_measurement: "m"

Merci pour votre aide.

Il me semble qu’il n’y a pas de s
sensor : !include sensors.yaml

1 « J'aime »

@Christophe69480 , en supprimant le s comme indiqué, j’ai une nouvelle erreur :
Invalid config for ‹ sensor › at configuration.yaml, line 13: required key ‹ platform › not provided, please check the docs at https://www.home-assistant.io/integrations/sensor.

Ca prouve que c’est bon.
Et que le problème est l’authentification avec l’API

Moi je vois deux soucis.

Il ne faut pas de s a sensor : include… dans config.yaml

Il ne faut pas remettre sensor: dans le sensors.yaml. et du coup l’indentation est pas bonne…

Pour le s c’est a priori corrigé, vu que l’erreur a changé, mais pour l’indentation @BBE a raison car le - platform: rest doit être collé au bord de l’éditeur de texte et tout le reste à l’encan)

J’ai fait la modif, mais toujours la même erreur :
Invalid config for ‹ sensor › at configuration.yaml, line 13: required key ‹ platform › not provided

En vidant le fichier sensors.yaml pour vérifier si c’est lui qui pose pb, j’ai également l’erreur ci-dessus.
Faut-il déclarer dans mon cas une clé ‹ platform › dans le fichier configuration.yaml ?

Les erreurs sont explicites pourtant. La première (voir en bas de mon message).

Comme celle ci:

Elle indique qu’il manque un - platform a la ligne 13 de ton configuration.yaml, soit probablement après le après le sensor. Comme il y a un include, HA vient « coller » le contenu de son fichier inclu à la suite, donc l’erreur est probablement dans sensors.yaml où il doit manquer une clef platform.

Pour declarer un sensor on doit dire:

sensor: 
  - platform: rest
    name: Hauteur Touch Plaisance
    etc...

Donc si ton include est bien fait, ton sensors.yaml doit démarrer par « tiret espace platform deux_points » puisque tu fais un raccourci vers un autre fichier

Ton code devrait donc ressembler à ça:

Deux solutions:

Avec Include:
Attention, j’ai changé le nom du fichier pour mettre en evidence que ce n’est qu’un lien… renommes le sensors.yaml si c’est le nom que tu choisis…

Le !include est un raccourci qui permet à HA de sauter au contenu d’un autre fichier. Il considère alors tout cet autre fichier comme un bloc (pas besoin de refaire les deux espaces d’indentation)

Donc l’include dans configuration.yaml: (collé au bord)

# Inclusions. Do not remove
sensor: !include nom_de_fichier.yaml

et dans nom_de_fichier.yaml: (avec le tiret de platform collé au bord suivi d’un espace et le reste a deux espace du bord)

# recuperation de la hauteur d'eau du Touch à Plaisance du Touch
- platform: rest
  name: Hauteur Touch Plaisance
  unique_id: hauteur_touch_plaisance
  scan_interval: 300
  resource: https://hubeau.eaufrance.fr/api/v1/hydrometrie/observations_tr?code_entite=O196431001&size=1&pretty&grandeur_hydro=H&fields=date_obs,resultat_obs,continuite_obs_hydro
  value_template: "{{ (value_json['data'][0]['resultat_obs']) | int / 1000  }}" # mm en m
  unit_of_measurement: "m"
  state_class: measurement

Pas d’espace avant le tiret - deux espaces pour tout le reste du bloc « platform »

Sans Include :
Tout ça est équivalent à faire toute ta déclaration dans le configuration.yaml avec la bonne indentation (qui permet de bien isoler le bloc):

# recuperation de la hauteur d'eau du Touch à Plaisance du Touch

sensor: 
  - platform: rest
    name: Hauteur Touch Plaisance
    unique_id: hauteur_touch_plaisance
    scan_interval: 300
    resource: https://hubeau.eaufrance.fr/api/v1/hydrometrie/observations_tr?code_entite=O196431001&size=1&pretty&grandeur_hydro=H&fields=date_obs,resultat_obs,continuite_obs_hydro
    value_template: "{{ (value_json['data'][0]['resultat_obs']) | int / 1000  }}" # mm en m
    unit_of_measurement: "m"
    state_class: measurement

Deux espaces pour tout le bloc suivant sensor. Donc 2 espaces avant le tiret, puis 4 espaces pour toute la suite du bloc « platform »

Et si tu regardes bien, dans les deux cas, lorsque HA va lire le fichier ligne par ligne:

  • il verra bien d’abord sensor: qui lui indique que tu vas déclarer des sensors
  • puis (soit dans un autre fichier, indiqué par !include nomdefichier.yaml, soit dans le même fichier avec une indentation -les deux espaces-) il va tomber sur la clef -platform: qui indique le type de platforme de capteur et donc commence à déclarer un unique capteur
  • puis l’ensemble des paramètres de ce capteur (avec la bonne indentation pour indiquer qu’ils suivent la clef platform)
  • puis éventuellement une ou plusieurs autre - platform: pour créer d’autres sensor, etc…

Dans le YAML, les indentation (espaces en début de ligne) marchent par bloc de deux espaces. Elles sont aussi importantes que des parenthèses. c’est elles qui indiquent l’appartenance au même bloc. (ici le bloc suivant sensor:, ou le bloc suivant - platform:)
Si l’indentation n’est pas bien faite, HA ne sais pas lire (ou lira de travers) ton YAML.

Si je reprend ton exemple posté plus haut il y a plusieurs problèmes qui empêchent HA de comprendre ce que tu déclares:

1 « J'aime »

Merci @BBE pour toutes ces explications très claires. Je n’ai pas le temps de tester tout cela ce soir, mais je te tiens informé dès que je le ferai.

@BBE, merci pour tes précieux conseils. J’ai fait comme tu m’as expliqué et tout est OK maintenant :slight_smile:

1 « J'aime »

Salut à vous tous,
Je suis un petit nouveau de Belgique.
J’ai trouvé ce tuto très intéressant et inspirant, merci à son créateur !
Je l’ai mis en pratique sur mon HA.
J’ai essayé le site de l’hygrométrie en Belgique :
https://hydrometrie.wallonie.be/home/observations/hauteur.html?station=DGH%2F8017
Malheureusement il ne semble pas proposer d’accès API tel que le fait le site Français :Accueil | Hubeau
Avez vous connaissance d’un site équivalant à celui-ci pour la Belgique ?

Bonjour Pascal,
Pas d’API peut être, mais les informations de débit et de hauteur sont bien disponibles pour chaque station.
Tu dois donc pouvoir t’inspirer de la partir du Tuto que j’ai mise en place pour récupérer la température, en allant chercher la valeur par le scrape du site web.
Tu dois ainsi pouvoir récupére hauteur et débit je pense. Ci-dessous les détails de débits pour les différentes stations disponible sur le site:

1 « J'aime »

@pascal_charlier ,
Tu as par exemple sur la page de garde du site web la dernière version du débit (voir ci-dessous).

Le selector de ce débit à utiliser dans le scrape sembl être : div > div:nth-child(2) > div.ts-overview > div:nth-child(1) > div > div.value

1 « J'aime »