Bonjour à tous.
Comme bien d’autres avant moi, je me suis attelé à la recherche d’une solution de commande de la grande vitesse d’une VMC en fonction du taux d’humidité d’une salle d’eau au moment d’une douche. Le net regorge de solutions plus ou moins simplistes : par exemple déclenchement de la GV au-delà d’un certain seuil du taux d’humidité qui peut être très variable selon les conditions météorologiques du moment…
Ma première solution s’est avérée proche d’une « usine à gaz » : détection de présence dans la pièce, stockage de la valeur du taux d’humidité dans un périphérique, attente d’un délai, stockage de la nouvelle valeur du taux d’humidité, soustraction de l’ancienne valeur à la nouvelle et comparaison du résultat à un seuil et déclenchement de la GV le cas échéant. Ouf… enfin terminé ! Mais cela fonctionnait.
Je suis tombé un jour sur le topic suivant : http://www.abavala.com/creer-un-capteur-de-tendances-dans-une-domotique-eedomus/ (merci Hervé), présent aussi dans les guides pratiques de la documentation eedomus. Immédiatement, j’ai compris que le script en php présenté, reprenant la même logique, allait me simplifier les choses en le modifiant légèrement.
Toutefois, pour arriver aux valeurs hausse, stable ou basse, le test conditionnel porte sur la soustraction de l’ancienne valeur à la nouvelle. Or, vous avez sûrement remarqué les sauts aléatoires (au moins ± 1 % - initiés par la limite de résolution des capteurs) du pourcentage d’humidité donné par les sondes se traduisant par des pics ou des creux resserrés sur les courbes. Pour gommer ces variations aléatoires, j’ai simplement fait intervenir l’écart entre l’ancienne et la nouvelle valeur que je compare à 3 pour la hausse et à -1 pour la baisse (ou autres valeurs au choix). En ce qui concerne la GV de la VMC, seule la tendance à la hausse a un intérêt.
Partie du script original :
// tendance par rapport à la mesure précédente
$last_value = loadVariable('last_value'.$id);
if ($value > $last_value)
{
$trend = +1;
}
else if ($value < $last_value)
{
$trend = -1;
}
else
{
$trend = 0;
}
Modifications apportées en rouge :
// tendance par rapport à la mesure précédente
$last_value = loadVariable('last_value'.$id);
$ecart = $value - $last_value ;
if ($ecart > 3)
{
$trend = +1;
}
else if ($ecart < -1)
{
$trend = -1;
}
else
{
$trend = 0;
}
Dans la pratique, il faut ajuster cette valeur d’écart à la hausse, estimée à 3, et la durée de calcul – 4 minutes dans mon cas – pour s’adapter à sa propre situation (volume du local, durée de la douche…). Cette valeur de 3 pourrait être passée en variable (pour faciliter son estimation empirique, au lieu de revenir dans le script pour la modifier), un emplacement ([VAR3]) est disponible dans le descriptif du capteur http, en ajustant le script bien sûr.
Si ces quelques lignes peuvent aider certains d’entre vous, j’en serais très heureux. A+.