Enedisgateway2mqtt

Rohhh c est pas très sécurisé :smiley:

Quand un nouveau token est généré l ancien est caduque ?

Oui il te suffit de refaire un consentement, et l’ancien token sera remplacer par le nouveau.
Après je ne t’oblige en rien de me le donner hein, c’est juste pour m’aider à debug.
Et je comprendrais parfaitement que tu ne veuille pas vu qu’il y a des données sensible sur ton compte, addresse postal & co.

Oui enfin il faut un minimum de confiance, je n’ai pas audité le code du docker :smiley::slight_smile:
Je t’envoi ça par MP, je refais un token quand tu aura pu tester :slight_smile:

Bon, je trouve pas pour t’envoyer un MP, je me demande si j’ai bien les droits, je ne vois nul par la ptite enveloppe

Je suis sur le discord si tu veut :slight_smile:

Le proxy semble le bloquer… Bon c est pas pratique :smiley:

Je viens de finir le connecteur influxdb + dashboard grafana à jours :

4 « J'aime »

Je viens de fix le soucis dans la dernière 0.5.2 / latest
Tu force l’update de l’image via un :

docker pull m4dm4rtig4n/enedisgateway2mqtt:0.5.2
docker pull m4dm4rtig4n/enedisgateway2mqtt:latest

En fait le soucis vient du fait que tu défini des « offpeak_hours » (heures pleine/creuse) avec un valeur vide " ".
Bref j’ai fix le truc.

Cela a résolu également mon erreur, merci :slight_smile:

1 « J'aime »

Bonsoir,

Premièrement merci pour ce travail de fou.
Je viens de me mettre a HA et je suis extrêmement intéressé par la suivi de ma consommation sous HA.

J’ai mon HA qui tourne sous docker et je viens de mettre en place le container pour EnedisGateway2MQTT
Je ne comprends pas toutes les variables et surtout celle-ci :
MQTT_HOST=

Dois je spécifier une valeur ?
De mon coté je n’ai modifié que ACCESS_TOKEN et PDL

Dois je en modifier plus ?
car dans les logs de mon container je me retrouve avec ça :

2021-10-23 21:41:04.898931 - CRITICAL : Environement variable ‹ MQTT_HOST › is mandatory

EnedisGateway2MQTT permet simplement de faire des requêtes API pour récupérer les valeurs, il faut après les stocké dans une container influxdb puis les interpréter dans un grafana ?

Je passe par MQTT pour transférer tt les informations a home assistant (via l’auto-discovery) donc tu est obligé d’avoir un serveur Mosquitto pour utiliser ma passerelle.

La partie influxdb est un bonus que j’ai ajouter semaine dernière, mais le but de l’outil a la base et de tt envoyé dans MQTT.

Merci pour la réponse rapide :wink:

Je vais regarder pour mettre en place un container MQTT

Je viens de tester et malheureusement, ça crash dès le départ :

2021-10-24 10:11:06.813471 - INFO  : Check database
2021-10-24 10:11:06.813564 - INFO  :  => Connect to SQLite Database
2021-10-24 10:11:06.821424 - INFO  : ####################################################################################
2021-10-24 10:11:06.821506 - INFO  : Get contract :
Traceback (most recent call last):
  File "/app/main.py", line 631, in <module>
    run()
  File "/app/main.py", line 383, in run
    contract = cont.getContract(client, cur, con)
NameError: name 'client' is not defined

J’ai exactement la même chose que je sois ou non en mode debug.

J’ai fait un script pour l’installer :

#!/bin/bash
ACCESS_TOKEN="XXX"
PDL="XXX"
MQTT_HOST="127.0.0.1"
MQTT_USERNAME="XXX"
MQTT_PASSWORD="XXX"
RETAIN="True"
HA_AUTODISCOVERY="True"
CYCLE=3600
CONSUMPTION_PRICE_BASE=0.1484
CONSUMPTION_PRICE_HC=0.1263
CONSUMPTION_PRICE_HP=0.1678
REFRESH_CONTRACT="True"
REFRESH_ADDRESSES="True"
CARD_MYENEDIS="True"
CURRENT_PLAN="HP/HC"
ADDRESSES="True"
DEBUG="True"

docker run -it --restart=unless-stopped \
    -e ACCESS_TOKEN="$ACCESS_TOKEN" \
    -e PDL="$PDL" \
    -e MQTT_HOST="$MQTT_HOST" \
    -e MQTT_USERNAME="$MQTT_USERNAME" \
    -e MQTT_PASSWORD="$MQTT_PASSWORD" \
    -e RETAIN="$RETAIN" \
    -e HA_AUTODISCOVERY="$HA_AUTODISCOVERY" \
    -e CYCLE="$CYCLE" \
    -e CONSUMPTION_PRICE_BASE="$CONSUMPTION_PRICE_BASE" \
    -e CONSUMPTION_PRICE_HC="$CONSUMPTION_PRICE_HC" \
    -e CONSUMPTION_PRICE_HP="$CONSUMPTION_PRICE_HP" \
    -e REFRESH_CONTRACT="$REFRESH_CONTRACT" \
    -e REFRESH_ADDRESSES="$REFRESH_ADDRESSES" \
    -e CARD_MYENEDIS="$CARD_MYENEDIS" \
    -e ADDRESSES=$ADDRESSES \
    -e CURRENT_PLAN="$CURRENT_PLAN" \
    -e DEBUG="$DEBUG" \
    -v /home/user/enedis2mqtt:/data \
    --name=enedis2mqtt \
m4dm4rtig4n/enedisgateway2mqtt:latest

J’ai peut-être fait une erreur mais pour le coup, si c’est le cas le message d’erreur ne me met pas tellement sur la voie :slight_smile:

Vous êtes 2 a avoir cette erreur. Je suis pas chez moi avant mardi, je regarderai mardi soir.

C’est bon pour moi, merci pour la correction :slight_smile:

Edit : A dommage, il importe bien les données, par contre :

Generate Sensor for myEnedis card
Traceback (most recent call last):
File "/app/main.py", line 631, in <module>


File "/app/main.py", line 540, in run
my_enedis_data = myenedis.myEnedis(cur, con, client, last_activation_date, offpeak_hours)
File "/app/myenedis.py", line 379, in myEnedis
attributes[f'offpeak_hours_enedis'] = query_result[1]
TypeError: 'NoneType' object is not subscriptable

Du coup, j’ai bien les entités côtés MQTT mais pas l’ « Appareil »

J’ai eu une erreur similaire.

Vérifie que la variable OFFPEAK_HOURS est bein définie dans le docker:

  • soit directement dans le fichier docker-compose
  • soit dans le env du docker

Je viens de tester en mettant OFFPEAK_HOURS à "", sans succès. Le but étant de ne pas spécifier mes heures creuses à la main.
Parce que pour ma part c’est 22H36-06H36 qui n’est pas documenté sur le format à utiliser : faire comme on fait dans MyEnedis ou est-ce qu’il faut faire autrement ?
J’ai l’impression que la plus part du temps, ce sont des horaires sur deux intervales (genre 02H00-06H00 et 12H-16H00 et pas un intervale qui part de la fin d’une journée pour finir au début de la suivante :slight_smile:

J’ai moi aussi mis: OFFPEAK_HOURS: «  » dans le docker-compose (car il faut que la variable d’environnement soit déclarée) et l’API se charge ensuite de récupérer les valeurs automatiquement.

Je ne sais pas si cela peut jouer mais j’ai remarqué qu’il manque des variables dans ton script:
Voici ce que j’ai mis dans mon docker-compose …
environment:
TZ: « Europe/Paris »
ACCESS_TOKEN: « XXX »
PDL: « YYY »
MQTT_HOST: « 1.2.3.4 »
MQTT_PORT: « 1883 »
MQTT_PREFIX: « enedis_gateway »
MQTT_CLIENT_ID: « enedis_gateway »
MQTT_USERNAME: ‹  ›
MQTT_PASSWORD: ‹  ›
RETAIN: « True »
QOS: 0
GET_CONSUMPTION: « True »
GET_PRODUCTION: « False »
HA_AUTODISCOVERY: « True »
HA_AUTODISCOVERY_PREFIX: ‹ homeassistant ›
CYCLE: 86400
OFFPEAK_HOURS: «  »
CONSUMPTION_PRICE_BASE: 0.XXX
CONSUMPTION_PRICE_HC: 0.XXX
CONSUMPTION_PRICE_HP: 0.XXX
REFRESH_CONTRACT: « False »
REFRESH_ADDRESSES: « False »
WIPE_CACHE: « False »
DEBUG: « False »
CARD_MYENEDIS: « True »
CURRENT_PLAN: « BASE »
INFLUXDB_ENABLE: « False »
INFLUXDB_HOST: «  »
INFLUXDB_TOKEN: «  »
INFLUXDB_ORG: «  »
INFLUXDB_BUCKET: «  »

Hello @Nardol ,
Pour moi cela a fonctionné après la correction sur le docker faite par @M4dm4rtig4n.
Pa contre j’ai mis a vide la variable OFFPEAK_HOURS:

Et j’ai bien les données qui remontent:
image

Je sais pas si ça aide :slight_smile:

Apparemment, ça ne change pas le problème avec ce script:

#!/bin/bash
ACCESS_TOKEN="XXX"
PDL="YYY"
MQTT_HOST="127.0.0.1"
MQTT_PORT="1883"
MQTT_PREFIX="enedis_gateway"
MQTT_CLIENT_ID="enedis_gateway"
MQTT_USERNAME="user"
MQTT_PASSWORD="pass"
RETAIN="True"
QOS=0
GET_CONSUMPTION="True"
GET_PRODUCTION="False"
HA_AUTODISCOVERY="True"
HA_AUTODISCOVERY_PREFIX="homeassistant"
CYCLE=3600
CONSUMPTION_PRICE_BASE=0.1484
CONSUMPTION_PRICE_HC=0.1263
CONSUMPTION_PRICE_HP=0.1678
OFFPEAK_HOURS=""
REFRESH_CONTRACT="True"
REFRESH_ADDRESSES="True"
WIPE_CACHE="False"
CARD_MYENEDIS="True"
CURRENT_PLAN="HP/HC"
ADDRESSES="True"
DEBUG="True"
TZ="Europe/Paris"
INFLUXDB_ENABLE="False"
INFLUXDB_HOST=""
INFLUXDB_TOKEN=""
INFLUXDB_ORG=""
INFLUXDB_BUCKET=""

docker run -it --restart=unless-stopped \
    -e ACCESS_TOKEN="$ACCESS_TOKEN" \
    -e PDL="$PDL" \
    -e MQTT_HOST="$MQTT_HOST" \
    -e MQTT_PORT="$MQTT_PORT" \
    -e MQTT_PREFIX="$MQTT_PREFIX" \
    -e MQTT_CLIENT_ID="$MQTT_CLIENT_ID" \
    -e MQTT_USERNAME="$MQTT_USERNAME" \
    -e MQTT_PASSWORD="$MQTT_PASSWORD" \
    -e RETAIN="$RETAIN" \
    -e QOS="$QOS" \
    -e GET_CONSUMPTION="$GET_CONSUMPTION" \
    -e GET_PRODUCTION="$GET_PRODUCTION" \
    -e HA_AUTODISCOVERY="$HA_AUTODISCOVERY" \
    -e HA_AUTODISCOVERY_PREFIX="$HA_AUTODISCOVERY_PREFIX" \
    -e CYCLE="$CYCLE" \
    -e CONSUMPTION_PRICE_BASE="$CONSUMPTION_PRICE_BASE" \
    -e CONSUMPTION_PRICE_HC="$CONSUMPTION_PRICE_HC" \
    -e CONSUMPTION_PRICE_HP="$CONSUMPTION_PRICE_HP" \
    -e OFFPEAK_HOURS="$OFFPEAK_HOURS" \
    -e REFRESH_CONTRACT="$REFRESH_CONTRACT" \
    -e REFRESH_ADDRESSES="$REFRESH_ADDRESSES" \
    -e WIPE_CACHE="$WIPE_CACHE" \
    -e CARD_MYENEDIS="$CARD_MYENEDIS" \
    -e CURRENT_PLAN="$CURRENT_PLAN" \
    -e ADDRESSES=$ADDRESSES \
    -e TZ="$TZ""" \
    -e INFLUXDB_ENABLE="$INFLUXDB_ENABLE" \
    -e INFLUXDB_HOST="$INFLUXDB_HOST" \
    -e INFLUXDB_TOKEN="$INFLUXDB_TOKEN" \
    -e INFLUXDB_ORG="$INFLUXDB_ORG" \
    -e INFLUXDB_BUCKET="$INFLUXDB_BUCKET" \
    -e DEBUG="$DEBUG" \
    --name=enedis2mqtt \
m4dm4rtig4n/enedisgateway2mqtt:latest

Vu que j’ai un module téléinfo directement relié au compteur et que là je test pour le plaisir du test, je vais arêter de me prendre la tête et patienter jusqu’au retour de @M4dm4rtig4n :slight_smile: en tout cas merci pour l’aide.