Messages : 8
Sujets : 1
Inscription : Mar 2025
Réputation :
0
bonjour, nouveau et débutant, j'ai réussi à installer la version lecture linky v10.1 sur mon esp32 vroom. le linky est en mode standard ( j(ai modifié la vitesse du port série pour adapté le code) je voudrai avoir accés à l'étiquette DATE pour décoder la date , le jour ..... j'ai chercher , j'ai écrit pas mal de code, mais là je sèche. quelqu'un a t-il déjà réussi cela ?
ps j'ai écrit un code pour convertir la date unix en "arduino" mais apparemment c'est pas de l'unix?
merci pour votre aide.
Messages : 45
Sujets : 3
Inscription : Nov 2024
Réputation :
0
if (code.indexOf("DATE")>0){
String test= code.substring(code.indexOf("DATE") + 0);
DATELinky= test.substring(6, 20);
anneelinky="20"+test.substring(6, 8);
moislinky=test.substring(8, 10);
jourlinky=test.substring(10, 12);
heurelinky=test.substring(12, 14);
minutelinky=test.substring(14, 16);
secondelinky=test.substring(16, 18);}
6800W pV
un triac sur résistance cumulus eau sanitaire
2 relais SSR sur 2 résistances pour cumulus chauffage
et 1 relais SSR sur radiateur en on/off
4 DS18b20 plus 4 thermistances
2 JSY-MK-194 soit 4 ampèremètre
8 relais sur 74hc595 contrôle, chaudière, planché, vanne, circulateur.....
Messages : 8
Sujets : 1
Inscription : Mar 2025
Réputation :
0
29-03-2025, 08:38 PM
(Modification du message : 29-03-2025, 08:45 PM par tictic tac.)
bonsoir, merci pour votre retour. voila ce que j'ai sur le décodage linky , c'est la page html.
je vais essayer vos propositions. merci
https://www.dropbox.com/scl/fi/5zibhrhc5...yq7et&dl=0
Messages : 8
Sujets : 1
Inscription : Mar 2025
Réputation :
0
29-03-2025, 10:05 PM
(Modification du message : 29-03-2025, 10:09 PM par tictic tac.)
voilà j'ai mis ce bout de code dans la boucle lecture linky, ( merci cdlnd) ici:
Code : DataRawLinky[IdxDataRawLinky] = char(13);
IdxDataRawLinky = (IdxDataRawLinky + 1) % 1000;
if (code.indexOf("IINST") == 0) {
Iinst = val.toFloat();
if (Imoy == 0) { Imoy = Iinst; }
Imoy = (Iinst + 149 * Imoy) / 150; //moyenne courant efficace 5 dernieres minutes environ
}
if (code.indexOf("PAPP") == 0) {
Papp = val.toFloat();
if (PappM == 0) { PappM = Papp; }
PappM = (Papp + 149 * PappM) / 150; //moyenne puissance apparente 5 dernieres minutes environ
}
if (code.indexOf("HCHP") == 0 || code.indexOf("BASE") == 0) {
HCHP = val.toInt();
}
if (code.indexOf("HCHC") == 0) {
HCHC = val.toInt();
}
if (code.indexOf("DATE") > 0) {
String test = code.substring(code.indexOf("DATE") + 0);
DATELinky = test.substring(6, 20);
anneelinky = "20" + test.substring(6, 8);
moislinky = test.substring(8, 10);
jourlinky = test.substring(10, 12);
heurelinky = test.substring(12, 14);
minutelinky = test.substring(14, 16);
secondelinky = test.substring(16, 18);
Serial.print("DATE*****************************");
Serial.println(anneelinky);
Serial.print(moislinky);
Serial.println(jourlinky);
Serial.print(heurelinky);
Serial.print(minutelinky);
Serial.println(secondelinky);
}
}
break;
j'ai rien comme si l'étiquette date était vide , alors que ce n'est pas le cas ( je l'ai sur la page html). j'ai retourné le problème dans tout les sens, j'ai même change le signe supérieur en différent ( j'ai juste le chiffre 20 qui est ajouté pour les années). merci pour votre lecture.
Messages : 8
Sujets : 1
Inscription : Mar 2025
Réputation :
0
30-03-2025, 08:51 AM
(Modification du message : 30-03-2025, 08:57 AM par tictic tac.)
bonjour, je continue mon exploration, je m’aperçois que mes graphes sont aussi vide ( comme ils ne m'intéresse pas pour l'instant, je pensai qu'il fallait les actionner) donc j'ai peut être un soucis ailleurs. j'ai copié le code lecture linky mode historique v1.10 tel quel, j'ai juste modifié la vitesse de réception du serial 2. je reçoit la trame dans le serial moniteur.dans la page hmtl en bas. Je cale! merci de votre lecture.
https://www.dropbox.com/scl/fi/77wznnmfs...ase3w&dl=0
Messages : 59
Sujets : 0
Inscription : Jun 2024
Réputation :
4
(30-03-2025, 08:51 AM)tictic tac a écrit : bonjour, je continue mon exploration, je m’aperçois que mes graphes sont aussi vide ( comme ils ne m'intéresse pas pour l'instant, je pensai qu'il fallait les actionner) donc j'ai peut être un soucis ailleurs. j'ai copié le code lecture linky mode historique v1.10 tel quel, j'ai juste modifié la vitesse de réception du serial 2. je reçoit la trame dans le serial moniteur.dans la page hmtl en bas. Je cale! merci de votre lecture.
https://www.dropbox.com/scl/fi/77wznnmfs...ase3w&dl=0
Bonjour
le prog d'André est spécifique au mode historique, il y a quelques autre modif a faire en plus du simple changement de vitesse port série
entre autre :
en mode standard, le séparateur n'est plus un espace mais une tabulation et certaine ligne comporte aussi un champ représentant le moment de l'événement
les étiquettes mode historique ne sont plus les même en mode standard
https://www.enedis.fr/media/2035/download
Merci André  ,
Routeur V14.21 (since V2.01) / 1xESP32 (IP fixe) / Source UxI / 5 actions
Panneaux 1680Wc
1 Triac : ECS 2000W
1 SSR (multi) : ECS 1800W
1 SSR (On-Off) : Circulateur plancher chauffant eau 50W
1 SSR (multi) : circuit d'eau 1500W
1 SSR (multi) : Ultime 2000W
Messages : 8
Sujets : 1
Inscription : Mar 2025
Réputation :
0
bonjour, comme me le faisait remarquer michy ( c'est pas possible il y trop de changement a faire). je suis donc parti sur la version "routeur solaire V3.11 linky" j'ai pas besoin de plus car je n'ai pas de prod solaire.
j'ai réussi à obtenir la date et l'heure. je suis bloqué sur l'étiquette STGE, j'ai besoin de récupérer les bit 26 et 27. seulement c'est un String, quand je le transforme en INT ça passe pas car dedans il y des caractères (STGE = 012A4401) la fonction Val.toInt bloque. j'ai essayé pas mal de chose. mais la je séche.
merci de votre aide.
ps je récupére le STGE ave ça:
Code : if (code.indexOf("STGE") == 0) {
Serial.println ("****STGE******");
unsigned long Decod_Couleur;
int Couleur;
Decod_Couleur=val.toInt();
Serial.println (Decod_Couleur);
Messages : 45
Sujets : 3
Inscription : Nov 2024
Réputation :
0
Hier, 09:40 AM
(Modification du message : Hier, 09:53 AM par cdlnd.)
Bonjour,
retire toint() et mais ta variable en String
if (code.indexOf("STGE") == 0) {
Serial.println ("****STGE******");
String Decod_Couleur;
int Couleur;
Decod_Couleur=val;
Serial.println (Decod_Couleur);
Re
que veux tu faire réellement pourquoi utilisé le RMS si ta pas de production donc pas besoin de router?
tu veux juste récupérer les infos du linky avec le tic afin de les voir sur une pageweb?
6800W pV
un triac sur résistance cumulus eau sanitaire
2 relais SSR sur 2 résistances pour cumulus chauffage
et 1 relais SSR sur radiateur en on/off
4 DS18b20 plus 4 thermistances
2 JSY-MK-194 soit 4 ampèremètre
8 relais sur 74hc595 contrôle, chaudière, planché, vanne, circulateur.....
Messages : 8
Sujets : 1
Inscription : Mar 2025
Réputation :
0
bonjour, merci cdlnd. mon objectif c'est en effet d'afficher les infos modes standard du linky sur une page html.Ensuite pouvoir faire du délestage ( en heure creuse ( machine a laver, sèche linge, lave vaisselle et bientôt une pompe a chaleur).
pour en revenir sur mon morceau de code. Cela me donne bien ce que je retrouve sur les infos du linky. mais je voudrais pouvoir lire les bits de cette étiquette pour savoir qu'elle est la couleur du jour, de lendemain. merci pour votre lecture.
Messages : 59
Sujets : 0
Inscription : Jun 2024
Réputation :
4
Hier, 11:15 AM
(Modification du message : Hier, 12:38 PM par michy.)
(Hier, 10:06 AM)tictic tac a écrit : je voudrais pouvoir lire les bits de cette étiquette pour savoir qu'elle est la couleur du jour, de lendemain. merci pour votre lecture.
Bonjour,
en partant de l’hypothèse que STGE est récupérer dans un variable String => String STGE = "012A4401";
quelques déclarations variables et constantes pour extraire les informations
Code : uint32_t statusReg=0;
byte contact = 0;
byte depassement = 0;
byte indexActif = 0;
byte colDuJour = 0;
byte colDemain = 0;
#define UNKN 0b00
#define BLEU 0b01
#define BLAN 0b10
#define ROUG 0b11
char tarifTempo[6][9] = {"Bleu HC","Bleu HP", "Blanc HC", "Blanc HP","Rouge HC","Rouge HP"};
char couleur[4][5] = {"UNKN","BLEU","BLAN","ROUG"};
Code : statusReg = strtoul(STGE.c_str(),NULL,16); // converti la chaine d'un texte hexa en numérique
contact = statusReg & 0b1; // le premier bit du registre donne l'état du contact sec (période creuse / période pleine)
depassement = (statusReg >> 7) & 0b1; // le bit 7 du registre donne l'information du dépassement de la puissance souscrite
indexActif = (statusReg >> 10) & 0b1111; // les bits 10, 11, 12 et 13 donne l'index actif (comptage énergie)
// 0b0000 = Index 1 = tempo heure creuse tarif bleu
// 0b0001 = Index 2 = tempo heure pleine tarif bleu
// 0b0010 = Index 3 = tempo heure creuse tarif blanc
// 0b0011 = Index 4 = tempo heure pleine tarif blanc
// 0b0100 = Index 5 = tempo heure creuse tarif rouge
// 0b0101 = Index 6 = tempo heure pleine tarif rouge
colDuJour = (statusReg >> 24) & 0b11; // les bits 24 et 25 donne la couleur du jour
colDemain = (statusReg >> 26) & 0b11; // les bits 26 et 27 donne la couleur de demain
Serial.println(statusReg, BIN);
Serial.printf("Le contact C1 C2 est : %s\n", (contact == 1 ? "ouvert" : "fermé"));
Serial.printf("En ce moment, la puissance soutirée%sdépasse%sle contrat souscrit\n",(depassement ? " ": " ne "),(depassement ? " ": " pas "));
Serial.printf("Tarif en cours : %s\n",tarifTempo[indexActif]);
Serial.printf("Couleur du jour : %s\n",couleur[colDuJour]);
Serial.printf("Couleur de demain : %s\n", couleur[colDemain]);
Merci André  ,
Routeur V14.21 (since V2.01) / 1xESP32 (IP fixe) / Source UxI / 5 actions
Panneaux 1680Wc
1 Triac : ECS 2000W
1 SSR (multi) : ECS 1800W
1 SSR (On-Off) : Circulateur plancher chauffant eau 50W
1 SSR (multi) : circuit d'eau 1500W
1 SSR (multi) : Ultime 2000W
|