Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Optimisation partie UXIX3
#19
(16-06-2024, 12:29 PM)piamp a écrit : J'ai repris votre code et l'ai fusionné au mien, en ne lisant que les données nécessaires et en faisant les calculs en binaire, c'est parfaitement stable avec un délai de 400ms défini dans le ino principal
les mesures de conso et injection semblent fiable, je vais tester sur plusieurs jours !

Code :
// *************************************************
// * Client lecture JSY-MK-333 * Triphasé *
// * Développement initial de Pierre F (Mars 2024) *
// * update PhDV61 Juin 2024 *
// *************************************************


void Setup_JSY333() {
MySerial.setRxBufferSize(SER_BUF_SIZE);
MySerial.begin(19200, SERIAL_8N1, RXD2, TXD2); //PORT DE CONNEXION AVEC LE CAPTEUR JSY-MK-333
}

void Lecture_JSY333() {
float Tension_M1, Tension_M2, Tension_M3;
float Intensite_M1, Intensite_M2, Intensite_M3;
float PVA_M_inst1, PVA_M_inst2, PVA_M_inst3;
float PW_inst1, PW_inst2, PW_inst3;

byte Lecture333[200];
bool injection;
bool sens1, sens2, sens3;
long delta_temps = 0;

int i;
byte msg_send[] = { 0x01, 0x03, 0x01, 0x09, 0x00, 0x30, 0x94, 0x20 };
for (i = 0; i < 8; i++) {
MySerial.write(msg_send[i]);
}

int a = 0;
while (MySerial.available()) {
Lecture333[a] = MySerial.read();
a++;
}

if (a == 101) { //message complet reçu
delta_temps = (unsigned long) (millis()-Temps_precedent); // temps écoulé depuis le dernier appel
Temps_precedent=millis(); // on conserve la valeur du temps actuel pour le calcul précédent

injection = (Lecture333[86] >> 3) & 0x01; //si sens est true, injection

if (injection) {
PuissanceS_M_inst = 0;
PuissanceI_M_inst = float((Lecture333[3] << 24) + (Lecture333[4] << 16) + (Lecture333[5] << 8) + Lecture333[6]);
// PhDV61 : on considère que cette puissance active "globale" a duré "delta_temps", et on l'intègre donc pour obtenir une énergie en Wh
Energie_jour_Injectee += ((float) delta_temps / 1000 ) * ( PuissanceI_M_inst / 3600.0) ;

} else { // soutirage
PuissanceI_M_inst = 0;
PuissanceS_M_inst = float((Lecture333[3] << 24) + (Lecture333[4] << 16) + (Lecture333[5] << 8) + Lecture333[6]);
// PhDV61 : on considère que cette puissance active "globale" a duré "delta_temps", et on l'intègre donc pour obtenir pour obtenir une énergie en Wh
Energie_jour_Soutiree += ((float) delta_temps / 1000 ) * ( PuissanceS_M_inst / 3600.0) ;
}


MK333_dataBrute = "<br>Puissance active soutirée : " + String(PuissanceS_M_inst) + "W</br>";
MK333_dataBrute += "<br>Puissance active injectée : " + String(PuissanceI_M_inst) + "W</br>";
MK333_dataBrute += "<br>Energie jour nette soutirée (Linky): " + String(Energie_jour_Soutiree) + "Wh</br>";
MK333_dataBrute += "<br>Energie jour nette injectée (Linky): " + String(Energie_jour_Injectee) + "Wh</br>";
MK333_dataBrute += "<br>Données reçues : " + String(a) + "</br>";
MK333_dataBrute += "<br>Number of bytes : " + String(Lecture333[2]) + "</br>";

Pva_valide=true;
filtre_puissance();
esp_task_wdt_reset(); //Reset du Watchdog à chaque trame du JSY reçue
EnergieActiveValide = true;
if (cptLEDyellow > 30) {
cptLEDyellow = 4;
}
} else {
StockMessage("Pas tout reçu, pas traité... nombre de données : " + String(a));
}
}

Parfait.
Je suggère que vous ajoutiez un StockMessage(" heure d'arrivée message complet "+String( millis()/1000) );
pour vérifier que vous avez bien un nouveau message valide toutes les 400ms. J'ai un gros doute, car c'est ce qui se passe avec 141 data requises toutes les 600ms. Il en manque...

Sinon, un octet c'est 8 bits, et sur une ligne série, il commence souvent par un "start bit" et se termine par un "stop bit" soit 10 bits en tout.
A 19200 bauds, 192 octets (= 1920 bits) prennent environ 100 ms. Soit un octet toutes les 0.5ms environ. C'est très très long par rapport à la capacité d'un ESP32 à plusieurs dizaines de MHz.
A 9600 bauds, c'est 200ms, soit bien inférieur aux requêtes chaque 600ms. Et pourtant, il manque des réponses aux requêtes lorsqu'on questionne plus vite. Donc ce n'est peut-être pas 1s comme dit la doc, mais peut-être que le 1s est "garanti", alors que toute requête plus rapide est servie "seulement si c'est possible" par rapport à ce qu'est entrain de faire le uC du JSY-MK-333 à ce moment-là. en tout cas, c'est ce que j'ai constaté.
Plus j'essaie de m'écarter des 1000ms, plus il manque des messages ( avec a=0 d'ailleurs, comme si le JSY-MK-333 ignorait purement et simplement la requête. D'ailleurs, si on ne relance pas à nouveau une requête, on ne recevra alors plus rien en réponse comme je l'ai testé).
Cdlt,
V12.0 modifiée récurrence d'interrogation serveurs, RTE, et code UxIx3. 1 serveur RMS UxIx3, 1 client Triac CE + 1 client SSR CE.  1 client SSR sur CE tri sur 1 serveur Linky réf. CACSI. Variateurs de fréquence sur Piscine et Spa.
6 panneaux (2 SO 2 S, 2 SE ) 425Wc produisent 13kWh de jour actuellement. 
Répondre


Messages dans ce sujet
Optimisation partie UXIX3 - par piamp - 14-06-2024, 04:54 PM
RE: Optimisation partie UXIX3 - par PhDV61 - 14-06-2024, 11:04 PM
RE: Optimisation partie UXIX3 - par piamp - 15-06-2024, 10:29 AM
RE: Optimisation partie UXIX3 - par PhDV61 - 15-06-2024, 11:19 AM
RE: Optimisation partie UXIX3 - par piamp - 15-06-2024, 12:18 PM
RE: Optimisation partie UXIX3 - par PhDV61 - 15-06-2024, 12:47 PM
RE: Optimisation partie UXIX3 - par PhDV61 - 15-06-2024, 12:37 PM
RE: Optimisation partie UXIX3 - par piamp - 15-06-2024, 12:42 PM
RE: Optimisation partie UXIX3 - par PhDV61 - 15-06-2024, 03:31 PM
RE: Optimisation partie UXIX3 - par piamp - 15-06-2024, 01:00 PM
RE: Optimisation partie UXIX3 - par PhDV61 - 15-06-2024, 02:48 PM
RE: Optimisation partie UXIX3 - par piamp - 15-06-2024, 03:26 PM
RE: Optimisation partie UXIX3 - par piamp - 15-06-2024, 04:46 PM
RE: Optimisation partie UXIX3 - par PhDV61 - 15-06-2024, 07:58 PM
RE: Optimisation partie UXIX3 - par piamp - 15-06-2024, 06:02 PM
RE: Optimisation partie UXIX3 - par PhDV61 - 16-06-2024, 08:08 AM
RE: Optimisation partie UXIX3 - par piamp - 16-06-2024, 12:29 PM
RE: Optimisation partie UXIX3 - par PhDV61 - 16-06-2024, 03:22 PM
RE: Optimisation partie UXIX3 - par Alain_C38 - 16-06-2024, 01:43 PM
RE: Optimisation partie UXIX3 - par PhDV61 - 16-06-2024, 06:17 PM
RE: Optimisation partie UXIX3 - par piamp - 16-06-2024, 09:02 PM
RE: Optimisation partie UXIX3 - par PhDV61 - 17-06-2024, 06:29 PM
RE: Optimisation partie UXIX3 - par F1ATB - 18-06-2024, 04:16 AM
RE: Optimisation partie UXIX3 - par PhDV61 - 18-06-2024, 06:59 AM
RE: Optimisation partie UXIX3 - par piamp - 19-06-2024, 10:22 AM
RE: Optimisation partie UXIX3 - par PhDV61 - 19-06-2024, 12:03 PM
RE: Optimisation partie UXIX3 - par piamp - 19-06-2024, 12:27 PM
RE: Optimisation partie UXIX3 - par PhDV61 - 19-06-2024, 01:17 PM

Atteindre :


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