• Stars
    star
    216
  • Rank 183,179 (Top 4 %)
  • Language
    TypeScript
  • License
    GNU General Publi...
  • Created about 6 years ago
  • Updated 9 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🔌 CLI tool to retrieve Linky smart meters data

Linky

Version Build Status Codecov Downloads Node version Code style

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

Linky CLI

Attention : Cette documentation est valable uniquement pour la version 2 du module. La documentation pour la version 1 est toujours disponible sur la branche v1

Ce module vous permet de récupérer votre consommation et production électrique Linky via les API "Token V3" et "Metering Data V5" d'Enedis

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

  1. Installez Node.js sur votre machine. La version minimale supportée est Node 16.
  2. Ouvrez un terminal
  3. Installez linky avec npm:
npm i -g linky

Utilisation

Authentification

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.boris.sh pour donner votre accord et récupérer un token

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

linky auth --token <votre-token>

Récupération des données

Une fois votre token sauvegardé, 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 3 mai 2023
linky daily --start 2023-05-01 --end 2023-05-04

# Récupère la puissance moyenne consommée le 1 mai 2023, sur un intervalle de 30 min
linky loadcurve --start 2023-05-01 --end 2023-05-02

# Récupère la puissance maximale de consommation atteinte quotidiennement du 1er au 3 mai 2023
linky maxpower --start 2023-05-01 --end 2023-05-04

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 3 mai 2023
linky dailyprod --start 2023-05-01 --end 2023-05-04

# Récupère la puissance moyenne produite le 1 mai 2023, sur un intervalle de 30 min
linky loadcurveprod --start 2023-05-01 --end 2023-05-02

Dates par défaut

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

Multi-PRM et multi-token

Si votre token donne accès aux données de plusieurs PRMs, vous pouvez préciser le numéro de PRM à utiliser dans chaque commande avec le paramètre --prm

# Récupère la consommation de la veille pour le compteur 111222333
linky daily --prm 111222333

# Récupère la production de la veille pour le compteur 777888999
linky dailyprod --prm 777888999

Si vous possédez plusieurs tokens, vous pouvez passer l'étape d'authentification et préciser le token à utiliser dans chaque commande avec le paramètre --token

# Récupère la consommation de la veille avec le token aaa.bbb.ccc
linky daily --token aaa.bbb.ccc

# Récupère la production de la veille avec le token xxx.yyy.zzz
linky dailyprod --token xxx.yyy.zzz

Paramètres supplémentaires

Vous pouvez changer le format d'affichage de sortie grâce au paramètre --format

Les formats disponibles sont json, csv et pretty (par défaut)

linky daily --start 2023-05-01 --end 2023-05-02 --format json

Vous pouvez sauvegarder vos résultats dans un fichier en combinant les paramètres --output et --format

# Sauvegarde la courbe de charge de la veille au format JSON
linky loadcurve --output chemin/vers/ma_conso.json --format json

# Sauvegarde une semaine de consommation au format CSV
linky daily --start 2023-05-01 --end 2023-05-07 --output chemin/vers/ma_conso.csv --format csv

Vous pouvez masquer les messages et animations de progression grâce au paramètre --quiet afin de faciliter l'intégration dans des scripts

linky maxpower --quiet --format json | jq '.interval_reading[0].value'

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

import { Session } from 'linky';

// Créez une session à partir du token
const token = 'xxx.yyy.zzz';
let session = new Session(token);

// Si le token permet d'accéder à plusieurs PRMs, vous pouvez préciser celui à utiliser
const prm = '123456';
session = new Session(token, prm);

// Si vous prévoyez de rendre votre application/service/module accessible au grand public,
// ajoutez un User-Agent au format string à la session.
// Celui-ci doit permettre d'identifier l'origine des requêtes envoyées à Conso API.
session.userAgent = 'Mon super service';

// Récupère la consommation quotidienne du 1er au 3 mai 2023
session.getDailyConsumption('2023-05-01', '2023-05-04').then((result) => {
  console.log(result);
  /*
    {
      "reading_type": {
        "unit": "Wh",
        "measurement_kind": "energy"
      },
      "interval_reading": [
        { "value": "12873", "date": "2023-05-01" },
        { "value": "12296", "date": "2023-05-02" },
        { "value": "14679", "date": "2023-05-03" }
      ]
    ...
    */
});

// Récupère la puissance moyenne consommée le 1er mai 2023, sur un intervalle de 30 min
session.getLoadCurve('2023-05-01', '2023-05-02').then((result) => {
  console.log(result);
  /*
    {
      "reading_type": {
        "unit": "W",
        "measurement_kind": "power"
      },
      "interval_reading": [
        { "value": "752", "date": "2023-05-01 00:30:00" },
        { "value": "346", "date": "2023-05-01 01:00:00" },
        { "value": "250", "date": "2023-05-01 01:30:00" },
        ...
    */
});

// Récupère la puissance maximale de consommation atteinte quotidiennement du 1er au 3 mai 2023
session.getMaxPower('2023-05-01', '2023-05-04').then((result) => {
  console.log(result);
  /*
    {
      "reading_type": {
        "unit": "VA",
        "measurement_kind": "power"
      },
      "interval_reading": [
        { "value": "4638", "date": "2023-05-01 12:06:20" },
        { "value": "4410", "date": "2023-05-02 19:27:46" },
        { "value": "3570", "date": "2023-05-03 21:42:12" }
      ]
    ...
    */
});

// Récupère la production quotidienne du 1er au 3 mai 2023
session.getDailyProduction('2023-05-01', '2023-05-04').then((result) => {
  console.log(result);
  /*
    {
      "reading_type": {
        "unit": "Wh",
        "measurement_kind": "energy"
      },
      "interval_reading": [
        { "value": "12873", "date": "2023-05-01" },
        { "value": "12296", "date": "2023-05-02" },
        { "value": "14679", "date": "2023-05-03" }
      ]
    ...
    */
});

// Récupère la puissance moyenne produite le 1er mai 2023, sur un intervalle de 30 min
session.getProductionLoadCurve('2023-05-01', '2023-05-02').then((result) => {
  console.log(result);
  /*
    {
      "reading_type": {
        "unit": "W",
        "measurement_kind": "power"
      },
      "interval_reading": [
        { "value": "752", "date": "2023-05-01 00:30:00" },
        { "value": "346", "date": "2023-05-01 01:00:00" },
        { "value": "250", "date": "2023-05-01 01:30:00" },
        ...
    */
});

More Repositories

1

chalk-animation

🎬 Colorful animations in terminal output
JavaScript
2,124
star
2

gradient-string

🌈 Beautiful color gradients in terminal output
JavaScript
1,030
star
3

vanity-eth

💎 Browser-based ETH vanity address generator
Vue
730
star
4

lyo

📦 Node.js to browser - The easy way
JavaScript
621
star
5

rgb-light-card

💡 A Lovelace custom card for RGB lights
JavaScript
414
star
6

nopaste

📋 Client-side paste service
JavaScript
362
star
7

ha-linky

📊 Home Assistant add-on for Linky smart meters
TypeScript
187
star
8

home-assistant-extension

📌 Home Assistant browser extension
Vue
169
star
9

git-history-editor

✏️ Online commit editor, intuitive and easy to use
HTML
160
star
10

github-stats-box

📌 Update a gist to contain your GitHub stats
JavaScript
139
star
11

gradient-badge

🍭 Badge generator with color gradient support
JavaScript
70
star
12

i3-config

🐍 A backup of my i3 config
Shell
59
star
13

conso-api

⚡ API for Linky smart meters
Vue
49
star
14

wakatime-to-toggl

📩 Push your WakaTime data to Toggl
JavaScript
35
star
15

linky-cli

⛔️ DEPRECATED - A CLI tool to retrieve your Linky power consumption
JavaScript
19
star
16

stravanity

👟 Easy to beat Strava segments
Vue
17
star
17

ha-history-stats

📈 Statistics about your Home Assistant history
Python
14
star
18

prettier-config

💜 My personal Prettier config & workflow
10
star
19

brackets-gofmt

📑 An extension for Brackets IDE to format Go code.
JavaScript
2
star
20

vanity-eth-cli

Works, but has nothing awesome
Go
1
star
21

blog-comments

1
star
22

bokub

📖 My profile's README
1
star
23

lyo-service

🌄 Lyo builder as a service
JavaScript
1
star