(02-04-2025, 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

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