REST et historique

Hello tous,

Quand on questionne directement l’api pour récupérer l’info avec un genre de

rest:
  - scan_interval: 3600
    resource: https://www.data.economie.gouv.fr/api/records/1.0/search/?dataset=prix-carburants-fichier-instantane-test-ods-copie&q=84110001&refine.prix_nom=Gazole
    method: GET

On peut mettre l’info dans un tableau mais visiblement, la valeur n’est pas stockée.
On ne peut pas faire de graphique pour voir les variations de prix par exemple.

Vous savez comment on doit faire si on veut stocker l’info ? Il y a une manip ou une balise a activer au moment de la récupératon ?

Merci

Salut @Sigalou,

Je vais te donner un exemple qui me permet de récupérer la dernière version de Plex pour linux :

Dans un fichier rest.yaml je définie la requête et je fixe l’attribut qui m’intéresse :

- resource: https://plex.tv/api/downloads/5.json
  scan_interval: 600
  sensor:
    - name: "Plex Query"
      json_attributes_path: "$.computer"
      value_template: "ok"
      json_attributes:
        - "Linux"

Et ensuite j’ai un sensor « template » dans template.yaml :

  - name: "Plex Current Version"
    unique_id: plex_current_version
    state: >
      {% set vers = state_attr('sensor.plex_query', 'Linux')['version'] %}
      {% if vers is defined %}
      {{ vers.split('-')[0] }}
      {% else %}
      unknown
      {% endif %}      
    icon: mdi:plex

image

Suffit ensuite de mettre ce sensor dans le recorder :

image

De mémoire j’ai fait comme ça car on est limité à 255 caractères sur la réponse pour en faire un sensor directement.

Bref vu le retour envoyer par ton url, et ne sachant pas si tu comptes en extraire beaucoup de sensors ça pourrait vite devenir fastidieux.

Au pire il y’a du choix avec le "rest"dans la doc, et peut-être que qqn saura te proposer qqc de plus efficace :wink:

Juste pour information, il existe le multiscrape qui est plus puissant (notamment ça peut créé plusieurs sensors et/ou des attributs avec un seul fetch de l’url) mais aussi faire ta partie templating dedans.

1 « J'aime »

ça se discute…
Au début, j’utilisais le multiscrape, mais régulièrement je devais modifier les sensors car il y avait des modifs dans les sources.
Avec le rest, il n’y a qu’un sensor, mais avec autant d’attributs qu’on veut. Et les api changent rarement.
Edit: après vérification, il est possible d’avoir plusieurs sensors, donc aussi puissant que multiscrape :wink:

Je pense qu’il te faut un sensor avec un identifiant unique.
Et ensuite, en l’incluant dans le recorder, tu devrais avoir l’historique.

rest:
  - scan_interval: 3600
    resource: https://www.data.economie.gouv.fr/api/records/1.0/search/?dataset=prix-carburants-fichier-instantane-test-ods-copie&q=84110001&refine.prix_nom=Gazole
    method: GET
    sensor:
    - name: "gazole_mastation"
      unique_id: "gazole_mastation"
      json_attributes_path: "$.records[0].fields"
      value_template: "ok"
      json_attributes:
        - "prix_valeur"
   
2 « J'aime »

Oups, là c’est nouveau pour moi.
Je regarde ce qu’est le recorder

Du coup, si j’ai bien compris, je dois ajouter dans configuration.yaml un truc du genre

recorder:
  include:
   ...

mais j’ai peur de perdre les autres enregistrements en cours :
« Configure which integrations should be included in recordings. If set, all other entities will not be recorded. »

Vous avez quoi comme balises sous recorder ?

On n’a pas moyen de dire dans la définition du rest: qu’on veut activer l’enregistrement des données ?

rest:
  - scan_interval: 3600
    resource: https://www.data.economie.gouv.fr/api/records/1.0/search/?dataset=prix-carburants-fichier-instantane-test-ods-copie&q=84110001&refine.prix_nom=Gazole
    method: GET

oui.

Ta un sujet qui en parle Purge de la base de donnees HA
C’est important de bien filtrer ta base de donnée suivant t’es besoin, pour pas faire gonfler ta DB ( le fichier home-assistant_v2.db ).

J’ai même ajouté l’intégration :
image

Très bien cette discussion, très claire.

Merci