Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Zehir/eesmart-d2l

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Node-Red eeSmart D2L

GitHub GitHub Workflow Status GitHub release (latest by date including pre-releases) npm dependencies GitHub issues Liberapay giving Discord

N.B: Because this tool is targeted for french people, the documentation is in french. The Linky are only installed in France.

Noeud pour traduire les données envoyées par le D2L d'eeSmart Linky.

Convertit les données brutes en données lisibles.

Prérequis

  • Un compteur Linky.
  • Un boitier eeSmart D2L.
  • Les clés de communication applicative et IV de votre D2L.

Récupération des clés

Pour récupérer vos clés pour le serveur local il faut envoyer un mail à [email protected] avec ces informations :

  • L'identifiant unique de votre D2L (Un nombre écrit en dessous du QR Code)
  • Votre preuve d'achat (optionnel ?)

Modèle de mail

Utilisation

Fonctionnement de base

const D2L = require('eesmart-d2l')
const keys = {
    "011601000001": {
        key: "12341234123412341234123412341234",
        iv: "fc91837fa2bdba1f9fe985452fdb925e"
    }
}

let d2l = new D2L();
// Données envoyés par le D2L.
let dataBuffer = Buffer.from("03003000413679B30200000001000000689FC5F6E110E64D14FAF81EEE156C55B4F26EB04C1DD59D91306745D0E00CC4", 'hex')

// Décoder uniquement les valeurs non cryptés
d2l.parseRequest(dataBuffer, true)

if (keys[d2l.headers.idD2L] !== undefined) {
    d2l.setKeys(keys[d2l.headers.idD2L].key, keys[d2l.headers.idD2L].iv)
} else {
    console.log("Clés non trouvés")
    return;
}

// On décode tout
d2l.parseRequest(dataBuffer)

switch (d2l.getPayloadType()) {
    case 'PUSH_JSON':
        let format = "default" // Peut être default ou raw_array.
        console.log(d2l.getPayload(format)) // Données utiles.

        // Dans tous les cas il faut renvoyer l'horloge alors on ne 'break' pas.
    case 'GET_HORLOGE':
        // Données à renvoyer au D2L, cela contient l'heure actuelle.
        // Attention il faut renvoyer les données dans la même connexion qui vous as permis de recevoir les données envoyées par le D2L.
        console.log(d2l.getResponse().toString('base64'))
        break;

    case 'UPDATE_REQUEST':
        d2l.getFrimwareUpdatePromise().then(value => {
            // Données à renvoyer au D2L pour la mise à jour logicielle.
            console.log(Buffer.from(value.toString(), 'base64'))
        })
        break;
}

Références

Projets liés

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published