Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
decodage date en mode standard
#10
(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é Smile ,
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
Répondre


Messages dans ce sujet
decodage date en mode standard - par tictic tac - 29-03-2025, 04:05 PM
RE: decodage date en mode standard - par cdlnd - 29-03-2025, 08:05 PM
RE: decodage date en mode standard - par tictic tac - 29-03-2025, 08:38 PM
RE: decodage date en mode standard - par tictic tac - 29-03-2025, 10:05 PM
RE: decodage date en mode standard - par tictic tac - 30-03-2025, 08:51 AM
RE: decodage date en mode standard - par michy - 30-03-2025, 08:46 PM
RE: decodage date en mode standard - par tictic tac - 02-04-2025, 08:44 AM
RE: decodage date en mode standard - par cdlnd - 02-04-2025, 09:40 AM
RE: decodage date en mode standard - par tictic tac - 02-04-2025, 10:06 AM
RE: decodage date en mode standard - par michy - 02-04-2025, 11:15 AM
RE: decodage date en mode standard - par tictic tac - 02-04-2025, 12:49 PM
RE: decodage date en mode standard - par michy - 02-04-2025, 01:40 PM
RE: decodage date en mode standard - par tictic tac - 02-04-2025, 02:42 PM

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)