Le code à modifier dans Temperature.ino.
A partir de la ligne 41, ajout d'une initialisation a haute valeur négative et ajout de la boucle conditionnelle pour canal 0, il faut changer comme ci-dessous jusqu'à : } else if (Source_Temp[canal] == "tempExt" ...
Ensuite, ligne 870 de JS_Acceuil.h, changer la ligne: if (tempValue > -100) {
par: if (tempValue > -10000) {
pour assurer l'affichage
et la ligne 873: T_html += `<div class='item_temp_nom ce'>${nom}</div><div class='item_temp_val ce'>${Temper}°C</div>`;
par: T_html += `<div class='item_temp_nom ce'>${nom}</div><div class='item_temp_val ce'>${Temper} W</div>`;
pour afficher W à la place de oC.
Il faut déclarer une pin pour l'entrée des température et mettre le nom de la puissance dans le canal de température 0.
Attention ça marche parce qu'il n'y a pas de sonde de température interne en même temps (et donc la variable Nb_DS18B20, reste à 0 et ça ne donne pas d'erreur de lecture). Sinon, si on veut aussi une sonde de température interne il faut modifier le code. Pas plus de 10kW non plus, mais c'est facile de mettre plus.
Edit: je vois aussi qu'il y a une limitation sur les valeurs de temperatures max / min, elles ont un max de 100 pour valider les actions. Il faut donc passer la puissance en 1/10 ou 1/100W pour rester dans cette limite, si nécessaire. Je teste si la puissance est en dessous de 100W et ça marche bien avec une valeur de 100oC. Mais ça ne marche plus si je met 120oC comme consigne. Il est aussi possible d'avoir des erreur en mesurant au dela de 3276W car il y a une conversion en int16_t de la temperature (puissance) *10. Je suis bon, mon CE fait 1600W.
A partir de la ligne 41, ajout d'une initialisation a haute valeur négative et ajout de la boucle conditionnelle pour canal 0, il faut changer comme ci-dessous jusqu'à : } else if (Source_Temp[canal] == "tempExt" ...
Code :
for (int canal = 0; canal < 4; canal++) {
temperature_brute = -12700; // HP
if (Source_Temp[canal] == "tempInt") {
if (canal == 0) { // debut modif HP
TemperatureValide[canal] = 5;
temperature[canal] = PuissanceS_T-PuissanceI_T;
} else {
temperature_brute = temperDs18B20[canal];
if (temperature_brute < -50 || temperature_brute > 150) { //Invalide. Pas de capteur ou parfois mauvaise réponse
if (TemperatureValide[canal] > 0) {
TemperatureValide[canal] = TemperatureValide[canal] - 1; // Perte éventuels de quelques mesures
} else {
StockMessage("Mesure Température invalide ou pas de capteur DS18B20, canal : " + String(canal)); //Trop de pertes
temperature[canal] = temperature_brute;
tempInterneOK = false;
}
} else {
TemperatureValide[canal] = 5;
temperature[canal] = temperature_brute;
}
} // fin modif HPEnsuite, ligne 870 de JS_Acceuil.h, changer la ligne: if (tempValue > -100) {
par: if (tempValue > -10000) {
pour assurer l'affichage
et la ligne 873: T_html += `<div class='item_temp_nom ce'>${nom}</div><div class='item_temp_val ce'>${Temper}°C</div>`;
par: T_html += `<div class='item_temp_nom ce'>${nom}</div><div class='item_temp_val ce'>${Temper} W</div>`;
pour afficher W à la place de oC.
Il faut déclarer une pin pour l'entrée des température et mettre le nom de la puissance dans le canal de température 0.
Attention ça marche parce qu'il n'y a pas de sonde de température interne en même temps (et donc la variable Nb_DS18B20, reste à 0 et ça ne donne pas d'erreur de lecture). Sinon, si on veut aussi une sonde de température interne il faut modifier le code. Pas plus de 10kW non plus, mais c'est facile de mettre plus.
Edit: je vois aussi qu'il y a une limitation sur les valeurs de temperatures max / min, elles ont un max de 100 pour valider les actions. Il faut donc passer la puissance en 1/10 ou 1/100W pour rester dans cette limite, si nécessaire. Je teste si la puissance est en dessous de 100W et ça marche bien avec une valeur de 100oC. Mais ça ne marche plus si je met 120oC comme consigne. Il est aussi possible d'avoir des erreur en mesurant au dela de 3276W car il y a une conversion en int16_t de la temperature (puissance) *10. Je suis bon, mon CE fait 1600W.
