J’essaie depuis quelques semaines de récupérer les valeurs de la filtration de ma piscine (système klereo).
Klereo propose une interface web et j’arrivais auparavant à récupérer les informations depuis mon jeedom.
Le constructeur m’a envoyé le code à inclure dans le fichier configuration.yaml de HA mais j’ai un problème avec la récupération de la variable token.
Voici le code en question :
Lorsque que je consulte les logs je vois bien que le payload fonctionne et qu’un token est récupéré mais lorsque que je vais dans outil de développement et que je veux consulter l’état de [sensor.klereotoken] il est vide.
Je ne suis pas très à l’aise avec le yaml et sur HA seulement depuis quelques mois.
Avez vous une idée du pourquoi le token ne vient pas ce stocker dans la variable ?
Merci d’avance,
Ma configuration
[center]## System Information
version
core-2024.5.5
installation_type
Home Assistant OS
dev
false
hassio
true
docker
true
user
root
virtualenv
false
python_version
3.12.2
os_name
Linux
os_version
6.6.29-haos
arch
x86_64
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.34.0
Stage
running
Available Repositories
1396
Downloaded Repositories
9
HACS Data
ok
Home Assistant Cloud
logged_in
false
can_reach_cert_server
ok
can_reach_cloud_auth
ok
can_reach_cloud
ok
Home Assistant Supervisor
host_os
Home Assistant OS 12.3
update_channel
stable
supervisor_version
supervisor-2024.05.1
agent_version
1.6.0
docker_version
25.0.5
disk_total
30.8 GB
disk_used
8.2 GB
healthy
true
supported
true
board
ova
supervisor_api
ok
version_api
ok
installed_addons
Terminal & SSH (9.14.0), Samba share (12.3.1), Studio Code Server (5.15.0), Mosquitto broker (6.4.1), tydom2mqtt (3.4.3), Let’s Encrypt (5.0.18), Z-Wave JS (0.5.0), PSA Car Controller (v3.5.1), Samba Backup (5.2.0)
Bonjour et merci pour ta réponse.
J’ai changé le code en enlevant jwt mais ce n’est pas mieux.
Dans les logs je vois bien qu’il arrive à récuperer un token pourtant
2024-06-06 09:33:15.137 DEBUG (MainThread) [homeassistant.components.rest.data] Data fetched from resource: {"status":"error","detail":"La connexion n'est plus valide"}
2024-06-06 09:33:15.140 DEBUG (MainThread) [homeassistant.components.rest.data] Data fetched from resource: {"status":"error","detail":"La connexion n'est plus valide"}
2024-06-06 09:33:15.142 DEBUG (MainThread) [homeassistant.components.rest.data] Data fetched from resource: {"status":"ok","token":"montoken","access":10,"histoAccess":8194,"cgAccepted":1,"jwt":"eyJhbGciOiAiSFMyNTYiLCJ0eXAiOiADTk0LCJ2ZXIiOiIzOTEtSCJ9.Dm-xP1J2XTMQU1M3ZTXH0ofqpKqiCqV1GDXEXFdfdb0","notify":"OLDVERSION","id":6446}
2024-06-06 09:33:15.143 ERROR (MainThread) [homeassistant.helpers.entity] Failed to set state for sensor.klereotoken, fall back to unknown
Traceback (most recent call last):
Par contre lorsque j’essaie avec le navigateur j’ai une erreur, pourtant j’ai bien formaté la requete avec mon login et le token qui est utilisé dans HA :
Mais ne semble pas suffisant pour que les autres sensor puissent récuperer les valeurs.
Problème de format ?
Le sensor après obtention du token est celui là :
Je suis allé un peu vite dans ma réponse j’ai des valeurs qui commencent à remonter tranquillement.
Je vous fait un retour dans la matinée.
Merci beaucoup !
Le script fonctionne depuis ce matin et je remonte bien les valeurs de températures et de filtration.
Merci beaucoup pour ton aide sur le sujet.
J’avoue ne pas trop comprendre pourquoi il fallait mettre token et pas jwt vu que c’était la variable que je voulais récupérer.
Du coup j’ai un script fonctionnel pour le système Klereo sur HA pour ceux qui passent sur ce forum avec ce besoin.
# Liste des capteurs REST
sensor:
# Klereo Get jwt token (50mn)
- platform: rest
name: KlereoToken
scan_interval: 3000
resource: https://connect.klereo.fr/php/GetJWT.php
method: POST
headers:
Content-Type: "application/x-www-form-urlencoded; charset=UTF-8"
payload: "login=TONLOGIN&password=SHA1ENCRYPTEDPASSWORD&version=391-H&app=Api"
value_template: "{{ value_json.token }}"
json_attributes:
- jwt
# Klereo Get pool list, extract sensor0
- platform: rest
name: KlereoSensorTemperature
scan_interval: 300
resource: https://connect.klereo.fr/php/GetIndex.php
headers:
Authorization: Bearer {{ state_attr('sensor.klereotoken', 'jwt') }}
json_attributes:
- status
value_template: "{{ value_json.response[0].probes[0].filteredValue }}"
unit_of_measurement: "°C"
votre mot de passe à la place du champ SHA1ENCRYPTEDPASSWORD
Attention le SHA1ENCRYPTEDPASSWORD correspond à votre mot de passe encrypté par algorithme SHA1.
Oui dans ce script je récupère seulement la température du bassin.
Pour les autres valeurs il faut changer la valeur de probes.
A tester les différentes valeurs pour avoir les correspondances.
Bonjour
Merci beaucoup thxmono pour ces grosses avancées !!
J’ai modifié le script pour n’avoir qu’un seul appel pour tous les capteurs et gérer quand la valeur n’est pas correctement récupéré
merci encore !
# Klereo Get pool data (one API call for all sensors)
- platform: rest
name: KlereoPoolData
scan_interval: 300
resource: https://connect.klereo.fr/php/GetIndex.php
headers:
Authorization: Bearer {{ state_attr('sensor.klereotoken', 'jwt') }}
json_attributes:
- response
value_template: "{{ value_json.status }}"
# Capteurs de température, pH, Redox et filtration basés sur les données récupérées par KlereoPoolData
- platform: template
sensors:
klereo_temperature_air:
friendly_name: "Température de l'air"
unit_of_measurement: "°C"
value_template: >-
{% if state_attr('sensor.klereopooldata', 'response') is not none %}
{{ state_attr('sensor.klereopooldata', 'response')[0].probes[0].filteredValue }}
{% else %}
-1
{% endif %}
klereo_temperature_eau:
friendly_name: "Température de l'eau"
unit_of_measurement: "°C"
value_template: >-
{% if state_attr('sensor.klereopooldata', 'response') is not none %}
{{ state_attr('sensor.klereopooldata', 'response')[0].probes[1].filteredValue }}
{% else %}
-1
{% endif %}
klereo_ph:
friendly_name: "pH de l'eau"
unit_of_measurement: "pH"
value_template: >-
{% if state_attr('sensor.klereopooldata', 'response') is not none %}
{{ state_attr('sensor.klereopooldata', 'response')[0].probes[2].filteredValue }}
{% else %}
0
{% endif %}
klereo_redox:
friendly_name: "Redox"
unit_of_measurement: "mV"
value_template: >-
{% if state_attr('sensor.klereopooldata', 'response') is not none %}
{{ state_attr('sensor.klereopooldata', 'response')[0].probes[3].filteredValue }}
{% else %}
0
{% endif %}
Merci pour les évolutions. N’ayant pas de compétences de développement je n’avais pas pris le risque de faire des modifications.
Si ca peut t’intéresser il est possible de remonter l’état de la filtration et des éclairages également (et de les modifier sans doute).
Ci-dessous le code utilisé sous Jeedom, je ne sais pas comment l’adapter sur HA.