From e5a7dcd51c8e1849f00144920f434a0ad3956b13 Mon Sep 17 00:00:00 2001 From: Nagoydede Date: Wed, 30 Apr 2025 00:06:33 +0200 Subject: [PATCH] add new parameters CCANS and CCAIN --- tic.cpp | 9 +++++---- tic.h | 10 ++++++---- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/tic.cpp b/tic.cpp index 0f649c6..f2ebd07 100644 --- a/tic.cpp +++ b/tic.cpp @@ -156,14 +156,15 @@ static void processTrame(String &data) { } // If a match is found, update the corresponding TicValues entry if the group confirms the checksum if (t < NB_ETIQUETTE) { - //If there is a value update.... + //If there is a value update or an horodate change, the value is identified as "updated" if (TicValues[t].value.compareTo(gd.value) != 0 || TicValues[t].horodate.compareTo(gd.horodate) != 0) { - //There is some noise on instantaneous value, filter - if (SelectedEtiquette[t] == "SINSTS" || SelectedEtiquette[t] == "SINSTS1" || SelectedEtiquette[t] == "SINSTS2" || SelectedEtiquette[t] == "SINSTS3") { + //There is some noise on instantaneous values, make a basic filter. Also helps to reduce MQTT load + if (SelectedEtiquette[t] == "SINSTS" || SelectedEtiquette[t] == "SINSTS1" || SelectedEtiquette[t] == "SINSTS2" || SelectedEtiquette[t] == "SINSTS3" | SelectedEtiquette[t] == "SINSTI") { int oldval = TicValues[t].value.toInt(); int newcal = (gd.value.toInt() + oldval) / 2; //there is a significant change, so update - if (newcal < oldval * 0.92 || newcal > oldval * 1.02) { + //consider a change if delta is > 2% + if (newcal < oldval * 0.98 || newcal > oldval * 1.02) { gd.updated = true; TicValues[t] = gd; } else { diff --git a/tic.h b/tic.h index 8fa97ce..9f10e52 100644 --- a/tic.h +++ b/tic.h @@ -113,9 +113,9 @@ union RegistreStatus { }; const static String SelectedEtiquette[NB_ETIQUETTE] = { - "ADSC", // Adresse du compteur + //"ADSC", // Adresse du compteur //"DATE", // Date et heure courantes - "NGTF", // Numéro de gestionnaire de réseau de transport + //"NGTF", // Numéro de gestionnaire de réseau de transport "LTARF", // Libellé du tarif en cours "EAST", // Énergie active soutirée totale "EASF01", "EASF02", "EASF03", "EASF04", // Énergie active soutirée par période tarifaire @@ -134,8 +134,9 @@ const static String SelectedEtiquette[NB_ETIQUETTE] = { "NJOURF", "NJOURF+1", "PJOURF+1", // Couleur du jour et du lendemain "MSG1", "MSG2", // Messages d'information "PPOINTE", // Préavis de pointe mobile - "SMAXSN", "SMAXSN1", "SMAXSN2", "SMAXSN3", //Puissance app max soutiree - "SMAXIN" //Puissance app max injectée + "SMAXSN", "SMAXSN1", "SMAXSN2", "SMAXSN3", //Puissance app max soutiree + "SMAXIN", //Puissance app max injectée + "CCASN", "CCAIN" // point de la courbe de charge soustirée / injectée }; // Tableau pour stocker les valeurs des groupes TIC identifiés @@ -166,6 +167,7 @@ const static String kPointeMobile[4] = { "no", "PM1", "PM2", "PM3" }; void readTicPort(); String ticValuesAsJson(); String ticBasicValuesAsJson(); +// Prototypes des fonctions pour envoyer les infos MQTT void mqttPublish(PubSubClient *mqttclient); void mqttForcePublish(PubSubClient *mqttclient); #endif \ No newline at end of file