Interprétation JSON

Bonjour à tous,

Voilà, j’essaie d’intégrer quelques senseurs pour tracker les prix de l’essence autour de chez moi, mais il semblerait que le JSON retourné soit plus difficile à parser que prévu.

J’ai bien vu qu’il existait des plugins pour faire ça, mais utilisant HA en container je suis plutôt parti sur une config REST directement dans le yaml de configuration.

Voici ma déclaration YAML :

rest:
  - resource: "https://data.economie.gouv.fr/api/explore/v2.1/catalog/datasets/prix-des-carburants-en-france-flux-instantane-v2/records?where=within_distance(geom,geom'POINT(4.72 49.74)',5km)&limit=20"
    headers:
      Content-Type: application/json
    scan_interval: 120
    sensor:
      - name: "Essence Carrefour Charleville-Mézières"
        unique_id: essence_carrefour_charleville
        json_attributes_path: "$['results'][?(@.id==8000008)]"
        json_attributes:
          - id
          - geom
          - e10_prix
          - sp95_prix
          - sp98_prix
        value_template: "Carrefour Charleville-Mézières"

L’idée étant après, de populer plusieurs sensors depuis un unique appel rest.

Quand je recharge HA, je vois bien qu’il reçoit la bonne réponse :

2024-06-29 13:23:52.087 DEBUG (MainThread) [homeassistant.components.rest.data] Updating from https://data.economie.gouv.fr/api/explore/v2.1/catalog/datasets/prix-des-carburants-en-france-flux-instantane-v2/records?where=within_distance(geom,geom'POINT(4.72 49.74)',5km)&limit=20
2024-06-29 13:23:52.096 DEBUG (MainThread) [homeassistant.components.rest] Finished fetching rest data data in 0.385 seconds (success: True)
2024-06-29 13:23:52.096 DEBUG (MainThread) [homeassistant.components.rest.data] Data fetched from resource: {"total_count": 3, "results": [{"id": 8000008, "latitude": "4974600", "longitude": "472700", "cp": "08000", "pop": "R", "adresse": "197 Avenue Carnot", "ville": "Charleville-M\u00e9zi\u00e8res", "horaires": "{\"@automate-24-24\": \"1\", \"jour\": [{\"@id\": \"1\", \"@nom\": \"Lundi\", \"@ferme\": \"\", \"horaire\": {\"@ouverture\": \"09.00\", \"@fermeture\": \"19.00\"}}, {\"@id\": \"2\", \"@nom\": \"Mardi\", \"@ferme\": \"\", \"horaire\": {\"@ouverture\": \"09.00\", \"@fermeture\": \"19.00\"}}, {\"@id\": \"3\", \"@nom\": \"Mercredi\", \"@ferme\": \"\", \"horaire\": {\"@ouverture\": \"09.00\", \"@fermeture\": \"19.00\"}}, {\"@id\": \"4\", \"@nom\": \"Jeudi\", \"@ferme\": \"\", \"horaire\": {\"@ouverture\": \"09.00\", \"@fermeture\": \"19.00\"}}, {\"@id\": \"5\", \"@nom\": \"Vendredi\", \"@ferme\": \"\", \"horaire\": {\"@ouverture\": \"09.00\", \"@fermeture\": \"19.00\"}}, {\"@id\": \"6\", \"@nom\": \"Samedi\", \"@ferme\": \"\", \"horaire\": {\"@ouverture\": \"09.00\", \"@fermeture\": \"19.00\"}}, {\"@id\": \"7\", \"@nom\": \"Dimanche\", \"@ferme\": \"1\"}]}", "services": "{\"service\": [\"Station de gonflage\", \"Piste poids lourds\", \"Vente de gaz domestique (Butane, Propane)\", \"Automate CB 24/24\", \"DAB (Distributeur automatique de billets)\"]}", "prix": "[{\"@nom\": \"Gazole\", \"@id\": \"1\", \"@maj\": \"2024-06-28 08:04:41\", \"@valeur\": \"1.763\"}, {\"@nom\": \"E85\", \"@id\": \"3\", \"@maj\": \"2024-06-27 08:02:15\", \"@valeur\": \"0.798\"}, {\"@nom\": \"E10\", \"@id\": \"5\", \"@maj\": \"2024-06-27 08:02:16\", \"@valeur\": \"1.833\"}, {\"@nom\": \"SP98\", \"@id\": \"6\", \"@maj\": \"2024-06-27 08:02:16\", \"@valeur\": \"1.935\"}]", "rupture": "[{\"@nom\": \"GPLc\", \"@id\": \"4\", \"@debut\": \"2017-10-04 05:37:24\", \"@fin\": \"\", \"@type\": \"temporaire\"}, {\"@nom\": \"SP95\", \"@id\": \"2\", \"@debut\": \"2022-12-08 08:46:34\", \"@fin\": \"\", \"@type\": \"temporaire\"}]", "geom": {"lon": 4.727, "lat": 49.746}, "gazole_maj": "2024-06-28T08:04:41+00:00", "gazole_prix": 1.763, "sp95_maj": null, "sp95_prix": null, "e85_maj": "2024-06-27T08:02:15+00:00", "e85_prix": 0.798, "gplc_maj": null, "gplc_prix": null, "e10_maj": "2024-06-27T08:02:16+00:00", "e10_prix": 1.833, "sp98_maj": "2024-06-27T08:02:16+00:00", "sp98_prix": 1.935, "e10_rupture_debut": null, "e10_rupture_type": null, "sp98_rupture_debut": null, "sp98_rupture_type": null, "sp95_rupture_debut": "2022-12-08T08:46:34+00:00", "sp95_rupture_type": "temporaire", "e85_rupture_debut": null, "e85_rupture_type": null, "gplc_rupture_debut": "2017-10-04T05:37:24+00:00", "gplc_rupture_type": "temporaire", "gazole_rupture_debut": null, "gazole_rupture_type": null, "carburants_disponibles": ["Gazole", "E85", "E10", "SP98"], "carburants_indisponibles": ["SP95", "GPLc"], "carburants_rupture_temporaire": "SP95;GPLc", "carburants_rupture_definitive": null, "horaires_automate_24_24": "Oui", "services_service": ["Station de gonflage", "Piste poids lourds", "Vente de gaz domestique (Butane, Propane)", "Automate CB 24/24", "DAB (Distributeur automatique de billets)"], "departement": "Ardennes", "code_departement": "08", "region": "Grand Est", "code_region": "44", "horaires_jour": "Automate-24-24, Lundi09.00-19.00, Mardi09.00-19.00, Mercredi09.00-19.00, Jeudi09.00-19.00, Vendredi09.00-19.00, Samedi09.00-19.00, Dimanche"}, {"id": 8000001, "latitude": "4973900", "longitude": "470700", "cp": "08000", "pop": "R", "adresse": "1 rue Paulin Richier", "ville": "Charleville-M\u00e9zi\u00e8res", "horaires": null, "services": "{\"service\": [\"Station de gonflage\", \"Carburant additiv\u00e9\", \"Piste poids lourds\", \"Vente de gaz domestique (Butane, Propane)\", \"DAB (Distributeur automatique de billets)\"]}", "prix": "{\"@nom\": \"E85\", \"@id\": \"3\", \"@maj\": \"2024-06-28 07:43:04\", \"@valeur\": \"0.883\"}", "rupture": "[{\"@nom\": \"GPLc\", \"@id\": \"4\", \"@debut\": \"2017-08-30 08:34:14\", \"@fin\": \"\", \"@type\": \"definitive\"}, {\"@nom\": \"Gazole\", \"@id\": \"1\", \"@debut\": \"2024-04-25 18:49:02\", \"@fin\": \"\", \"@type\": \"temporaire\"}, {\"@nom\": \"SP95\", \"@id\": \"2\", \"@debut\": \"2021-10-15 07:54:14\", \"@fin\": \"\", \"@type\": \"definitive\"}, {\"@nom\": \"SP98\", \"@id\": \"6\", \"@debut\": \"2024-06-29 08:48:29\", \"@fin\": \"\", \"@type\": \"temporaire\"}, {\"@nom\": \"E10\", \"@id\": \"5\", \"@debut\": \"2024-06-22 08:45:26\", \"@fin\": \"\", \"@type\": \"temporaire\"}]", "geom": {"lon": 4.707, "lat": 49.739}, "gazole_maj": null, "gazole_prix": null, "sp95_maj": null, "sp95_prix": null, "e85_maj": "2024-06-28T07:43:04+00:00", "e85_prix": 0.883, "gplc_maj": null, "gplc_prix": null, "e10_maj": null, "e10_prix": null, "sp98_maj": null, "sp98_prix": null, "e10_rupture_debut": "2024-06-22T08:45:26+00:00", "e10_rupture_type": "temporaire", "sp98_rupture_debut": "2024-06-29T08:48:29+00:00", "sp98_rupture_type": "temporaire", "sp95_rupture_debut": "2021-10-15T07:54:14+00:00", "sp95_rupture_type": "definitive", "e85_rupture_debut": null, "e85_rupture_type": null, "gplc_rupture_debut": "2017-08-30T08:34:14+00:00", "gplc_rupture_type": "definitive", "gazole_rupture_debut": "2024-04-25T18:49:02+00:00", "gazole_rupture_type": "temporaire", "carburants_disponibles": ["E85"], "carburants_indisponibles": ["Gazole", "SP95", "GPLc", "E10", "SP98"], "carburants_rupture_temporaire": "Gazole;E10;SP98", "carburants_rupture_definitive": "SP95;GPLc", "horaires_automate_24_24": "Non", "services_service": ["Station de gonflage", "Carburant additiv\u00e9", "Piste poids lourds", "Vente de gaz domestique (Butane, Propane)", "DAB (Distributeur automatique de billets)"], "departement": "Ardennes", "code_departement": "08", "region": "Grand Est", "code_region": "44", "horaires_jour": null}, {"id": 8000010, "latitude": "4974116", "longitude": "472585", "cp": "08000", "pop": "R", "adresse": "RTE DE LAFRANCHEVILLE", "ville": "Charleville-M\u00e9zi\u00e8res", "horaires": "{\"@automate-24-24\": \"\", \"jour\": [{\"@id\": \"1\", \"@nom\": \"Lundi\", \"@ferme\": \"\"}, {\"@id\": \"2\", \"@nom\": \"Mardi\", \"@ferme\": \"\"}, {\"@id\": \"3\", \"@nom\": \"Mercredi\", \"@ferme\": \"\"}, {\"@id\": \"4\", \"@nom\": \"Jeudi\", \"@ferme\": \"\"}, {\"@id\": \"5\", \"@nom\": \"Vendredi\", \"@ferme\": \"\"}, {\"@id\": \"6\", \"@nom\": \"Samedi\", \"@ferme\": \"\"}, {\"@id\": \"7\", \"@nom\": \"Dimanche\", \"@ferme\": \"\"}]}", "services": "{\"service\": [\"Toilettes publiques\", \"Relais colis\", \"Boutique alimentaire\", \"Station de gonflage\", \"Lavage automatique\", \"Vente de gaz domestique (Butane, Propane)\", \"DAB (Distributeur automatique de billets)\"]}", "prix": "[{\"@nom\": \"Gazole\", \"@id\": \"1\", \"@maj\": \"2024-06-29 00:01:00\", \"@valeur\": \"1.851\"}, {\"@nom\": \"E85\", \"@id\": \"3\", \"@maj\": \"2024-06-29 00:01:00\", \"@valeur\": \"0.849\"}, {\"@nom\": \"GPLc\", \"@id\": \"4\", \"@maj\": \"2024-06-29 00:01:00\", \"@valeur\": \"0.994\"}, {\"@nom\": \"E10\", \"@id\": \"5\", \"@maj\": \"2024-06-29 00:01:00\", \"@valeur\": \"1.925\"}, {\"@nom\": \"SP98\", \"@id\": \"6\", \"@maj\": \"2024-06-29 00:01:00\", \"@valeur\": \"1.990\"}]", "rupture": "{\"@nom\": \"SP95\", \"@id\": \"2\", \"@debut\": \"2022-10-30 07:43:06\", \"@fin\": \"\", \"@type\": \"definitive\"}", "geom": {"lon": 4.72585, "lat": 49.74116}, "gazole_maj": "2024-06-29T00:01:00+00:00", "gazole_prix": 1.851, "sp95_maj": null, "sp95_prix": null, "e85_maj": "2024-06-29T00:01:00+00:00", "e85_prix": 0.849, "gplc_maj": "2024-06-29T00:01:00+00:00", "gplc_prix": 0.994, "e10_maj": "2024-06-29T00:01:00+00:00", "e10_prix": 1.925, "sp98_maj": "2024-06-29T00:01:00+00:00", "sp98_prix": 1.99, "e10_rupture_debut": null, "e10_rupture_type": null, "sp98_rupture_debut": null, "sp98_rupture_type": null, "sp95_rupture_debut": "2022-10-30T07:43:06+00:00", "sp95_rupture_type": "definitive", "e85_rupture_debut": null, "e85_rupture_type": null, "gplc_rupture_debut": null, "gplc_rupture_type": null, "gazole_rupture_debut": null, "gazole_rupture_type": null, "carburants_disponibles": ["Gazole", "E85", "GPLc", "E10", "SP98"], "carburants_indisponibles": ["SP95"], "carburants_rupture_temporaire": null, "carburants_rupture_definitive": "SP95", "horaires_automate_24_24": "Non", "services_service": ["Toilettes publiques", "Relais colis", "Boutique alimentaire", "Station de gonflage", "Lavage automatique", "Vente de gaz domestique (Butane, Propane)", "DAB (Distributeur automatique de billets)"], "departement": "Ardennes", "code_departement": "08", "region": "Grand Est", "code_region": "44", "horaires_jour": null}]}

Mais après il me sort une erreur :

2024-06-29 13:23:52.096 WARNING (MainThread) [homeassistant.components.rest.util] JSON result was not a dictionary or list with 0th element a dictionary

J’ai essayé plein de trucs différents mais à ce point, je n’ai plus trop d’idées … si une âme charitable voit la solution … je suis preneur :slight_smile:

Merci !

Salut,

J’avais le même souci à l’époque (1 appel, pour plusieurs capteurs) … ça s’est fini avec le multiscrap

Ou le successeur de max5962

Aohzan/hass-prixcarburant: Récupération des prix des stations en France (github.com)

Merci, j’ai fini par installer manuellement l’extension mentionnée ; beaucoup moins prise de tête :slight_smile: