Decodeur TIC Linky

Bonjour Alain,

Vous avez raison, en première apparence, c'est moins précis.
Toutefois, si on utilise PAPP, il faut tenir compte de la tension, qui varie autour du nominal à 230V... Ensuite, mais cela je n'en suis pas certain, dans le PAPP, il y a le réactif (à vérifier). Si c'est le cas, même avec un bon cos(phi) de 0,9, on rajoute encore 10%... Bref, avec PAPP la résolution est plus grande, mais ce n'est pas sûr que cela soit plus précis.
Enfin, le Linky a l'air d'utiliser le IINST pour couper. Il y a donc tout intérêt à commander le délestage à partir des mêmes données.

Merci pour les docs. J'ai la ...02 et la ...54. Si j'approfondis l'étude de l'animal, je reviendrais vers vous.

Bon dimanche et bonne bidouille,

MicroQuettas

Bonjour.

Ensuite, mais cela je n'en suis pas certain, dans le PAPP, il y a le réactif (à vérifier).

oui, je pense a 90% que PAPP prends en compte le réactif.

  • je pense également que le contrat est aussi basé sur cette notion ce qui expliquerais pourquoi les personnes qui étaient en limite se retrouve avec des soucis de coupure. on parle de KVA
    Le Breaker est aussi un point qui pose interrogation.
    Je vais essayer de vous mettre en ligne les docs car il y a des paragraphes très interagissant sur les délestage et la gestion des tarifs.
    Si l'on sort du contrat "réglementé" il faut voir les multitudes de tarifs proposés... c'est inquiétant.

EDIT:
j'ai oublié de dire que j'ai aussi:
Procédure de changement de mode de fonctionnement du
module « télé-information client » (TIC) d’un compteur
communicant BT ≤ 36 kVA
Enedis--TIC-PRO-CF_55E.pdf

procédure de traitement des dysfonctionnement de comptage
Enedis-LinkyDysf-PRO-CF_81E.pdf
Pour info je me suis procuré le max de docs car j'aurais ce merveilleux compteur dans deux ans et il va falloir que j'adapte mes prog qui me servent a faire mon historique Conso maison/conso PAC
https://mateleinfo.shost.ca/EDF/teleinfograph.php
par contre j'avais fait il y a une quinzaine d'année ce prog en basic, la j'[tt][tt][/tt][/tt]ai récupéré une routine de décodage des trames teleinfo mais la tienne semble très optimisée ce qui fait que le débutant que je suis ne comprends pas grand chose (même rien, chuttt).... mais comme je suis a la retraite et que j'ai le temps et qu'il y a ici beaucoup d'aide j'ai l'espoir de comprendre avant d'être trop vieux :wink:

Bonsoir Alain,

Merci pour les infos. Joli votre site.

En fait, je suis en train de faire un peu la même chose, mais sans passer par un serveur extérieur. La conso instantanée et l'historique sur 24 h glissantes. Le projet est bien avancé, mais pas encore complet. Je le publierai quand il sera terminé.
Le décodeur en est un élément bien isolé. C'est pour cela que je l'ai publié séparément.
A l'origine, je n'étais pas parti pour un délesteur. Je ne pense pas en avoir besoin car je n'ai ni chauffage, ni eau chaude électrique et j'ai un abonnement minimal (6kW), qui depuis 6 mois, ne m'a pas causé de coupure.

Il est vrai que je surveille la conso car j'ai été prévenu par l'installatrice du Linky que celui-ci coupait. Elle m'a expliqué comment réarmer et m'a montré où cela était indiqué dans la notice, preuve que ces coupures doivent être fréquentes. Les mauvaises langues diront que c'est pour vendre l'abonnement supérieur... Le fournisseur peut aussi couper à distance, pour mettre dans le noir le pauvre bougre qui n'a pas payé, et ce, sans se déplacer. Curieusement, les "anti-Linky" ne parlent pas de cela...

C'est une excellente idée que de mettre votre doc en ligne. Je suis sûr que cela servira à tous ceux qui sont en limite de coupure et qui n'ont pas envie de souscrire l'abonnement supérieur.

Bonne soirée et bonne bidouille,

MicroQuettas

PS : avec un peu de temps et de persévérance, on arrive à tout. Moi aussi je suis à la retraite...

bonsoir
petit essais de mise en ligne des documentations que je possède sur le Linky

quelques données technique (par exemple le courant de démarrage):
https://sendeyo.com/show/c1b1c1e305

Enedis-NOI-CPT_02E.pdf
https://sendeyo.com/show/0fcc816a58

Enedis-NOI-CPT_54E.pdf
https://sendeyo.com/show/355f19e060

sécurité electrique
https://sendeyo.com/show/c22e956ff8

hum!! les autres semblent pas libre (50 millions de consommateur, hardware mag)
décidément a l'école je n'avais pas le droit de copier, maintenant tant d'années après: toujours pas le droit de copier, décidément la révolution numérique!!!

Bonjour a tous du pays du soleil levant.
J'avance doucement dans la conceptualisation du delesteur ou devrais je dire commutateur delesteur. La gestion de la commutation d'une charge simple resistive n'est pas aisée mais je commence à avoir une idée claire du mode de fonctionnement. Restera ensuite le codage qui ne sera pas une mince affaire. Petit message car petite connexion et comme je ne suis pas encore à la retraite la semaine est en faveur du travail et peu pour le delesteur... prevision de travail pour le weekend... ca fera une bonne semaine.
Bonne avancée de votre coté
Olivier

bonjour

La gestion de la commutation d'une charge simple resistive n'est pas aisée mais je commence à avoir une idée claire du mode de fonctionnement.

bien, je suis complètement intéressé car je cherche aussi a gérer une charge, bon en DC mais je prends toutes idées.
Alain

Bonjour
Que cherches tu exactement? Plus haut sur le post il y a le schema electrique dans un fichier doc.
Je mettrais le programe demain mon collegue qui etait avec moi m'a fait un cours acceleré de class en C++
J'ai encore la fonction de recommutation des charges sur leur phase d'origine si elles ont ete commutée ou delestée.
Le mode de fonctionnement est le suivant :
On constate une surcharge sur une phase
On reagit en verifiant d'abord que des charges provenant d'autes phases ne sont pas sur la phase considérée.
Si c'est le cas on verifie la disponibilité sur la phase d'origine puis sur la phase restante.
Si pas de dispo alors on deleste les charges des phases repectives de ce test.
Une fois ces point vérifié on peut traiter la phase concernée
Soit on a de la dispo sur une autre phase et on commute ou enfin si pas de solution on la déleste
Bonne pâques
Olivier

Bonjour Olivier,

Bien rentré de l'Empire du Milieu ? ;D

Très joli projet, mais pas complètement simple... Vous allez avoir un sacré relayage si vous avez plusieurs charges par phase à commuter.
Pour le soft, la machine a états est probablement la meilleure solution.

Pour vous aider, si vous utilisez le décodeur TIC publié, voici comment simuler la réception de la TIC, toutes choses égales par ailleurs :

  • dans le fichier LinkyHistTIC_tri.h, décommentez la ligne 27
//#define LINKYSERIAL true   /* !!! Test with Serial only !!! */

[/li]

  • compilez le tout, vous êtes alors dans le mode "simulation" dont je me suis servi pour mettre le décodeur au point,
  • dans ce mode, les groupes sont reçus depuis le moniteur série et non depuis l'entrée TIC,
  • pour générer le caractère de checksum, je vous joins une petite moulinette sur un tableur,
  • activez les macros, vous pourrez ainsi générer les valeurs IINST de votre choix, avec la bonne checksum.

Bonne bidouille,

Frédéric de MicroQuettas

CKS_Enedis.zip (11.3 KB)

Bonsoir MicroQuettas
Merci pour cette info et le fichier excel de debug.
Oui en gros 6 pour un systeme a 1 niveau et 12 relais pour un systeme a 2 niveaux.
Je suis embete car mon arduino uno semble trop juste en terme de hardware. Il me manque 1 entree/sortie pour la teleinfo pin 11 de ton programme.
Je dois utiliser les pins de 2 a13 pour piloter les relais donc ...
Peut on mettre la lecture ailleurs ou utiliser 1 autre pin pour piloter un des relais?
Voici une patie du code il n'est pas fini
Bonne nuit... le jet leg fait encore effet

Phase.h (8.44 KB)

Bonjour Olivier,

Si vous gardez les entrées analogiques - et elles sont intéressantes pour savoir si un circuit consomme et combien avant de le couper - vous êtes effectivement coincé avec un Uno.
Il n'est pas très difficile de rajouter des sorties, avec des "latches" (74xxx374 ou 574), commande par I2C (PCF8574 etc), mais je ne vous le recommande pas. C'est beaucoup de complexité pour rien.
Passez plutôt directement sur un (clone de) Méga. Vous aurez beaucoup plus d'entrées /sorties, de mémoire programme, et surtout de RAM. L'architecture du micro est la même que pour le Uno, le code et les bibliothèques tournent sans problème. Bref, n'hésitez pas et cela ne vous coûtera guère plus cher qu'une bidouille avec des circuits en plus.

Vous pourrez même lui rajouter un shield Ethernet avec un mini serveur pour connaître l'état du système à distance.

Cerise sur le gâteau, le décodeur sera simplifié puisqu'on pourra utiliser un des 4 hardware serial du Méga. Je vous ferai la modif.

Bref, que du bonheur !

Bonne bidouille

MicroQuettas

Bonsoir MicroQuettas
J'ai regardé le fichier excel donc si j'ai bien compris je prends la chaine de caractere et le checksum associés et je le copie dans le fenetre de com et je suppose dans la case et j'appuie sur send et la ton code croit qu'il recoit une trame de teleinfo en mode debug.
Point suivant comme le Isouscr apparait a chaque evolution de la phase je pense modifier ton code et remplacer le PAPP par le isouscr et faire un linky update dans le void setup avec le Isouscr seulement.
Qu'en penses tu?
Oui je pense reinvestir dans un mega... pour le shield ethernet je pense que c'est au dessus de mes capacités de programation. Mais on verra quand ce morceau marchera
Bonne nuit

Bonsoir,

100% sur le fonctionnement de la moulinette sur le tableur.
Par exemple, si pour le debug de tes délesteurs tu as besoin de simuler un courant de 18A sur la phase 2 :

  • tu rentres "IINST2 018" dans la colonne "String",
  • le tableur rajoute la CKS dans la colonne "String & CRC" -> "IINST2 018 R",
  • tu copies dans le moniteur série et tu envoies.

Le moniteur série (terminal) doit être être réglé pour terminer les lignes par .

Le tout premier envoi sera perdu. C'est complètement normal car :

  • le compteur envoie et le décodeur attend :
<LF>groupe 1<CR>
<LF>groupe 2<CR>

[/li]

  • le terminal lui envoie :[/list]
groupe 1<CR><LF>
groupe 2<CR><LF>

[/li]

Le décodeur commence la capture quand il a reçu le .

Pour décoder le ISOUSC dans le setup(), tu avais presque bon, mais il faut boucler sur "Linky.Update()"
en attendant de recevoir ISOUSC.

J'ai modifié le code en conséquence (PJ).

J'ai jeté un coup d'oeil rapide sur le code que tu as mis en PJ. Je pense que tu peux simplifier en créant des objets "circuit" qui gèreraient toute la commutation des relais sans avoir à répéter quoique ce soit. Je te mettrai une ébauche, mais sans promesse...

Bonne bidouille

MicroQuettas

LkyRx_tri06c.ino (2.51 KB)

Bonsoir MicroQuettas

j'ai testé la feuille excel avec le lkyRx_tri06c.ino.
Je n'ai reussi à avoir qu'une seule fois la reponse ISouscrite=20
je suppose que la procedure est la suivante :
1 compilation et upload du prog (en mode simulation) dans le L'arduino uno
2 Retour sur la fenetre de com "Bonjour"
3 config fenetre de com en Both NL & CR (c'est peut être là que je m****)
4 envoi ISOUSC 20 8
5 Rien
6 Renvoi ISOUSC 20 8
7 Rien
8 envoi ISOUSC 20 8
9 Réponse
10 Impossible de continuer plus loin avec les autres I car Isouscrite à la même valeur et en plus on doit être sorti du setup !

Merci pour ton aide à venir
Olivier

Bonsoir Olivier,

J'ai tout retesté et je n'ai rien vu d'anormal.
Les groupes s'arrêtent après le caractère de CKS, par ex. "ISOUSC 20 8". C'est le terminal qui rajoute le . Il faut le régler en 9600Bds "Both NL & CR".
J'ai généré des séquences de test avec le tableur, cf. fichier ci joint. Voila ce que cela donne :

Bonjour

ISOUSC 20 8 --> Rien, normal,
ISOUSC 20 8 --> ISOUSCrite = 20 A
BASE 002633208 # --> Index base = 2633208 Wh
PTEC TH.. $ --> Rien, normal,
IINST1 12 [ --> I Phase 1 = 12 A
IINST2 15 _ --> I Phase 2 = 15 A
IINST3 2 , --> I Phase 3 = 2 A
IINST1 18 ! --> I Phase 1 = 18 A
etc.

Rappel sur le fonctionnement :

ISOUSC n'est affichée qu'une fois, mais est disponible à tout instant dans le loop() en appelant "Linky.Isousc()"
Les intensités ne sont affichées que si elles ont changé.

A ta disposition pour plus de renseignements et bonne bidouille,

Frédéric de MicroQuettas

Tests 180409.txt (149 Bytes)

En fait La moulinette excel me renvoie le mauvais caractère dans la chaine string & CRC. Peut être est ce parce que mon ordinateur utilise une version anglaise de excel, mais je ne suis pas sûr.
La moulinette marche avec lec caractères du fichier texte ... on avance
Merci pour votre aide
Olivier

Les formules de la feuille excel sont foirée parce que j'utilise une version anglaise d'excel.
Dans la première colonne du tableau j'ai remplacé =Hexdec() par =Hex2dec(). les autres je ne comprends pas et j'ai de #Name partout.
Bonne nuit

Bonjour
En fait c'est tout le tableau qui foire. Je suis sur excel pro 2013. Pourriez vous s'il vous plait m'expliquer le fonctionnement du tableau sur la feuille 1.
Merci d'avance
Olivier

Bonjour
Je n'avais pas vu que vous aviez supprimé le 0 dans IINST1 12 ==> [ alors que j'avais IINST1 012 ==> K
Hourra tout fonctionne super

Bonjour Micro Quettas
Je suis en train de finaliser le programme mais cela me prends plus de temps que prévu. Il faut aussi que j'achète un arduino Mega.
avec ce nouveau hardware je pense surveiller la tension par une mesure exterieure et avec les valeurs de I calculer la puissance apparente et la comparer à celle du compteur. L'idée est de voir de combien le linky abaisse la puissance de l'installation en considérant S=UI en prenant U=200V comme dans la doc et non la tension réelle de l'installation qui devrait se situer aux alentours de 230V.
le but est de voir de combien de puissance on perds entre un compteur traditionnel et le linky qui coupera à la puissance souscrite de XX VA
Olivier

Question : c'est le compteur ou le disjoncteur qui coupe ?
J'ai plutôt l'impression que c'est le disjoncteur.
Mais mon compteur date des années 90.

Il existe bien des fusibles de compteur mais c'est pour les coup exceptionnel et ce sont des fusibles qui fondent.