Récupérer un json avec une date variable

Mon problème

Bonjour, je découvre home assistant et yaml.
Je voudrais récupérer un json dont un des noeuds est la date du jour comme ceci :

{"request_state":200, "request_key":"key", "message":"OK", "2023-10-31 10:00:00":{"temperature":{"2m":287.1,"sol":286.8,"500hPa":-0.1,"850hPa":-0.1}}}

j’ai tenté de nombreuses solutions dont celles ci :

value_template: "{{ value_json['2023-10-31 10:00:00']['temperature']['2m']}}"

cela fonctionne, mais j’aimerai récupérer la date du jour à la place de la date en « dur »… J’ai beaucoup lu, j’ai essayé de nombreuses solutions mais mes compétences sont trop limités pour résoudre cela.

merci de me guider afin d’intégrer cette api (infoclimat) dans home assistant.

Ma configuration


[center]## System Information

version core-2023.10.3
installation_type Home Assistant Container
dev false
hassio false
docker true
user root
virtualenv false
python_version 3.11.5
os_name Linux
os_version 5.10.103-v7+
arch armv7l
timezone Europe/Paris
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 5000
Installed Version 1.33.0
Stage running
Available Repositories 1328
Downloaded Repositories 1
HACS Data ok
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Dashboards
dashboards 1
resources 0
views 5
mode storage
Recorder
oldest_recorder_run 21 octobre 2023 à 08:26
current_recorder_run 31 octobre 2023 à 22:42
estimated_db_size 53.21 MiB
database_engine sqlite
database_version 3.41.2
[/center] ___

Salut et bienvenue!

Arf, pas cool comme schéma… :face_with_peeking_eye:
Il n’y a pas d’autres méthodes pour récupérer la même info dans un schéma différent ?

Je crois que @percherie a joué avec l’api de infoclimat…

Alors @percherie, tu as fais une intégration pour infoclimat ??? :rofl:

Au final je suis parti sur un automate pour guider sur le traitement de l’eau d’un spa (que je finalise)

Question
Est-ce que la données est le résultat d’une requête de type rest ou est-ce de la donnée est déjà collecté dans la BdD de Home Assistant ?

En mode dépannage, je ferait bien une requête SQL. Reste à savoir si c’est exploitable en fonction de tes besoins à chaque requête

Exemple avec une intégration SQL pour remonter l’avant dernière valeur valide (ignore quand l’api de Filpr est surchargé et remonte unavailable)

Je remonte la valeur du champ « state » dans

SELECT s.state_id, s.state, s.last_updated_ts, s.old_state_id
FROM states s, states_meta m
WHERE s.metadata_id = m.metadata_id
  -- Nom de l'entitée à suivre
  AND m.entity_id = 'sensor.spa_flipr_ph'
  AND s.state <> 'unavailable'
ORDER BY
  last_updated_ts DESC
LIMIT 1,1

Remplace sensor.spa_flipr_ph par l’entité qui t’intéresse. Ce SQL fonctionne super bien.
Attention, HA ne créé pas de données en BdD si la valeur est identique entre deux relève.

Exemple 10°C à 10h, 11h, 12h puis 17°C à 15h sera enregistré en deux données seulement. À 10h puis à 15h. Les autres sont ignorée.

C’est le résultat d’un REST. Une solution serait de passer par python (je maitrise mieux) avec cron et mqtt que HA récupérerait je suis sur raspberry pi) … mais ca me parait bien lourd…

Salut,
Si la clé est toujours la date du jour à 10h, tu peux essayer de créer la clé de manièr dynamique et ensuite l’utiliser pour l’extraction des données.
En pratique cela donne:

value_template: >
           {% set date_key = today_at('10:00').strftime('%Y-%m-%d %H:%M:%S')%}
           {{ value_json[date_key]['temperature']['2m'] }}

Cela fonctionne bien dans les outils de développements>modèle et devrait le faire dans un sensor Rest.

Je te laisse adapter pour d’autre dates / heures.

2 « J'aime »

Merci, t’es un génie, ca fonctionne !

De rien.
Les génies ce sont les créateurs de HA et la communauté, HACF notamment.
De mon côté, je me contente de rendre, tout ce que j’ai appris et compris.

1 « J'aime »