Go Down

Topic: Serveur de téléinformation Linky (Read 3582 times) previous topic - next topic

MicroQuettas

Alain,

Magnifique. Je vous envoie cela demain.

Bonne soirée.

Fred

MicroQuettas

Bonjour Alain,


Voici la marche à suivre pour repartir:

A- sur le fichier A_DevConfig.h
  • vous avez déjà renseigné les lignes 135 et 136 avec le SSID et le mot de passe de votre Wifi,
  • éditez maintenant les lignes 150 et 152 avec les adresses de vos DNS.


B- sur le fichier A_CompilSwitches.h
  • décommentez les lignes 10, 12 et 33. Vous avez ainsi les fonctions de debug global, du décodeur et du Wifi,
  • décommentez la ligne 16 (FORCEDEFPAR), c'est ce qui va forcer à revenir aux paramètres par défaut (en quelque sorte effacer l'EEPROM).


C- Compilez, chargez et lancer. Sur le moniteur série, le serveur devrait indiquer qu'il a utilisé les paramètres par défaut. Il vous donne aussi la progression de son état de communication (GWif_SR). Vous pouvez vérifier la connexion Wifi en lui envoyant un "%w", il va vous donner sa configuration.

D- Une fois tout vérifié, arrêtez le et revenez sur le fichier A_CompilSwitches.h:
commentez la ligne 16 (plus de forçage).

E- Compilez, chargez et lancer. Sur le moniteur série, le serveur devrait indiquer qu'il a utilisé les paramètres de l'EEPROM et qu'il se connecte à votre Wifi, ce que vous pouvez vérifier avec un "%w".

F- Attendez environ 20s et connectez vous sur le serveur avec votre navigateur à l'adresse 192.168.1.224. Il va vous demander un login et mot de passe (user /user).
Vous avez maintenant la page 0 (puissance = PAPP) qui devrait s'afficher en temps réel si le décodeur est bien relié à la IO13 et si le compteur l'envoie. Vous devriez aussi avoir l'intensité sur la page correspondante.

G- Vous pouvez aller sur la page "Config" avec le compte et mot de passe administrateur (admin /admin). Sur la page compte, changez les login et mots de passe user et admin. Vous avez aussi accès à la configuration Wifi que vous pouvez modifier.

H- Comme le tarif n'est pas décodé, vous n'aurez ni les index, ni les consommations par tranche horaire et par conséquent pas les barres de moyenne et de maxima. Il arrive que l'heure mette un peu de temps à se mettre à jour : le serveur réessaye toutes les 3 minutes. On va chercher l'heure sur un serveur NTP US, si quelqu'un en connait un en FR ou Europe, je suis preneur...

I- Si tout marche, vous pouvez revenir sur le fichier A_CompilSwitches.h et remettre en commentaire les fonctions de debug sur les lignes 10,12,et 33 qui ne servent plus à rien, inutile de charger le CPU pour rien.

Voila, bonne bidouille... et tenez moi au courant,

Fred

alaindepicardie

#17
Aug 30, 2018, 09:49 pm Last Edit: Aug 30, 2018, 09:54 pm by alaindepicardie
bonjour tous, bonjourMicroQuettas.
merci de l'intérêt que vous portez a mes soucis, merci également pour votre disponibilité.
Déjà je voulais vous dire que je ne suis pas du tout au niveau.
je suis niveau en dessous du débutant, j'ai juste saisi l'oportunité d'utiliser votre serveur teleinfo.

Quote
Today at 10:14 am
Bonjour Alain,


Voici la marche à suivre pour repartir:

A- sur le fichier A_DevConfig.h
vous avez déjà renseigné les lignes 135 et 136 avec le SSID et le mot de passe de votre Wifi,

#define CWif_PSSID "Livebox-Alain"
#define CWif_PPwd "1234567890ABCDEF0000000000"




éditez maintenant les lignes 150 et 152 avec les adresses de vos DNS.


     80, 10, 246, 3,     /* Depends from Internet provider (*) */
     /*      DNS 2          */
       81, 253, 149, 10,     /* Depends from Internet provider (*) */
 


B- sur le fichier A_CompilSwitches.h
décommentez les lignes 10, 12 et 33. Vous avez ainsi les fonctions de debug global, du décodeur et du Wifi,

#define LKYDEBUG true        /* Global debugging enable */
#define LKYDECDEBUG true     /* Linky decoder debugging */
#define WIFIDEBUG true        /* Wifi debugging information */


décommentez la ligne 16 (FORCEDEFPAR), c'est ce qui va forcer à revenir aux paramètres par défaut (en quelque sorte effacer l'EEPROM).

#define FORCEDEFPAR  true


C- Compilez, chargez et lancer. Sur le moniteur série, le serveur devrait indiquer qu'il a utilisé les paramètres par défaut. Il vous donne aussi la progression de son état de communication (GWif_SR). Vous pouvez vérifier la connexion Wifi en lui envoyant un "%w", il va vous donner sa configuration.
Code: [Select]

GWif_SR = 50
AP = 0x1
GWif_SR = 55
WiFi connection aborted
Minute tick
Minute tick
GWif_SR = 0
GWif_SR = 5
Minute tick
GWif_SR = 50
GWif_SR = 55
WiFi connection aborted
Minute tick
Minute tick
GWif_SR = 0
GWif_SR = 5
GWif_SR = 50
GWif_SR = 55
WiFi connection aborted
Minute tick
Minute tick
GWif_SR = 0
GWif_SR = 5
Minute tick
GWif_SR = 50
GWif_SR = 55
WiFi connection aborted
Minute tick
Minute tick
GWif_SR = 0
GWif_SR = 5
GWif_SR = 50
GWif_SR = 55
WiFi connection aborted

Je suis désolé voila ci dessus les messages de mon moniteur série!

J'apprécie beaucoup votre aide, mais peut être serait'il plus sage d'attendre qu'un utilisateur plus compétent utilise votre routine, je crains de vous faire perdre beaucoup de temps. Surtout que votre routine sur votre autre post dédie a la teleinfo fonctionne, donc je ne suis pas bloqué.

Pour tout vous dire, lorsque vous avez dit "modulable" je voulais vous demander si il vous était possible d'ajouter un fichier a votre programme afin qu'il puisse communiquer avec emoncms. Mais comme je n'arrive déja pas a lancer l'application......

quelques information supplémentaire:
- je fais ces premières configuration dans mon bureau ou je n'ai pas accès a la teleinfo. j'ai pensé que ce n'était pas grave dans un premiers temps juste pour la configuration du serveur.

La led clignote cicliquement (environ toute les 1/2 secondes)

voici le message du compilateur, au cas ou.

Code: [Select]

Archiving built core (caching) in: C:\Users\User\AppData\Local\Temp\arduino_cache_144696\core\core_esp8266_esp8266_nodemcuv2_CpuFrequency_80,FlashSize_4M1M,LwIPVariant_v2mss536,Debug_Disabled,DebugLevel_None____,UploadSpeed_115200_525d20b96160dc2c65dab96450e4c58c.a
Le croquis utilise 345391 octets (33%) de l'espace de stockage de programmes. Le maximum est de 1044464 octets.
Les variables globales utilisent 40256 octets (49%) de mémoire dynamique, ce qui laisse 41664 octets pour les variables locales. Le maximum est de 81920 octets.
Uploading 349536 bytes from C:\Users\User\AppData\Local\Temp\arduino_build_985656/Lky03f_P.ino.bin to flash at 0x00000000
................................................................................ [ 23% ]
................................................................................ [ 46% ]
................................................................................ [ 70% ]
................................................................................ [ 93% ]
......................                                                           [ 100% ]



Cordialement

MicroQuettas

Bonjour Alain,

Ne vous excusez pas, si c'est ce que je pense, grâce aux indications que vous m'avez fournies, ce sera facile à résoudre. La situation est simple, le serveur ne se connecte pas au Wifi. Il abandonne après 20s et réessaie 2 minutes plus tard.

Si votre mot de passe Wifi fait bien 26 caractères (!! ne le copiez pas !!), cela s'explique car j'ai taillé les tampons trop juste (20 caractères seulement) ! C'est d'autant plus ballot que les m-d-p par défaut des box Orange (mon fournisseur) en font 26 !

Heureusement, c'est facile à changer : fichier A_DevConfig.h
  • ligne 118 #define CLg_AdCredential 21 <-  remplacer par 31,
  • ligne 120 #define CH_MaxLgCre "20" <- remplacer par "30" avec (entre "").


Reprenez le tout à l'étape A indiquée précédemment et ça devrait gazouiller.

Si c'est cela, c'est plutôt à moi de m'excuser  :smiley-confuse:

Pour emoncms, je ne connais pas. Mon serveur est prévu pour fonctionner de manière autonome. Cela doit être possible de le raccorder à un système centralisé, mais ce n'est pas forcément le plus simple, ni le plus judicieux. Il vaut mieux faire un client simple.

J'ai avancé sur le double tarif, et j'en ai profité pour modifier la page "puissance" à la lumière des nouvelles infos d'Enedis sur le seuil de coupure du Linky, mais il faut que je teste tout cela.

A bientôt et bonne bidouille,

Fred



alaindepicardie

#19
Sep 01, 2018, 04:55 pm Last Edit: Sep 01, 2018, 05:01 pm by alaindepicardie
bonjour
Formidable ça roule.
En fait vous avez visé juste c'est bien  cela.
Ma chance c'est que j'ai le même fournisseur d'acces que vous.

Code: [Select]

#define CLg_AdCredential 31 /* Length credentials (login or pwd)
                              
#define CH_MaxLgCre "30"    /* CLg_AdCredential -1 in ASCII */


alors en pièces jointes mes capture d'écran
et ci dessous les captures moniteur série pour information.

Me reste a faire une nouvelle interface car mes trois autres sont en utilisation
Je viens de regarder dans mes fond de tiroir et j'ai:
des 4N32 et des 6N36, je ne sais pas si ils conviennent!
Je vous remercie a nouveau d'avoir pris le temps de me guider.

je vous parlais d'emonecs car l'idée était de garder une longue historique.
par exemple pour mon compteur EDF et ma pompe a chaleur je garde un historique sur plusieurs années.
Je me rend compte ainsi beaucoup mieux des variations de consommation
par curiosité c'est ici
ICI


Code: [Select]

Minute tick
Minute tick
Client 192.168.1.17 has connected
URL =
Tail=
Auth=
URL =
Tail=
Auth=YWRtaW46YWRtaW4=
Minute tick
GWif_SR = 40
GWif_SR = 25
Client locally disconnected
Client 192.168.1.17 has connected
URL =
Tail=
Auth=dXNlcjphZG1pbg==
Minute tick
GWif_SR = 40
GWif_SR = 25
Client locally disconnected
Client 192.168.1.17 has connected
URL =
Tail=
Auth=dXNlcjp1c2Vy
Client 192.168.1.17 has connected
Client remotely disconnected
URL =XML00
Tail=alea=825184
Auth=dXNlcjp1c2Vy
Client remotely disconnected
Client 192.168.1.17 has connected
URL =XML00
Tail=alea=892012
Auth=dXNlcjp1c2Vy
Client remotely disconnected
Client 192.168.1.17 has connected
URL =XML00
Tail=alea=851814
Auth=dXNlcjp1c2Vy
Client 192.168.1.17 has connected
Client remotely disconnected
URL =XML00
Tail=alea=227547
Auth=dXNlcjp1c2Vy
Client remotely disconnected
Client 192.168.1.17 has connected
URL =XML00
Tail=alea=737595
Auth=dXNlcjp1c2Vy
Client remotely disconnected
Client 192.168.1.17 has connected
URL =Lky00.htm
Tail=N00=01
Auth=dXNlcjp1c2Vy
Client remotely disconnected
Client 192.168.1.17 has connected
URL =Lky30.htm
Tail=N02=01
Auth=dXNlcjp1c2Vy
Client remotely disconnected
Client 192.168.1.17 has connected
URL =XML40
Tail=alea=116792
Auth=dXNlcjp1c2Vy
Client remotely disconnected
Client 192.168.1.17 has connected
URL =Lky40.htm
Tail=N01=01
Auth=dXNlcjp1c2Vy
Client remotely disconnected
Client 192.168.1.17 has connected
URL =Lky10.htm
Tail=T80=admin&T81=admin&N01=01
Auth=dXNlcjp1c2Vy
Client remotely disconnected
Minute tick
Client 192.168.1.17 has connected
URL =Lky20.htm
Tail=s01=1&C00=01&N02=01
Auth=dXNlcjp1c2Vy
Client 192.168.1.17 has connected
Client remotely disconnected
URL =Lky90.htm
Tail=T80=user&T81=user&T82=admin&T83=admin&N00=00
Auth=dXNlcjp1c2Vy
Client remotely disconnected
Client 192.168.1.17 has connected
URL =XML00
Tail=alea=8479
Auth=dXNlcjp1c2Vy
Client remotely disconnected
Client 192.168.1.17 has connected
URL =XML00
Tail=alea=639919
Auth=dXNlcjp1c2Vy
Client remotely disconnected
Client 192.168.1.17 has connected
URL =Lky00.htm
Tail=N01=01
Auth=dXNlcjp1c2Vy
Client remotely disconnected
Client 192.168.1.17 has connected
URL =Lky20.htm
Tail=s01=1&C00=01&N03=01
Auth=dXNlcjp1c2Vy
Client remotely disconnected
Minute tick
Client 192.168.1.17 has connected
URL =Lky95.htm
Tail=T80=Livebox-Alain&T81=XXXXXXXXXXXXXXXXXXXX&N00=01
Auth=dXNlcjp1c2Vy
Client remotely disconnected
Client 192.168.1.17 has connected
URL =XML00
Tail=alea=942523
Auth=dXNlcjp1c2Vy
Client remotely disconnected
Client 192.168.1.17 has connected
URL =XML00
Tail=alea=434821
Auth=dXNlcjp1c2Vy
Client remotely disconnected
Client 192.168.1.17 has connected
URL =XML00
Tail=alea=90824
Auth=dXNlcjp1c2Vy
Client 192.168.1.17 has connected
Client remotely disconnected
URL =XML00
Tail=alea=553143
Auth=dXNlcjp1c2Vy
Client remotely disconnected
Client 192.168.1.17 has connected
URL =XML00
Tail=alea=85483
Auth=dXNlcjp1c2Vy
Client 192.168.1.17 has connected


MicroQuettas

Bonjour Alain,

Content de voir que cela marche  :smiley-mr-green: Ceci dit, la modification de la configuration est incomplète et certaines modifications faites depuis le serveur ne devraient pas être sauvegardées. Cela n'a pas d'importance à ce stade et je corrigerai le tout proprement avec la nouvelle version bi-tarif, en cours de test.

La finalité de mon serveur est différente de ce que vous faites avec emoncms : le serveur est orienté sur la transmission de la consommation instantanée :
  • pour chasser le gaspi en traquant les consommations de veille qui sont celles qui font grimper la facture,
  • pour les pointes de consommation qui risquent de faire disjoncter le Linky, encore que les nouvelles infos publiées très récemment par Enedis dans la V3 de son document sur la téléinformation client soient plutôt rassurantes. Pourquoi ne l'ont-ils pas dit plus tôt ?


Pour vos optocoupleurs, d'après les docs que j'ai trouvées sur Internet :
  • le 4N32 est un photodarlington : très sensible, mais pas véloce,
  • je n'ai pas trouvé de 6N36, mais un 6N136. Si c'est bien celui que vous avez, il devrait convenir parfaitement, encore qu'il ait un brochage pas courant (au moins pour moi).


Comme tous les deux sont simple alternance, il vous faut utiliser l'un des 2 montages  publiés, l'un dans le premier post de cette rubrique, l'autre ici avec 2 optos. Je n'ai pas essayé celui à 2 optos, mais il devrait marcher sans problème. Dans tous les cas, il vous faut essayer...
Attention aussi car le signal est faiblard. Je ne pense pas qu'il puisse actionner 2 démodulateurs.

A bientôt et bonne bidouille,

MicroQuettas

bricoleau

Hello

Mon linky arrive bientôt, alors je vais décortiquer ton projet  :)

Petite question : au bout d'un an de fonctionnement, est-ce que ta solution a passé avec succès l'épreuve du temps?
Un retour d'expérience éclairant un point à améliorer, ou bien c'était tout bon du premier coup?
Tutoriels arduino : http://forum.arduino.cc/index.php?topic=398112.0

Alain-alph

bonsoir Bricoleau.
ça marche sans soucis. Mais pour l'instant je n'ai pas le Linky ( les trames en mode historique sont les même)
Donc j'utilise ce serveur sur un compteur Electronique standard.... et c'est OK

MicroQuettas

Bonsoir à tous deux,

Merci pour le message et le retour d'expérience.
Ici, quelques améliorations dont je vous ferais profiter. Le fonctionnement est bon : la version en service (04h) a été démarrée pour la dernière fois le 29/01/19. Depuis, cela tourne sans histoire. J'ai juste un doute sur un point que je n'ai pas été capable de clarifier, et vos expériences pourront certainement aider à y voir clair.
Je reviens avec tout cela d'ici une dizaine de jours. Pour l'instant, j'ai les petits enfants et ils sont trop jeunes pour goûter les joies de la bidouille et de l'Arduino.

Bonne bidouille et à bientôt,

Fred de MicroQuettas

MicroQuettas

#24
Aug 27, 2019, 11:12 am Last Edit: Aug 27, 2019, 11:21 am by MicroQuettas Reason: Link to pictures added
Bonjour à toutes et tous,

Voici comme promis une nouvelle version du serveur Linky après plus d'un an de fonctionnement, en plusieurs posts :

1-  Quelques nouveautés

  • Affichage de la puissance de coupure du Linky (130%) de la puissance souscrite comme indiqué dans la nouvelle mouture de la note Enedis (Enedis-NOI-CPT_54E V3),
  • Commande possible d'une alarme sonore (niveau logique HIGH sur la pin GPIO_14) en cas de dépassement de la puissance souscrite,
  • Gestion des identifiants Wifi (SSID et Pwd) jusqu'à 32 caractères,
  • Reset commandé fiable, relier GPIO_16 et RST,
  • Améliorations cosmétiques de ci, de là...


Et les captures des principaux écrans :













A+ pour la suite et bonne bidouille,

MicroQuettas

MicroQuettas

Re, voilà la suite...

2- Nouvelle procédure de configuration

  • Régler l'IDE pour effacer toute la mémoire Flash ("All Flash content") et pas seulement le squetch (menu Outils),
  • Renseigner le SSID et le PWD (mot de passe) de votre Wifi dans le fichier A_DevConfig.h, lignes 246 et 247,
  • Compiler et téléversez tel quel, pour mémoire : A_DevConfig.h : DHCPMODE (37) décommentée ; A_CompilSwitches.h, ligne 10 : LKYDEBUG décommentée,
  • Une fois le programme lancé, sur le moniteur série (9600), taper %w et noter (copier dans un fichier) la configuration du réseau,
  • Vérifiez avec votre navigateur (utilisateur : user, mot de passe user, aministrateur : admin, mot de passe admin) que programme fonctionne sur l'IP donnée par le DHCP,
  • Choisir une IP fixe (en pratique seulement le dernier nombre de l'IP) libre sur votre réseau (par défaut 236), et la renseigner dans A_DevConfig.h, ligne 20,
  • Commentez (ajoutez // en début de ligne) A_DevConfig.h, ligne 37, pour supprimer le mode DHCP,
  • Commentez (ajoutez // en début de ligne) A_CompilSwitches.h, ligne 10, pour supprimer le mode LKYDEBUG,
  • Mettez à jour les lignes  A_DevConfig.h 255, 257, 259, 261 et 263 avec les informations sur votre réseau copiées précédemment,
  • Configurer le programme en fonction de votre compteur en éditant les lignes A_DevConfig.h 23 à 35, par défaut tarif BASE, LINKY, monophasé, 6kW, 30A,
  • Compilez et téléversez,
  • Vérifiez avec votre navigateur que le programme fonctionne sur l'IP fixe que vous lui avez choisie,
  • Terminez la configuration du programme en renseignant de nouveaux identifiants et mots de passe utilisateur et administrateur directement sur son interface de configuration.


Attention : par la suite, réglez l'IDE sur effacer le squetch seulement ("Only squetch"), faute de quoi l'EEPROM sera effacée et votre configuration avec...

Si vous avez perdu vos identifiants, il vous reste à tout reprendre depuis le début en règlant l'IDE pour effacer toute la mémoire ("All Flash content").

A+ pour la suite...

MicroQuettas

Re, et le troisième et dernier morceau avec le code...

3- Le mode HWSERIAL

La difficulté de ce montage est le récepteur série avec le Linky. En effet, sur une carte NodeMCU, Wemos D1 ou similaire, l'unique récepteur série du 8266 est reliée à l'interface USB et donc difficilement utilisable.
Il faut donc utiliser un récepteur série logiciel. La bibliothèque Software Serial fonctionnne, mais accapare la plus grande partie du temps CPU, ce qui la rend inutilisable avec un Linky qui babille en permanence à 1200 Bds. J'ai donc écrit un récepteur série logiciel alternatif qui utilise le timer1 du 8266 pour faire les délais et tout gérer par interruption. Le problème est que ce timer est très peu documenté et utilisé par d'autres choses :

  • le pwm, pulse etc. : facile, on ne les utilise pas,
  • l'OTA et l'écriture sur la pseudo EEPROM : gérés par arrêt de la réception série,
  • d'autres choses que je n'ai pas identifiées...


En pratique, il m'est arrivé d'avoir des resets non commandés à intervalles de quelques jours sans que je puisse en identifier la source et les reproduire, et ce, malgré des mauvais traitements infligés à l'entrée série (variation vitesse, débranchement, envoi de breaks, etc.). Qui plus encore, le système a fonctionné normalement pendant 1 semaine avec un simulateur qui lui envoyait des trames Linky...

J'ai compris que Alain-alph n'avait pas eu ce souci...

Bref, il y a un doute.
Comme j'utilise des cartes ESP12 maison sur lesquelles la pin Rx est accessible, j'ai fait une variante du programme qui utilise le récepteur HW et c'est celle que j'utilise. Elle fonctionne depuis plus de 6 mois en continu, ce qui, en passant, dédouane tout le reste du programme.

Pour utiliser le récepteur HW (lorsque la pin Rx est accessible, sur une carte ESP01 par exemple) :
  • Configurez d'abord votre programme comme indiqué précédemment,
  • Réglez l'IDE sur effacer le squetch seulement, faute de quoi l'EEPROM sera effacée et votre configuration avec,
  • Décommentez la ligne CompilSwitches.h 43 qui active la réception par le HW serial,
  • Compilez et téléversez.


Remarque : il est possible que cela fonctionne aussi avec une carte NodeMCU ou Wemos D1 en utilisant la résistance série vers le convertisseur USB comme une pull-up, si l'optocoupleur de l'adaptateur accepte suffisamment de courant, mais je n'ai pas essayé.

                         ************************

Voilà, tous les retours sont les bienvenus et surtout bonne bidouille,

MicroQuettas

supercc

#27
Aug 27, 2019, 02:24 pm Last Edit: Aug 27, 2019, 02:32 pm by supercc
Bonjour MicroQuettas,

je viens de télécharger ton archive et la parcourir. Super boulot ! Perso je ne compte pas me lancer dans ce genre de projet mais si j'avais a jouer avec mon compteur linksys je reviendrai voir !

Les sources sont propres et tout est fourni ! merci.

Sinon, partages tu ta solution sur une forge quelconque (github ou autre) ? Sous quelle licence logicielle places tu ton code ? Désolé, mais je n'ai pas vu. 

MicroQuettas

Merci Supercc !

Je n'utilise pas GitHub car je bidouille à titre personnel et je n'en ai pas trouvé l'utilité (?).
Je publie de temps en temps une bidouille sur ce site où j'ai trouvé bien des astuces et idées. Si cette publication peut aider qqun, alors tant mieux.

Pour la licence : GNU bla bla bla et tout est libre : ...sinon je ne l'aurai pas publié !

Il y a dans le code 1 ou 2 modules dans lesquels j'ai adapté du code déjà publié par d'autres. J'ai gardé les entêtes des auteurs d'origine qui y sont identifiables.

Je répondrai avec plaisir aux demandes (raisonnables).


Bonne bidouille,

MicroQuettas

supercc

Merci pour les réponses qui me conviennent ;-)

Go Up