Bonjour et merci de te pencher sur mes soucis.
Que donnent les infos d'ocupation mémoire (code et ram) à la fin de la compilation ?
Voici un sketch réduit pour tester le traitement de strings :
float ts = 20.2; //Température actuelle Salon
float tp = 18.2; //Température actuelle Ch. Parents
float te = 18.7; //Température actuelle Ch. Eva
float tv = 17.5; //Température actuelle Ch. Victor
float cs = 21; //Consigne Température actuelle Salon
float cp = 18.5; //Consigne Température actuelle Ch. Parents
float ce = 15; //Consigne Température actuelle Ch. Eva
float cv = 15; //Consigne Température actuelle Ch. Victor
int tex = 0; //Température extérieure
int tch = 0; //Température Chaudière
int tct = 0; //Température circuit
int tec = 0; //Température ECS
int alarm = 0; //Numéro d'alarme
int cons = 0; //Consommation session en temps de vis (s)
int all = 0; //Temps d'allumage de la session ou maxi si pas en chauffe
int fum = 0; //Température de fumée actuelle ou maxi si pas en chauffe
int ses = 0; //Nombre de sessions de la journée
int state = 0; //Etat du graphe de chauffe
int Date = 0; //Graphe d'envoi de date
int Mex = 0;
int mex = 0;
int Mfu = 0;
int Mal = 0;
bool ecs = 0; //Etat de besoin d'ECS
bool hiver = 0; //Mode hiver
char local =' '; //Lettre du local concerné
char c;
String etat = "Chaudière prête"; //chaîne de l'état (en clair)
String Rtemp = "203182197167"; // températures réelles locaux
String Chaud = "65353600331481236532125512"; // état chaudière
String TimeJ = "135080090090"; // heures de début de jour ASCII 4 x 3 caractères
String TimeN = "230230225225"; // heures de début de nuit ASCII 4 x 3 caractères
String TempJ = "210150150150"; // températures de jour ASCII 4 x 3 caractères
String TempN = "195185150150"; // températures de nuit ASCII 4 x 3 caractères
String consEnCours = "210150150150150"; // Consignes appliquées en temps réel
String chaufEnCours = "0101"; // Demandes de chauffage en temps réel
String Msg;
String stat ="30/8/2021 4.29 16 21 182 171 12 \r"; // chaîne contenu du fichier Log.txt
int DJS; // heure de début jour Salon ASCII 3 caractères
int DJP; // heure de début jour ChP ASCII 3 caractères
int DJE; // heure de début jour ChE ASCII 3 caractères
int DJV; // heure de début jour ChV ASCII 3 caractères
int DNS; // heure de début nuit Salon ASCII 3 caractères
int DNP; // heure de début nuit ChP ASCII 3 caractères
int DNE; // heure de début nuit ChE ASCII 3 caractères
int DNV; // heure de début nuit ChV ASCII 3 caractères
int djs; // heure de début jour Salon ASCII 3 caractères
int djp; // heure de début jour ChP ASCII 3 caractères
int dje; // heure de début jour ChE ASCII 3 caractères
int djv; // heure de début jour ChV ASCII 3 caractères
int dns; // heure de début nuit Salon ASCII 3 caractères
int dnp; // heure de début nuit ChP ASCII 3 caractères
int dne; // heure de début nuit ChE ASCII 3 caractères
int dnv; // heure de début nuit ChV ASCII 3 caractères
int affich = 0;
bool sal; // Chauffe en cours salon
bool par; // Chauffe en cours Ch. Parents
bool eva; // Chauffe en cours Ch. Eva
bool vic; // Chauffe en cours Ch. Victor
float TJS; // Consigne température de jour Salon ASCII 3 caractères
float TJP; // Consigne température de jour CHP ASCII 3 caractères
float TJE; // Consigne température de jour ChE ASCII 3 caractères
float TJV; // Consigne température de jour ChV ASCII 3 caractères
float TNS; // Consigne température de nuit Salon ASCII 3 caractères
float TNP; // Consigne température de nuit ChP ASCII 3 caractères
float TNE; // Consigne température de nuit ChP ASCII 3 caractères
float TNV; // Consigne température de nuit ChV ASCII 3 caractères
float tjs; // Consigne température de jour Salon ASCII 3 caractères
float tjp; // Consigne température de jour CHP ASCII 3 caractères
float tje; // Consigne température de jour ChE ASCII 3 caractères
float tjv; // Consigne température de jour ChV ASCII 3 caractères
float tns; // Consigne température de nuit Salon ASCII 3 caractères
float tnp; // Consigne température de nuit ChP ASCII 3 caractères
float tne; // Consigne température de nuit ChP ASCII 3 caractères
float tnv; // Consigne température de nuit ChV ASCII 3 caractères
void setup() {
Serial.begin(9600);
}
void loop() {
//****************************************** Récupération valeurs chaudière via ventilation ***********************************
while ((c = Serial.read()) > '\n') Msg += (char) c;
if (c == '\n')
{if (Msg.substring(0,3).equals("tch"))
{ tch = (int)(Msg.substring(3,5)).toInt();
Serial.print("Temp Chaudiere :");
Serial.println(tch);
Msg = ""; }
if (Msg.substring(0,3).equals("tct"))
{ tct = (int)(Msg.substring(3,5)).toInt();
Serial.print("Temp Circuit :");
Serial.println(tct);
Msg = ""; }
if (Msg.substring(0,3).equals("tex"))
{ tex = ((int)(Msg.substring(3,5)).toInt())-20;
Serial.print("Temp Ext :");
Serial.println(tex);
Msg = ""; }
if (Msg.substring(0,3).equals("ecs"))
{ ecs = (bool)(Msg.substring(3,4)).toInt();
Serial.print("Besoin d'ECS :");
Serial.println(ecs);
Msg = ""; }
if (Msg.substring(0,5).equals("alarm"))
{ alarm = (int)(Msg.substring(5,6)).toInt();
Serial.print("Alarme :");
Serial.println(alarm);
Msg = ""; }
if (Msg.substring(0,5).equals("state"))
{ state = ((int)(Msg.substring(5,7)).toInt())-10;
Serial.print("Etat :");
Serial.println(state);
Msg = ""; }
if (Msg.substring(0,5).equals("hiver"))
{ hiver = (bool)(Msg.substring(5,6)).toInt();
Msg = "";
Serial.print("Hiver :");
Serial.println(hiver);}
if (Msg.substring(0,3).equals("tec"))
{ tec = (int)(Msg.substring(3,5)).toInt();
Serial.print("Temp ECS :");
Serial.println(tec);
Msg = ""; }
if (Msg.substring(0,4).equals("cons"))
{ cons = ((int)(Msg.substring(4,9)).toInt())-10000;
Serial.print("Consommation :");
Serial.println(cons);
Msg = ""; }
if (Msg.substring(0,3).equals("fum"))
{ fum = ((int)(Msg.substring(3,6)).toInt())-100;
Serial.print("Temp Fumee :");
Serial.println(fum);
Msg = "";}
if (Msg.substring(0,3).equals("all"))
{ all = ((int)(Msg.substring(3,5)).toInt())-100;
Serial.print("Temps d'Allumage :");
Serial.println(all);
Msg = ""; }
if (Msg.substring(0,3).equals("ses"))
{ ses = ((int)(Msg.substring(3,5)).toInt())-10;
Serial.print("Nb Sessions :");
Serial.println(ses);
Msg = ""; } } }
Ce sketch en compilation me donne ceci :
Le croquis utilise 15880 octets (6%) de l'espace de stockage de programmes. Le maximum est de 262144 octets.
Les variables globales utilisent 2756 octets (8%) de mémoire dynamique, ce qui laisse 30012 octets pour les variables locales. Le maximum est de 32768 octets.
Une fois téléchargé, impossible d'ouvrir le moniteur série ni de fermer l'IDE. Seule issue : reset du MKR et là l'IDE se ferme tout seul...
La tendance, dès, qu'il est question de WIFi sous IDE Arduino, consiste à prendre une des diverses cartes trournant exclusivement autour d'un ESP32, parfois encore d'un ESP8266
J'ai effectivement l'intention de creuser du côté du ESP8266 que j'ai sous la main, en espérant trouver plus de retours avec ce "vieux" module
Tu es donc prêt à piocher en dehors du catalogue de la 'boutique Arduino' pour trouver une carte adaptée aux besoins !!
Non et oui, j'ai eu recours à ces modules pour traiter l'animation sonore de mon modèle réduit de moteur diesel en qualité CD. Ils avaient tout pour faire, et ça donne ça :
Avec un ESP32 tu peux, dans la console, avoir des infos sur le plantage (état du processeur, fonction ayant déclenché le plantage...)
Le MKR Wifi 1010 embarque un ESP32 géré par la librairie WIFININA, mais je ne sais pas si je peux "enjamber" cette lib en utilisant celles spécifiques au ESP 32 ... Qu'en penses-tu ?