Giter Site home page Giter Site logo

syl20-30 / linky Goto Github PK

View Code? Open in Web Editor NEW

This project forked from bokub/linky

0.0 0.0 0.0 628 KB

Linky™ power !!!

Home Page: https://conso.vercel.app

License: GNU General Public License v3.0

Shell 0.15% JavaScript 11.66% TypeScript 59.54% HTML 28.64%

linky's Introduction

Linky

Version Build Status Codecov Downloads Code style

N.B: Because this tool is targeted for french people, the documentation is...in french

Ce module vous permet de récupérer votre consommation et production électrique Linky via les nouvelles API "Authorize V1" et "Metering Data V4" d'Enedis

Attention: Ces API seront désactivées par Enedis le 30 avril 2023. Une migration vers les nouvelles API "Metering V5" et "Token V3" est prévue pour les mois à venir. En tant qu'utilisateur de ce module, attendez-vous à devoir faire une mise à jour prochainement.

Screenshot

Il peut s'utiliser de 2 façons :

  1. En ligne de commande
  2. En tant que module Node.js, depuis un autre programme

Notez qu'il vous faut un compteur Linky et un espace client Enedis pour pouvoir utiliser ce module

1. Linky en ligne de commande

Installation

Si vous avez Node.js sur votre machine :

npm i -g linky

Dans le cas contraire, vous pouvez télécharger le binaire correspondant à votre plateforme dans les assets de la dernière release.

N.B : Si vous choisissez d'utiliser un binaire, il faudra adapter les exemples de cette documentation en replaçant la commande linky par le nom du binaire.

Par exemple, au lieu de faire linky --help, il faudra faire ./linky-win.exe --help

Utilisation

Avant toute chose, il faudra vous connecter à votre espace client Enedis et leur donner l'autorisation de partager vos données avec une application extérieure.

Rendez-vous sur conso.vercel.app pour donner votre accord et récupérer un jeu de tokens.

Puis, créez une connexion à votre compte avec la commande suivante :

linky auth -a <access token> -r <refresh token> -u <usage point ID>

Attention : Les tokens générés ont une durée de vie de quelques heures. Ils seront renouvelés automatiquement par cet outil et stockés sur votre ordinateur.

Ne relancez pas linky auth avec de vieux tokens, cela rendrait votre connexion invalide et vous devrez recommencer le process depuis le début.

Une fois vos tokens sauvegardés, vous pourrez récupérer votre consommation quotidienne, votre courbe de charge (consommation par demi-heure), et votre consommation maximale par jour.

# Récupère la consommation quotidienne du 1er au 7 janvier 2022 inclus
linky daily --start 2022-01-01 --end 2022-01-08

# Récupère la puissance moyenne consommée le 31 décembre 2021, sur un intervalle de 30 min
linky loadcurve --start 2021-12-31 --end 2022-01-01

# Récupère la puissance maximale de consommation atteinte quotidiennement du 1er au 7 janvier 2022 inclus
linky maxpower --start 2022-01-01 --end 2022-01-08

Si vous produisez de l'électricité, vous pouvez également récupérer votre production quotidienne et votre courbe de charge (production par demi-heure).

# Récupère la production quotidienne du 1er au 7 janvier 2022 inclus
linky dailyprod --start 2022-01-01 --end 2022-01-08

# Récupère la puissance moyenne produite le 31 décembre 2021, sur un intervalle de 30 min
linky loadcurveprod --start 2021-12-31 --end 2022-01-01

En l'absence des paramètres --start et --end, vous récupérez la consommation / production / puissance de la veille.

# Récupère la consommation de la journée d'hier
linky daily

# Récupère la puissance moyenne consommée pendant la journée d'hier, sur un intervalle de 30 min
linky loadcurve

# Récupère la puissance maximale de consommation atteinte durant la journée d'hier
linky maxpower

# Récupère la production de la journée d'hier
linky dailyprod

# Récupère la production moyenne consommée pendant la journée d'hier, sur un intervalle de 30 min
linky loadcurveprod

Pour gérer plusieurs compteurs (PRM), précisez simplement l'usage point ID dans chaque commande avec le paramètre -u

# Enregistre les identifiants du compteur 111222333
linky auth -a Tk42pB -r 8peqHT -u 111222333

# Enregistre les identifiants du compteur 777888999
linky auth -a 9urfYR -r 5wcCPq -u 777888999

# Récupère la consommation du compteur 111222333
linky daily -u 111222333

# Récupère la production du compteur 777888999
linky dailyprod -u 777888999

Vous pouvez sauvegarder vos résultats dans un fichier JSON grâce à l'option --output

linky loadcurve --start 2021-12-31 --end 2022-01-01 --output data/ma_conso.json

Vous pouvez changer le format d'affichage de sortie grâce à l'option --format

linky daily --start 2022-01-01 --end 2022-01-08 --format json

Vous pouvez masquer les messages et animations de progression grâce à l'option --quiet

linky maxpower --quiet

Pour voir l'aide détaillée et plus d'exemples :

linky --help

2. Linky comme module Node.js

Installation

# Depuis un projet Node.js
npm i linky

Utilisation

const linky = require('linky');

// Créez une session
const session = new linky.Session({
    accessToken: 'access token',
    refreshToken: 'refresh token',
    usagePointId: 'usage point ID',
    onTokenRefresh: (accessToken, refreshToken) => {
        // Cette fonction sera appelée si les tokens sont renouvelés
        // Les tokens précédents ne seront plus valides
        // Il faudra utiliser ces nouveaux tokens à la prochaine création de session
        // Si accessToken et refreshToken sont vides, cela signifie que les tokens ne peuvent plus
        // être utilisés. Il faut alors en récupérer des nouveaux sur conso.vercel.app
    },
});

// Récupère la consommation quotidienne du 1er au 7 janvier 2022 inclus
session.getDailyConsumption('2022-01-01', '2022-01-08').then((result) => {
    console.log(result);
    /*
    {
        "unit": "Wh",
        "data": [
            { "date": "2022-01-01", "value": 12278 },
            { "date": "2022-01-02", "value": 15637 },
            ...
    */
});

// Récupère la puissance moyenne consommée le 31 décembre 2021, sur un intervalle de 30 min
session.getLoadCurve('2021-12-31', '2022-01-01').then((result) => {
    console.log(result);
    /*
    {
        "unit": "W",
        "data": [
            { "date": "2021-12-31 00:30:00", "value": 582 },
            { "date": "2021-12-31 01:00:00", "value": 448 },
            ...
    */
});

// Récupère la puissance maximale de consommation atteinte quotidiennement du 1er au 7 janvier 2022 inclus
session.getMaxPower('2022-01-01', '2022-01-08').then((result) => {
    console.log(result);
    /*
    {
        "unit": "VA",
        "data": [
            { "date": "2022-01-01 13:54:04", "value": 1941 },
            { "date": "2022-01-02 09:48:26", "value": 1648 },
            ...
    */
});

// Récupère la production quotidienne du 1er au 7 janvier 2022 inclus
session.getDailyProduction('2022-01-01', '2022-01-08').then((result) => {
    console.log(result);
    /*
  {
      "unit": "Wh",
      "data": [
          { "date": "2022-01-01", "value": 1278 },
          { "date": "2022-01-02", "value": 1567 },
          ...
  */
});

// Récupère la puissance moyenne produite le 31 décembre 2021, sur un intervalle de 30 min
session.getProductionLoadCurve('2021-12-31', '2022-01-01').then((result) => {
    console.log(result);
    /*
  {
      "unit": "W",
      "data": [
          { "date": "2021-12-31 00:30:00", "value": 82 },
          { "date": "2021-12-31 01:00:00", "value": 48 },
          ...
  */
});

linky's People

Contributors

bokub avatar maelgangloff avatar yadomi avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.