Data Connect est une API proposée par Enedis pour permettre à une application d’accéder aux données de consommation d’un utilisateur équipé d’un compteur Linky.
Son utilisation est gratuite, mais peut prendre plusieurs semaines à mettre en place. Cette page en donne un aperçu, la documentation officielle (bien plus détaillée) est disponible après inscription sur le site Enedis DataHub.
Ce dépôt est proposé par le collectif des Consometers pour échanger publiquement sur notre expérience. N’hésitez pas à ouvrir une Issue pour suggérer une modification, faire remonter un problème ou poser une question. Les utilisateurs de Data Connect peuvent également échanger sur le forum mis en place par Enedis.
Nous utilisons actuellement Data Connect pour Quoalise, un projet d’échange de données en fédération. Un historique plus complet sur nos démarches en rapport avec Data Connect est disponible sur notre Wiki.
Data Connect permet à une application de :
- Recueillir le consentement de l’utilisateur à travers l’espace client Enedis.
- Accéder aux données de consommations d’un utilisateur équipé d’un compteur Linky.
- Accéder aux informations contractuelles du consommateur, comme son identité, ses coordonnées, le type de compteur ou la puissance souscrite.
Un certain nombre de limitations peuvent être trop contraignantes pour votre application. C‘est notamment le cas si vous voulez accéder à vos propres données de consommation, qui pourraient être récupérées plus simplement dans votre espace client Enedis. D’autres moyens sont proposés par Enedis pour accéder aux données de mesure.
Ici vous pouvez vous familiariser avec l'API : découvrir l'API.
- L’utilisateur doit être équipé d’un compteur Linky, raccordé avec une puissance inférieure à 36 kVA.
- L’enregistrement d’une application nécessite un numéro de SIRET et la signature d’un contrat avec Enedis.
- L’application doit être développée en mode « bac à sable » et implémenter un parcours client conforme avant de pouvoir accéder à des données réelles.
- Il n’est pas possible de récupérer une consommation « instantanée », le pas de mesure le plus fin est de 30 min.
La première étape consiste à diriger l’utilisateur vers son espace client Enedis, selon un parcours défini, pour recueillir son consentement. Par exemple :
https://espace-client-particuliers.enedis.fr/group/espace-particuliers/consentement-linky/oauth2/authorize?client_id=ae632d42-91b8-4ce9-b0d4-8438ecd014a1&duration=P3Y&redirect_URI=https%3A%2F%2Fvotre-app.fr%2Fdataconnect%2Fredirect&response_type=code&state=abcd123
Paramètre | Description |
---|---|
client_id |
Identifiant de votre application, fourni lors son enregistrement. Ex. ae632d42-91b8-4ce9-b0d4-8438ecd014a1 . |
redirect_URI |
Adresse vers laquelle l‘utilisateur sera redirigé après avoir exprimé son consentement. Ex. https://votre-app.fr/dataconnect/redirect |
state |
Sera ajouté à l’adresse de redirection maintenir l’état entre la requête et la redirection. Ex. abcd123 . |
duration |
Durée pendant laquelle l’application souhaite accéder aux données du client, au format ISO 8601, ne peut excéder 3 ans. Ex. P3Y . |
Cette page affichera une demande de consentement.
Une fois le consentement exprimé, l’utilisateur sera redirigé vers votre application :
https://votre-app.fr/dataconnect/redirect?code=ZS5454hkfa47w7wkAwqQ9GrtUWwooL&state=abcd123&usage_point_id=22516914714270
Vous permettant d’obtenir :
Paramètre | Description |
---|---|
code |
Permet de récupérer un refresh_token et un access_token . Valable 180 s.Ex. ZS5454hkfa47w7wkAwqQ9GrtUWwooL . |
state |
Valeur passée avant la redirection pour maintenir l’état. Ex. abcd123 . |
usage_point_id |
Points de livraison (PRM ou PDL) identifiant le/les compteurs de l’utilisateur (non testé avec plusieurs identifiants). Ex. 22516914714270 . |
L’accès aux données de l’utilisateur nécessite un access_token
, valide 3 heures. Cet access_token
devra être transmis en entête de chaque requête HTTP permettant d’accéder aux données de l’utilisateur :
Authorization: Bearer 7tT7xon48xnhxSWnBX5FzuoiEUWm2hApyf1lmqeDlHyU2oqcCv84xf
La première fois il sera obtenu à partir du code
récupéré après le consentement de l’utilisateur.
curl -L -d "grant_type=authorization_code&client_id=ae632d42-91b8-4ce9-b0d4-8438ecd014a1&client_secret=d7ee309e-8ae2-429c-96d0-d7ab99800a22&code=ZS5454hkfa47w7wkAwqQ9GrtUWwooL" -X POST "https://gw.prd.api.enedis.fr/v1/oauth2/token?redirect_uri=https%3A%2F%2Fvotre-app.fr%2Fdataconnect%2Fredirect"
Paramètre | Description |
---|---|
code |
Récupéré après le consentement de l’utilisateur. Ex. ZS5454hkfa47w7wkAwqQ9GrtUWwooL . |
client_id |
Identifiant de votre application. Ex. ae632d42-91b8-4ce9-b0d4-8438ecd014a1 . |
client_secret |
Authentifie l’application, secret envoyé lors de l’enregistrement de votre application. Ex. d7ee309e-8ae2-429c-96d0-d7ab99800a22 . |
redirect_uri |
Adresse de redirection configurée pour votre application. Ex. https://votre-app.fr/dataconnect/redirect . |
{
"access_token": "7tT7xon48xnhxSWnBX5FzuoiEUWm2hApyf1lmqeDlHyU2oqcCv84xf",
"token_type": "Bearer",
"expires_in": 12600,
"refresh_token": "2r9UcExfnH9WAnl6sM4T2rxYrYOW2sKjPcx8uWnrcgXvU3",
"scope": "/v3/metering_data/daily_consumption.GET /v3/metering_data/consumption_load_curve.GET /v3/metering_data/consumption_max_power.GET",
"refresh_token_issued_at": "1579681026182",
"issued_at": "1579681026182"
}
Un access_token
expiré sera renouvelé grâce au refresh_token
:
curl -L -d "grant_type=refresh_token&client_id=ae632d42-91b8-4ce9-b0d4-8438ecd014a1&client_secret=d7ee309e-8ae2-429c-96d0-d7ab99800a22&refresh_token=2r9UcExfnH9WAnl6sM4T2rxYrYOW2sKjPcx8uWnrcgXvU3" -X POST "https://gw.prd.api.enedis.fr/v1/oauth2/token?redirect_uri=https%3A%2F%2Fvotre-app.fr%2Fdataconnect%2Fredirect"
- Puissances moyennes de consommation sur des tranches de 30 minutes
- 7 jours consécutifs au maximum
- La valeur portant le numéro 1 correspond à la puissance moyenne mesurée entre minuit et minuit trente le premier jour.
- La valeur portant le numéro le plus élevé correspond à la puissance moyenne mesurée entre 23h30 et minuit le dernier jour.
curl -H 'Accept: application/json' -H 'Authorization: Bearer 7tT7xon48xnhxSWnBX5FzuoiEUWm2hApyf1lmqeDlHyU2oqcCv84xf' 'https://gw.prd.api.enedis.fr/v3/metering_data/consumption_load_curve?start=2019-12-01&end=2019-12-05&usage_point_id=22516914714270'
Paramètre | Description |
---|---|
start |
Jour de début au format RFC 3339. Ex. 2019-12-01 . |
end |
Jour de fin au format RFC 3339. Ex. 2019-12-05 . |
usage_point_id |
Points de livraison (PRM ou PDL) identifiant le/les compteurs de l’utilisateur (non testé avec plusieurs identifiants). Ex. 22516914714270 . |
{
"usage_point": [
{
"meter_reading": {
"usage_point_id": "22516914714270",
"start": "2019-12-01",
"end": "2019-12-05",
"reading_type": {
"measurement_kind": "power",
"interval_length": "1800",
"unit": "W",
"aggregate": "average"
},
"interval_reading": [
{"rank": "49", "value": "200" },
{"rank": "50", "value": "228" },
…
{"rank": "191", "value": "6384" },
{ "rank": "192", "value": "3664" }
]
}
}
]
}
- Description des erreurs sur Enedis DataHub.
- Les problèmes que nous rencontrons sont documentés dans la section Issues.
- BeMyHomeSmart, par Gregory Elleouet, utilise l’API en production.
- Exemple Python, par Gautier Husson, utilisation de l’environnement bac à sable.
- Exemple Node-red par Jaxom des Consometers, utilisation du bac à sable v4.