Skip to content
Snippets Groups Projects

This konnector fetches consumption measures from Enedis SGE SOAP API.

You should also check Cozy's official documentations for konnectors : https://docs.cozy.io/en/tutorials/konnector/getting-started/

Enedis SGE Konnector

!!! warning "This konnector is in a POC state"

Enedis context

The API used by this konnector are the one used by all energy providers (edf, total...), this one is supposed to have a high availability. Contrary to enedis oauth konnector, this is a regular auth konnector.

Technical overview

Lib used

  • xml2js: Lib allowing easy parsing to json
  • easy-soap-request: Lib making soap request

WSO2

For now enedis API are proxied by WSO1 api manager. You can find documentation and devportal here.

Scaffolding

  • Aggregate.js: file holding method responsible for month and year aggregation
  • parsing.js: contain all methods for xml to json parsing and data formatting
  • request.js: hold SGE query methods
  • types.js: file containing type definition to allow js type check.
  • index.js: main file where default konnector methods are launch (start, ...)

ts-check

In order to have better comfort while coding, we have enable ts-checking with vs-code. The verification is based on js-doc, please take time to maintain the js-doc.

!!! note "ts-check" The ts-check is none blocking. It will only put information in vs-code ide.

Konnector Methods

Method Description
start Main method of konnector. Handle global flow and init method with provided params
getDataStartDate Retrieve user contract startDate in order to request an accurate time range of data
getData Get daily data
getMaxPowerData Get daily Max Power data
getHalfHourData Get half-hour data
processData Given a doctype, parse and format data before storing and aggregating
processStartDate Save startDate and process queries time range
storeData Save data to user's cozy
agregateMonthAndYearData Sum daily data for months and years

Dataflow

Overview

Lien du schema

Authentication

TODO: Write this part when full implementation will be done.

Information required:

  • Name
  • Surname
  • PointID (PDL)
  • Full address

Fetch Data

In order to get data from the SGE API we have to request the following route :

  1. Get user contract startDate

Method : POST

Data Route : enedis_SGE_ConsultationDonneesTechniquesContractuelles/1.0

<soapenv:Body>
    <v2:consulterDonneesTechniquesContractuelles>
        <pointId>${pointId}</pointId>
        <loginUtilisateur>${userLogin}</loginUtilisateur>
        <autorisationClient>true</autorisationClient>
    </v2:consulterDonneesTechniquesContractuelles>
</soapenv:Body>
  1. Get daily data
  2. Get Max Power data
  3. Get Half-hour data

The same endpoint is used to get the data. The soap body is the following:

Method : POST

Data Route : enedis_SGE_ConsultationDonneesTechniquesContractuelles/1.0

<soapenv:Body>
    <v2:consulterMesuresDetaillees>
        <demande>
            <initiateurLogin>${userLogin}</initiateurLogin>
            <pointId>${pointId}</pointId>
            <mesuresTypeCode>${mesureType}</mesuresTypeCode>
            <grandeurPhysique>${unit}</grandeurPhysique>
            <soutirage>true</soutirage>
            <injection>false</injection>
            <dateDebut>${startDt}</dateDebut>
            <dateFin>${endDt}</dateFin>
            <mesuresCorrigees>false</mesuresCorrigees>
            <accordClient>true</accordClient>
        </demande>
    </v2:consulterMesuresDetaillees>
</soapenv:Body>