Récupérer des données Json

Mon problème

Bonjour, je viens d’installer HA, j’ai un CESI (chauffe eau solaire) DIY avec une gestion par Arduino, lorsque j’interroge l’adresse IP du CESI il me retourne un fichier Json avec des températures et états des électrovannes par exemple.
est il possible de récupérer ce fichier dans HA ? et d’exploiter les infos.
Je débute avec HA, j’ai regardé RESTful mais c’est pas clair pour moi.
Merci pour votre aide.

Ma configuration


[center]## System Information

version core-2023.10.5
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.11.5
os_name Linux
os_version 6.1.59
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 4998
Installed Version 1.33.0
Stage running
Available Repositories 1328
Downloaded Repositories 5
HACS Data ok
Home Assistant Cloud
logged_in true
subscription_expiration 21 novembre 2023 à 01:00
relayer_connected true
relayer_region eu-central-1
remote_enabled false
remote_connected false
alexa_enabled true
google_enabled true
remote_server eu-central-1-13.ui.nabu.casa
certificate_status ready
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 11.1
update_channel stable
supervisor_version supervisor-2023.10.1
agent_version 1.6.0
docker_version 24.0.6
disk_total 30.8 GB
disk_used 4.0 GB
healthy true
supported true
board ova
supervisor_api ok
version_api ok
installed_addons Matter Server (4.10.0), Spotify Connect (0.12.6), CEC Scanner (3.0), Terminal & SSH (9.7.1), File editor (5.6.0)
Dashboards
dashboards 2
resources 1
views 2
mode storage
Recorder
oldest_recorder_run 21 octobre 2023 à 16:01
current_recorder_run 31 octobre 2023 à 13:27
estimated_db_size 26.74 MiB
database_engine sqlite
database_version 3.41.2
[/center]

Salut et bienvenue!

Peux-tu préciser le protocole utilisé ?

RESTfut utilise le HTTP, mais tu ne peux pas récupérer un fichier.

j’interroge le CESI : http://192.168.1.55:4100 et en réponse j’ai :
{
« uptime (ms) »: 1112939855,
« tempMax »: 21.00,
« tempMin »: 12.00,
« temp0 »: 11.75,
« temp1 »: 14.81,
« temp2 »: -0.06,
« temp3 »: 17.62,
« temp4 »: 0.00,
« temp5 »: 0.00,
« temp6 »: 0.00,
« temp7 »: 0.00,
« temp8 »: 0.00,
« temp9 »: 0.00,
« sortie0 »: 0,
« sortie1 »: 1,
« sortie2 »: 1,
« sortie3 »: 1,
« sortie4 »: 1,
« sortie5 »: 1,
« sortie6 »: 1,
« sortie7 »: 1,
« sortie8 »: 1,
« sortie9 »: 1,
« entree0 »: 1,
« entree1 »: 1,
« entree2 »: 1,
« entree3 »: 1,
« entree4 »: 1,
« entree5 »: 1,
« entree6 »: 1,
« entree7 »: 1,
« entree8 »: 1,
« entree9 »: 1
}

Salut @eco3xfr

Dans configuration.yaml tu peux tester ça :

rest:
  - resource: http://192.168.1.55:4100
    scan_interval: 600
    sensor:
      - name: "cesi"
        json_attributes_path: "$"
        value_template: "ok"
        json_attributes:
          - "uptime (ms)"
          - "tempMax"
          - "tempMin"
          - "temp0"
          - "temp1"
          - "temp2"
          - "temp3"
          - "temp4"
          - "temp5"
          - "temp6"
          - "temp7"
          - "temp8"
          - "temp9"
          - "sortie0"
          - "sortie1"
          - "sortie2"
          - "sortie3"
          - "sortie4"
          - "sortie5"
          - "sortie6"
          - "sortie7"
          - "sortie8"
          - "sortie9"
          - "entree0"
          - "entree1"
          - "entree2"
          - "entree3"
          - "entree4"
          - "entree5"
          - "entree6"
          - "entree7"
          - "entree8"
          - "entree9"

Si ça fonctionne tu auras un sensors sensor.cesi dont l’état sera « OK » et pour le reste tout sera en attribut de ce sensor.

Après ça va dépendre aussi de ce que tu entends par :

1 « J'aime »

Bon, je vais traduire :smiley:
Tu envoies une requête HTTP Get à ton arduino et tu recois une réponse en Json (ce n’est pas un fichier).

Tu appliques la proposition de @Herbs, tu redémarres HA et tu devrais avoir un sensor « cesi » avec plein d’attributs.
Tu peux aussi créer un sensor par ligne, tu fais comme ça t’arrange.

Merci, ça fonctionne pour obtenir le « OK » mais après pour les attributs ???
image

Outils de développement => Etats et tu filtres par « cesi »

Avec ça, tu peux avoir plusieurs sensors :

rest:
  - resource: http://192.168.1.55:4100
    scan_interval: 600
    sensor:
      - name: "tempMax"
        value_template: "{{ value_json.tempMax }}"
      - name: "tempMin"
        value_template: "{{ value_json.tempMin }}"
1 « J'aime »

je ne trouve que « OK »
image

la dernière colonne est vide ?

Alors regarde les logs, il doit y avoir des errerus.

oui effectivement, les logs ??? je sais pas encore ou ça se trouve.

je vais tester avec la deuxième option :


et continuer mes essais.

Paramètres → Système → Journaux, ensuite scroll vers le bas et appuie sur « Charger les journaux complets »

Oui j’ai demandé à Google entre temps :blush:
image

j’ai créé plusieurs sensors, ça fonctionne,
image
lorsque l’état de l’appoint électrique est « ON » j’ai la valeur 0, et 1 pour « OFF » est il possible d’afficher ON/OFF ?

si j’utilise binary_sensor c’est inversé :
image
1 = activé, il me faudrait l’inverse.

Essaie quelque chose comme ça :

rest:
  - resource: http://192.168.1.55:4100
    scan_interval: 600
    sensor:
      - name: "sortie0"
        value_template: >-
        {% if value_json.sortie0 == 0 %}
          On
        {% else %}
          Off
        {% endif %}

si j’utilise :

binary_sensor:
      - name: "vmc.sortie0"
        value_template: "{{ not value_json.sortie0 }}"

avec le NOT le 0 devient ON et le 1 devient OFF ?

Voici la version qui fonctionne :

binary_sensor:
      - name: "vmc.sortie0"
        value_template: "{{ not value_json.sortie0 |float  }}"
        device_class : "moving"