Serveur de téléinformation Linky

alaindepicardie:
j'ai un uno qui me décode déjà deux téléinfo.
j'utilise la librairie Software serial.
cette librairie me prend beaucoup de ressources, par exemple lorsque je me sert de (millis) c'est faux.

bonjour
dans ce cas pourquoi ne pas passer sur une Mega avec 4 UART, elle existe même en format réduit Mega pro

bonjour

dans ce cas pourquoi ne pas passer sur une Mega avec 4 UART, elle existe même en format réduit Mega pro

oui, mais j'avais acheté un arduino uno et un esp.
c'est sur cet hiver je vais acheter un clone de Méga.

Alors quel boulot! c'est magnifique, je me sens bien petit devant un tel travail, vraiment merci.

Sinon a la compilation j'ai un message d'erreur:

Arduino : 1.8.5 (Windows 7), Carte : "ESPino (ESP-12 Module), 80 MHz, ck, 4M (1M SPIFFS), v2 Prebuilt (MSS=536), Disabled, None, 115200"

C:\Users\User\Documents\Arduino\Lky03f_P\Lky03f_P.ino:92:23: fatal error: Streaming.h: No such file or directory

#include <Streaming.h>

                      ^

compilation terminated.

exit status 1
Erreur de compilation pour la carte ESPino (ESP-12 Module)

j'ai donc ajouté cette librairie:GitHub - geneReeves/ArduinoStreaming: Arduino Streaming Library (from Mikal Hart's site http://arduiniana.org/libraries/streaming/
et maintenant cela compile mais avec ce message d'erreur

ATTENTION : La catégorie 'Language' dans la bibliothèque ArduinoStreaming n'est pas valide. 
Définition sur : 'Uncategorized'
Archiving built core (caching) in: C:\Users\User\AppData\Local\Temp\arduino_cache_807921\
core\core_esp8266_esp8266_espino_CpuFrequency_80,ResetMethod_ck,FlashSize_4M1M,LwIPVariant_v2mss536,Debug_Disabled,
DebugLevel_None____,UploadSpeed_115200_525d20b96160dc2c65dab96450e4c58c.a

Voila qu'en pensez vous.
Alain

Bonjour Alain,

C'est tout simple : vous n'utilisez pas la bonne biblio "Streaming".
J'ai pris la mienne sur le site Arduino, tout à fait en bas de cette page Arduino Libraries
rubrique "contributed / utilities".

Merci pour l'intérêt que vous portez à ce projet et bonne bidouille.

MicroQuettas

bonjour
OK, merci j'ai donc mis la bonne bibliothèque et ça compile.

quelques retour:

-avec la version: LkyRx_06 de l'autre post, je décode sans soucis (avec un tarif base).

-par contre avec la version Lky03f_P de ce post je ne démarre pas!
j'ai dans un premier temps compilé directement et j'ai juste la led bleu qui clignote, en activant le mode debug, j'ai le message Minute Tick qui apparait. la led bleu clignote toute les 1 ou 2 secondes.

J'ai donc renseigné les deux champs comme cela:

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

et toujours rien j'ai le message:

Bonjour
EEPROM time mgt params used
EEPROM main config used
EEPROM Wifi config
EEPROM accounts used
GWif_SR = 0
GWif_SR = 5
GWif_SR = 50
AP = 0x1
GWif_SR = 55
WiFi connection aborted

la led bleu clignote toute les 1 ou 2 secondes.

Sinon pour les trames, il y a deux types de compteur électronique:
les anciens (une bonne dizaine d'année), ces derniers ne remontent pas la PAPP.

Et puis les derniers qui eux remontent la PAPP.
Je ne sais pas si le fait de ne pas trouver le champs PAPP peut poser soucis, aussi j'ai mis un peu de temps afin de te fournir deux trame:
-une trame ancien compteur
-une trame compteur plus récent
Par contre mon niveau en prog Ardruino est du genre copier/coller ( voyez ce que je veut dire) autrement dit, pour sauver la face on va dire que je debute!

Les trames ancien compteur:

ADCO 02865473XXXX N
OPTARIF HC.. <
ISOUSC 45 ?
HCHC 054247766 /
HCHP 079818219 @
PTEC HP..
IINST 001 X
IMAX 022 C
HHPHC D /
MOTDETAT 000000 029801538499 Q

et les trames nouveau compteur:
MOTDETAT 000000 B
OPTARIF HC.. <
ISOUSC 15 <
HCHC 002922023 Z
HCHP 004513052 '
PTEC HP..
IINST 000 W
IMAX 009 H
PAPP 00000 !
HHPHC D /
ADCO 03072289XXXX N

voila Cordialement Alain

Bonjour,

Merci pour le retour. Les points suivants sont normaux :

  • le clignotement de la LED toutes les secondes atteste du bon fonctionnement,
  • même en mode debug, le serveur ne transmet pas la téléinformation sur son port série.

Concernant la non connexion au Wifi, quelques explications :

  • le serveur garde ses paramètres sur une zone de sa mémoire qui fonctionne comme une EEPROM, avec une clé (CRC) qui atteste de la validité des données,
  • au démarrage, il va lire l'EEPROM et la clé. Si la clé est correcte, il charge les paramètres depuis l'EEPROM,
  • si la clé est incorrecte, il charge les paramètres par défaut depuis le fichier A_DevConfig.h et les copie en EEPROM.[\li]

Vous avez dû démarrer le serveur avant d'avoir édité le fichier A_DevConfig, et du coup il a copié en EEPROM les paramètres du fichier brut. A chaque redémarrage il reprend ces paramètres qui ne correspondent pas à votre réseau, d'où l'impossibilité de se connecter.

Rassurez vous, il y a 2 façons de se sortir de là, mais il faut d'abord que j'explique un peu mieux comment cela marche, et mes explications précédentes étaient vraiment succinctes. :disappointed_relieved:

On va avoir un serveur sur un réseau local (le vôtre). Pour que ce serveur soit accessible, il faut :

  • connaître son adresse IP sur votre réseau,
  • que cette adresse ne change pas à chaque connexion.

Pour cela, il faut que le serveur ait une adresse IP fixe sur votre réseau. Il y a 2 façons d'y arriver :

  • c'est le serveur qui choisit lui même son adresse,
  • c'est votre box Internet qui le reconnait et lui donne toujours la même adresse.

Les deux façons de faire sont possibles. C'est une question de goût et de possibilité d'intervenir sur votre box Internet. La méthode 2 nécessite plus d'intervention sur la box.

Je suis plutôt parti sur la 1 : c'est le serveur qui se prend tout seul une adresse, mais il faut l'aider un peu en lui communicant les caractéristiques de votre réseau.

Vous avez déjà renseigné le SSID et le mot de passe Wifi, c'est nécessaire, mais pas suffisant. Il faut aussi que vous lui donniez :

  • l'adresse IP (interne, sur votre réseau) de votre box,
  • si possible, celle des DNS,
  • et surtout que l'adresse que le serveur va prendre soit compatible avec votre réseau.

Je ne sais pas si vous connaissez ces informations. Si vous les connaissez, éditez les lignes 144 à 152 du fichier A_DevConfig.h
Dans le fichier de base, tout repose sur une box dont l'adresse interne est :
192.168.1.1, mais je ne sais pas ce que vous avez chez vous. C'est ce qui conditionne tout et c'est ce qu'il vous faut chercher en 1er si vous ne la connaissez pas.

Si vous êtes à l'aise avec votre box, vous pouvez aussi y pêcher les adresses des DNS et celles de début et de fin de la zone DHCP.
On peut aussi récupérer une partie de ces informations sur un PC, un téléphone ou une tablette connectés en Wifi.

Le serveur prend une adresse haute 192.168.1.224 qui est généralement en dehors de la zone DHCP, d'où l'absence de conflit. Sauf bonne raison, ne la changez pas (paramètre CWif_DefDvNb ligne 131 du fichier A_DevConfig.h).

Une fois que vous aurez tout cela, contactez moi. Ce sera alors très simple de configurer le serveur sur votre réseau.

§§§§§§§§§§§§§§§§

Un grand merci pour la copie des trames. Cela m'a permis d'avancer en explicitant un point qui n'était pas clair dans la documentation que j'avais.
Pour l'absence de PAPP sur le vieux compteur, je vais rajouter une option de simulation avec l'intensité...

Voilà, bon courage, bonne bidouille et à bientôt

Fred de MicroQuettas

bonjour
merci pour le temps que vous prenez pour nous.

vous dites être parti sur:192.168.1.1

ben, il me semble que c'est l'adresse pour me connecter sur ma box orange, si c'est bien le cas cela va être plus simple.

.
-l'adresse IP (interne, sur votre réseau) de votre box, ça c'est bon je dois savoir faire
-si possible, celle des DNS, je pense aussi
-et surtout que l'adresse que le serveur va prendre soit compatible avec votre réseau.
-Si vous êtes à l'aise avec votre box, vous pouvez aussi y pêcher les adresses des DNS ça je vais regarder
-et celles de début et de fin de la zone DHCP. ça aussi c'est bon je dois savoir faire
-Le serveur prend une adresse haute 192.168.1.224 qui est généralement en dehors de la zone DHCP, d'où l'absence de conflit. Sauf bonne raison, ne la changez pas ok

Je vais donc chercher te reviens vers vous au plus tôt (je pense demain car je viens de voir que le mode de connexion sur ma box Orange a changé depuis la dernière fois ou j'y suis allé...... il y a longtemps: Comme tout fonctionne bien je n'y allait plus :wink: )
encore merci

bonjour
si je vous dit:

serveur DHCP IPv4 actif.
adresse IP de la Livebox 192.168.1.1
masque de sous-réseau du LAN 255.255.255.0
adresse IP de début 192.168.1.10
adresse IP de fin 192.168.1.150

DNS primaire IPv4 80.10.246.3
DNS secondaire IPv4 81.253.149.10

Vous pouvez visualiser tous les appareils de votre réseau local

appareils du réseau local
nom nom DNS adresse IP

meteo 192.168.1.10
osmc 192.168.1.31
android-a83f4049bb2b6170 192.168.1.15
User-PC 192.168.1.17
PC47 192.168.1.18
android-23c93c5a4351a67a 192.168.1.12

est ce que cela vous est utile
Avant d'editer le fichier config
Cordialement, et merci Alain

Alain,

Magnifique. Je vous envoie cela demain.

Bonne soirée.

Fred

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

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.

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.

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.

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

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 :confused:

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

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.

#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

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

Captureb.JPG

Capturec.JPG

CaptureA.JPG

Bonjour Alain,

Content de voir que cela marche :grin: 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

TIC2opto_00a.pdf (27 KB)

Hello

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

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?

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

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

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

8- Lky03f - Page 96f.JPG

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...

1 Like

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

Lky04i_P.zip (155 KB)

1 Like

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.