Aidez nous ! Projet - Gestion domotique

Yep!

tu n'as pas défini tes variables

Il s'agit plus de verbaliser des idées que de donner un code complet et précis.

Les variables 'regulation' et 'seuil' sont respectivement, une valeur fixe déterminant la température de chauffe maximale à T°+regulation ou T°+0.8 par exemple, et une consigne minimale d'enclenchement de la chauffe, valeur évoluant au rythme des changements de mode de fonctionnement (confort, eco, ...).

Le problème de suivre la courbe est que l'on ne peut éviter des erreurs de lecture de la sonde. Déterminer la tendance en énumérant et comparant des moyennes, fussent-elles lissées ou non, conduit indubitablement à accepter une proportion d'erreurs.
La méthode de rejeter les extremums, comme je l'ai déjà dit, conduit à refuser une population qui peut être viable ou pas, et impacte directement sur la réactivité du processus de décision.

J'ai pour ma part rejeté le principe de suivre la courbe avec une comparaison de moyenne et m'oriente plutôt sur une methode se basant sur l'écartement entre le sommet de la courbe et la température mesurée. L'avantage principale est que l'on se rapproche du temps réel et, de plus, cette solution me semble universelle.

EDIT1:
Mon raisonnement :
Une moyenne incluera forcément des erreurs de lecture, qu'elles soient uniques ou multiples, la tendance sera faussée ou véritable. Il faut nécessairement la confirmer avant de dire au système, je suis en distribution ou en perdition de calories.
La principale composante est la sonde de température, j'utilise une DS18B20 qui, à une résolution de 12 bits, variera de +/- 0.06 (arrondi).
Si mon besoin est davoir au moins deux confirmations, cela me permet de dire qu'il me faut 2x0.06 °C de variation, soit 0.12 °C, pour conclure de l'état de ma courbe.
Cette variation doit être comparée à une valeur fixe ou déterminée. Le sommet de la courbe s'impose d'elle même dans cette optique.
L'interêt de déterminer le sommet de la courbe est qu'elle prendra de facto aussi bien la distribution active (en cours de chauffe) que la distribution passive (chauffage à l'arrêt).
Une fois que la coube commencera à s'infléchir, l'ecart grandira, il sera soit nul soit strictement positif.

Il faut que je reflechisse désormais à voir comment articuler cette méthode avec différents mode de fonctionnement et déterminer les seuils de décision, dont :

  • Si la température est sous la consigne : il faut être plus réactif = ecart plus faible.
  • Comment interpréter les apports calorifiques dû à l'ensoleillement par exemple.
  • Determiner un gain en mode confort uniquement ?

Tres simplement :

float HYSTERESIS = 0.2;
float sommetCourbe, ecart;

if (temperature != DEVICE_DISCONNECTED) {
		
		sommetCourbe = max(sommetCourbe, temperature);
		ecart = (sommetCourbe - temperature);
		
		if (ecart >= HYSTERESIS) { perdition = true; }
		else { perdition = false; }
	}
if ((temperature < consigne_courante) && (perdition == true)) { 
		chauffage = "on";
		if (chauffage =! chauffage) { sommetCourbe = 0.0; }
	}

@+

Zoroastre.