https://github.com/maelgangloff/grdf-api
Unofficial API client of GRDF
https://github.com/maelgangloff/grdf-api
api energy-consumption gazpar grdf javascript nodejs
Last synced: 3 months ago
JSON representation
Unofficial API client of GRDF
- Host: GitHub
- URL: https://github.com/maelgangloff/grdf-api
- Owner: maelgangloff
- License: gpl-3.0
- Created: 2021-12-30T14:36:38.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-05-03T10:42:35.000Z (about 2 years ago)
- Last Synced: 2025-09-04T22:20:33.275Z (9 months ago)
- Topics: api, energy-consumption, gazpar, grdf, javascript, nodejs
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/grdf-api
- Size: 180 KB
- Stars: 8
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE-OF-CONDUCT.md
- Citation: CITATION.cff
- Security: SECURITY.md
Awesome Lists containing this project
README
# grdf-api
[](https://www.npmjs.org/package/grdf-api)

[](https://npm-stat.com/charts.html?package=grdf-api)
Support non-officiel de l'API GRDF.
Ce module permet de gérer et récupérer la consommation des compteurs communicants Gazpar en utilisant l'API du site de GRDF. Leur site internet étant en perpétuelle mutation, ce module devra être mis à jour régulièrement.
> [!TIP]
> Un wiki est disponible, celui-ci rassemble davantage d'informations sur le fonctionnement de l'API.
> **[Ce wiki est disponible ici](https://github.com/maelgangloff/grdf-api/wiki).**
## Disclaimer
> [!WARNING]
> - Il est clairement mentionné que cette librairie n'est pas officiellement éditée par GRDF.
> - Ce module n'est pas une contrefaçon car il n'existe pas de module similaire édité officiellement.
> - Les utilisateurs ne peuvent accéder qu'à leurs propres données. Ils sont soumis au même processus d'authentification que celui implémenté dans l'espace client GRDF et imposé par le serveur API.
> - Les données des utilisateurs ne sont pas davantage exposées puisqu'un utilisateur ne peut accéder qu'à ses propres données. Personne n'a le contrôle sur cette limitation qui est inhérente au fonctionnement de l'API des serveurs de GRDF.
> - Cette librairie ne se suffit pas à elle-même pour fonctionner. Il est nécessaire de l'importer dans un projet et l'utilisateur est le seul responsable de son code et des éventuelles conséquences.
> - Tout utilisateur de cette librairie a *a priori* lu et approuvé l'entièreté du fichier de licence GPLv3 disponible publiquement [LICENSE](https://github.com/maelgangloff/grdf-api/blob/master/LICENSE) ainsi que de ce présent fichier de présentation.
> - Tout utilisateur de cette librairie a *a priori* lu et compris l'entièreté du code de ce projet avant toute utilisation.
> - L'auteur de ce projet n'agit pas en tant qu'intermédiaire de traitement des données au sens du RGPD. Les utilisateurs sont responsables de leur propre conformité au RGPD lors de l'utilisation de cette librairie. Ils doivent s'assurer que leur utilisation de cette librairie est conforme aux exigences du RGPD et de toute autre législation applicable en matière de protection des données.
> - Eu égard l'ensemble de ces remarques, les contributeurs et *a fortiori* l'auteur du projet ne peuvent être tenus responsables de tout dommage potentiel.
## GRDF
**Kind**: global class
* [GRDF](#GRDF)
* [new GRDF(token)](#new_GRDF_new)
* _instance_
* [.getPCEList(details)](#GRDF+getPCEList) ⇒ Promise.<Array.<PCE>>
* [.getPCEAddress(pce)](#GRDF+getPCEAddress) ⇒ Promise.<Adresse>
* [.getPCEDetails(pce)](#GRDF+getPCEDetails) ⇒ Promise.<PCE>
* ~~[.getPCEDetailsPlus()](#GRDF+getPCEDetailsPlus) ⇒ Promise.<Array.<PCE>>~~
* [.getPCECoefficient(pce)](#GRDF+getPCECoefficient) ⇒ Promise.<PCECoefficient>
* [.getPCEMeteo(pce, dateFinPeriode, nbJours)](#GRDF+getPCEMeteo) ⇒
* [.getPCEConsoRef(pce)](#GRDF+getPCEConsoRef) ⇒ Promise.<Array.<ConsommationReference>>
* [.getPCEConsumption(type, pceList, dateDebut, dateFin)](#GRDF+getPCEConsumption) ⇒ Promise.<Consommation>
* [.getConsumptionSheet(type, pceList, frequence, dateDebut, dateFin)](#GRDF+getConsumptionSheet) ⇒ Promise.<stream>
* [.putPCE(pce, partialPCE)](#GRDF+putPCE) ⇒ Promise.<PCE>
* [.getPCESeuils(pce, frequence)](#GRDF+getPCESeuils) ⇒ Promise.<Seuils>
* [.postPCESeuils(pce, seuils)](#GRDF+postPCESeuils) ⇒ Promise.<SeuilsCreated>
* [.putPCESeuils(pce, seuils)](#GRDF+putPCESeuils) ⇒ Promise.<Seuils>
* [.getUserInfo()](#GRDF+getUserInfo) ⇒ Promise.<UserInfo>
* [.getUserDetails(id)](#GRDF+getUserDetails) ⇒ Promise.<UserInfo>
* [.putUserDetails(id, userInfoDetails)](#GRDF+putUserDetails) ⇒ Promise.<UserInfo>
* [.getConsultationHistory()](#GRDF+getConsultationHistory) ⇒ Promise.<Array.<HistoriqueConsultation>>
* [.putConsultationHistory(data)](#GRDF+putConsultationHistory)
* [.getUserAccreditation()](#GRDF+getUserAccreditation) ⇒ Promise.<Array.<Accreditation>>
* [.putUserAccreditation(pce, partialPCE)](#GRDF+putUserAccreditation) ⇒ Promise.<PCE>
* [.getInfoLogements()](#GRDF+getInfoLogements) ⇒ Promise.<Array.<InfoLogement>>
* [.getInfoLogementPCE(pce)](#GRDF+getInfoLogementPCE) ⇒ Promise.<InfoLogement>
* [.getConnaissancesClient(pce)](#GRDF+getConnaissancesClient) ⇒ Promise.<ConnaissancesClient>
* [.patchConnaissancesClient(id, data)](#GRDF+patchConnaissancesClient) ⇒ Promise.<ConnaissancesClient>
* _static_
* [.login(email, password)](#GRDF.login) ⇒ Promise.<string>
### new GRDF(token)
| Param | Type | Description |
| --- | --- | --- |
| token | string | Jeton d'accès obtenu avec la méthode `GRDF.login(email, password)` |
**Example**
```js
const { GRDF, ConsommationType } = require('grdf-api')
const pce = '01234567890123'
GRDF.login('email', 'password').then(async token => {
const user = new GRDF(token)
const consommation = await user.getPCEConsumption(ConsommationType.informatives, [pce], '2021-09-01', '2021-12-01')
console.log(consommation[pce].releves)
})
```
### grdF.getPCEList(details) ⇒ Promise.<Array.<PCE>>
Liste des PCE associés à l'utilisateur
**Kind**: instance method of [GRDF](#GRDF)
| Param | Type | Default | Description |
| --- | --- | --- | --- |
| details | boolean | true | Récupérer les détails |
### grdF.getPCEAddress(pce) ⇒ Promise.<Adresse>
Adresse d'un PCE spécifique
**Kind**: instance method of [GRDF](#GRDF)
| Param | Type | Description |
| --- | --- | --- |
| pce | string | Identifiant du PCE |
### grdF.getPCEDetails(pce) ⇒ Promise.<PCE>
Détails d'un PCE
**Kind**: instance method of [GRDF](#GRDF)
| Param | Type | Description |
| --- | --- | --- |
| pce | string | Identifiant du PCE |
### ~~grdF.getPCEDetailsPlus() ⇒ Promise.<Array.<PCE>>~~
***Deprecated***
Informations les plus détaillées sur les PCE associés à l'utilisateur
**Kind**: instance method of [GRDF](#GRDF)
### grdF.getPCECoefficient(pce) ⇒ Promise.<PCECoefficient>
**Kind**: instance method of [GRDF](#GRDF)
| Param | Type | Description |
| --- | --- | --- |
| pce | string | Identifiant du PCE |
### grdF.getPCEMeteo(pce, dateFinPeriode, nbJours) ⇒
**Kind**: instance method of [GRDF](#GRDF)
**Returns**: Objet dont les clés sont les dates et les valeurs sont les températures associées
| Param | Type | Description |
| --- | --- | --- |
| pce | string | Identifiant du PCE |
| dateFinPeriode | string | Date de fin au format YYYY-MM-DD |
| nbJours | number | Nombre de jours |
### grdF.getPCEConsoRef(pce) ⇒ Promise.<Array.<ConsommationReference>>
Consommation annuelle de référence
**Kind**: instance method of [GRDF](#GRDF)
| Param | Type | Description |
| --- | --- | --- |
| pce | string | Identifiant du PCE |
### grdF.getPCEConsumption(type, pceList, dateDebut, dateFin) ⇒ Promise.<Consommation>
Relevés de consommation
**Kind**: instance method of [GRDF](#GRDF)
| Param | Type | Description |
| --- | --- | --- |
| type | ConsommationType | informatives: les plus détaillés, publiees: destinées à la facturation |
| pceList | Array.<string> | Liste des numéros de PCE |
| dateDebut | string | Date de début au format YYYY-MM-DD |
| dateFin | string | Date de fin au format YYYY-MM-DD |
### grdF.getConsumptionSheet(type, pceList, frequence, dateDebut, dateFin) ⇒ Promise.<stream>
Stream d'une feuille de calcul déjà formatée contenant les relevés
**Kind**: instance method of [GRDF](#GRDF)
| Param | Type | Description |
| --- | --- | --- |
| type | ConsommationType | `informatives`: les plus détaillés, `publiees`: destinées à la facturation |
| pceList | Array.<string> | Liste des numéros de PCE |
| frequence | Frequency | Fréquence des relevés (`Mensuel`|`Hebdomadaire`|`Journalier`|`Horaire`) |
| dateDebut | string | Date de début au format YYYY-MM-DD |
| dateFin | string | Date de fin au format YYYY-MM-DD |
**Example**
```js
const { GRDF, ConsommationType, Frequency } = require('grdf-api');
const fs = require('fs');
const pce = '01234567890123';
GRDF.login('email', 'password').then(async token => {
const user = new GRDF(token);
const stream = fs.createWriteStream('./sheet.xlsx');
(await user.getConsumptionSheet(ConsommationType.informatives, [pce], Frequency.WEEKLY, '2022-06-01', '2022-10-10')).pipe(stream);
})
```
### grdF.putPCE(pce, partialPCE) ⇒ Promise.<PCE>
Effectuer des changements sur le PCE (changement de l'alias par exemple)
**Kind**: instance method of [GRDF](#GRDF)
| Param | Type | Description |
| --- | --- | --- |
| pce | string | Identifiant du PCE |
| partialPCE | | Informations à remplacer dans la description du PCE |
### grdF.getPCESeuils(pce, frequence) ⇒ Promise.<Seuils>
Liste des seuils programmés
**Kind**: instance method of [GRDF](#GRDF)
| Param | Type | Description |
| --- | --- | --- |
| pce | string | Identifiant du PCE |
| frequence | Frequency | Type de seuil (`Journalier`|`Mensuel`|`Annuel`) |
### grdF.postPCESeuils(pce, seuils) ⇒ Promise.<SeuilsCreated>
Remplacer les seuils
**Kind**: instance method of [GRDF](#GRDF)
| Param | Type | Description |
| --- | --- | --- |
| pce | string | Identifiant du PCE |
| seuils | Seuils | Seuils à poster |
### grdF.putPCESeuils(pce, seuils) ⇒ Promise.<Seuils>
Modifier un seuil (préciser les identifiants)
**Kind**: instance method of [GRDF](#GRDF)
| Param | Type | Description |
| --- | --- | --- |
| pce | string | Identifiant du PCE |
| seuils | Seuils | Seuils à muter |
### grdF.getUserInfo() ⇒ Promise.<UserInfo>
Informations générales sur l'utilisateur connecté
**Kind**: instance method of [GRDF](#GRDF)
### grdF.getUserDetails(id) ⇒ Promise.<UserInfo>
Détails sur un utilisateur
**Kind**: instance method of [GRDF](#GRDF)
| Param | Type | Description |
| --- | --- | --- |
| id | number | Identifiant de l'utilisateur |
### grdF.putUserDetails(id, userInfoDetails) ⇒ Promise.<UserInfo>
Mise à jour du profil de l'utilisateur
**Kind**: instance method of [GRDF](#GRDF)
| Param | Type | Description |
| --- | --- | --- |
| id | number | Identifiant de l'utilisateur |
| userInfoDetails | UserInfoDetails | Les informations de l'utilisateur à modifier |
### grdF.getConsultationHistory() ⇒ Promise.<Array.<HistoriqueConsultation>>
Historique de consultation des informations des PCE
**Kind**: instance method of [GRDF](#GRDF)
### grdF.putConsultationHistory(data)
Mise à jour de la date de dernière consultation du PCE
**Kind**: instance method of [GRDF](#GRDF)
| Param | Type |
| --- | --- |
| data | HistoriqueConsultationRequest |
### grdF.getUserAccreditation() ⇒ Promise.<Array.<Accreditation>>
Liste des accreditations demandées
**Kind**: instance method of [GRDF](#GRDF)
### grdF.putUserAccreditation(pce, partialPCE) ⇒ Promise.<PCE>
Mise à jour de l'accréditation (changement de l'alias par exemple)
**Kind**: instance method of [GRDF](#GRDF)
| Param | Type | Description |
| --- | --- | --- |
| pce | string | Identifiant du PCE |
| partialPCE | | L'objet PCE revendiqué |
### grdF.getInfoLogements() ⇒ Promise.<Array.<InfoLogement>>
Informations sur le logement
**Kind**: instance method of [GRDF](#GRDF)
### grdF.getInfoLogementPCE(pce) ⇒ Promise.<InfoLogement>
Informations sur le logement d'un PCE
**Kind**: instance method of [GRDF](#GRDF)
| Param | Type | Description |
| --- | --- | --- |
| pce | string | Identifiant PCE |
### grdF.getConnaissancesClient(pce) ⇒ Promise.<ConnaissancesClient>
Informations sur le client (type de logement, surface, mode de chauffage, etc.)
**Kind**: instance method of [GRDF](#GRDF)
| Param | Type | Description |
| --- | --- | --- |
| pce | string | Identifiant PCE |
### grdF.patchConnaissancesClient(id, data) ⇒ Promise.<ConnaissancesClient>
Mettre à jour le formulaire de connaissances client (type de logement, surface, mode de chauffage, etc.)
**Kind**: instance method of [GRDF](#GRDF)
| Param | Type | Description |
| --- | --- | --- |
| id | number | Identifiant du formulaire |
| data | ConnaissancesClient | Données partielles à mettre à jour dans le formulaire |
### GRDF.login(email, password) ⇒ Promise.<string>
Obtention d'un jeton d'accès auprès de l'API
Attention: ne JAMAIS transmettre ce jeton à un tier, il vous est strictement personnel !
**Kind**: static method of [GRDF](#GRDF)
**Returns**: Promise.<string> - Le jeton d'accès
| Param | Type | Description |
| --- | --- | --- |
| email | string | Courriel de connexion de l'utilisateur |
| password | string | Mot de passe |