Forum eedomus
http://forum.eedomus.fr/

[Script] Filtration piscine
http://forum.eedomus.fr/viewtopic.php?f=50&t=7340
Page 1 sur 1
Auteur:  Herbert [ 20 Août 2018 12:15 ]
Sujet du message:  [Script] Filtration piscine

Si vous êtes l’heureux propriétaire de l’une des 2 millions de piscines recensées en France, peut-être avez-vous une idée du coût de votre système de filtration ? Sinon, multipliez simplement la puissance nominale de votre pompe (en kilowatts) par la durée annuelle de filtration (en heures) puis par le tarif de votre fournisseur d’électricité : surpris ? D’où l’importance de filtrer ni trop ni trop peu pour assurer la qualité de votre eau, limiter votre facture et faire un geste pour la planète … [avant cette prise de conscience, j’ajustais mon programmateur mécanique à cliquets péniblement 2 fois l’an … et encore].
Si vous êtes convaincu, voici une proposition : vous aurez besoin d’un peu de matériel domotique, d’une formule pour calculer quotidiennement la durée optimale, de trois petits scripts et de quelques règles d’automatisation.

J’utilise un micromodule QUBINO 1 Relais [ZMNHAD1] avec sa sonde de température DS18B20 (étanche) : remplacer le programmateur mécanique par le micromodule (par sécurité, je l’ai connecté AVANT le relais du moteur et je ne profite donc pas de la fonction de mesure de consommation). Connecter la sonde de température, et la placer dans l’eau ; chez moi le local est déporté, j’ai percé un petit trou dans le retour des skimmers que j’ai ensuite colmaté avec un produit ad’hoc [on devrait aussi pouvoir bricoler quelque chose avec un collier et porte-sonde pH].

Lorsque la filtration est arrêtée, on fait circuler l’eau toutes les heures pendant 2 minutes (règle + macro) afin de mesurer sa température réelle (et non pas celle du local).
On calcule la moyenne sur 24 heures (par pas de une heure) que l’on stocke sur un périphérique virtuel de type « état - nombre décimal » avec le petit script suivant :
Code : Tout sélectionner
<?
/* Calcul de la température moyenne de l'eau sur 24 heures  :
/doit être lancé toutes les heures, et précédé d'une circulation
d'eau pendant 2 minutes, si la filtration est arrêtée */

// Périphériques
$idperiph1 = xxxxxx  ; // Qubino Température H2O - A REMPLACER
$idperiph2 = xxxxxx  ; // Etat température H2O - A REMPLACER
$tableau1 = getValue($idperiph1);
$temp = $tableau1["value"] ; // Température de l'eau

// Traitement
$heure = date("G") ; // Format 24 hrs, no leading 0
$cumul = loadvariable('cumul') ; // Cumul des températures
$compteur = loadvariable('compteur') ; // Nombre de mesures
$cumul += $temp ; // Nouveau cumul
$compteur += 1 ; // Incrémentation

if ($heure == 7) {
    // Calcul, stockage, et réinitialisation des variables
    $moyenne = $cumul / $compteur ; // Calcul
//    echo "Moyenne : <i>[$moyenne]</i> <br>" ;
    setValue($idperiph2, $moyenne) ; // Stockage
    saveVariable('cumul', 0.0) ; // Réinitialisation 
    saveVariable('compteur', 0) ; // Réinitialisation   
} else {
    // Incrémentation des variables
    saveVariable('cumul', $cumul) ; // Incrémentation 
    saveVariable('compteur', $compteur) ; // Incrémentation   
}

?>

Pour calculer la durée de filtration en minutes, j’utilise la fonction suivante (à partir de 5°C) :
durée = 80.812028 * exp(0.093454 * température moyenne J-1).
En dessous de 5°C : 120 minutes (au dessous de 10°C les algues ne se développent pas).
durée.jpg
Modélisation
durée.jpg (34.47 Kio) Consulté 8446 fois

L’heure de démarrage doit être adaptée à la durée ; j’utilise 11 heures (au dessous de 10°C), 9 heures (de 10 à 26°C), et 7h30 au dessus. Cette heure est calculée quotidiennement (à 7h10) après le calcul de la température moyenne, et stockée sur un périphérique virtuel de type « état - liste de valeurs » avec le petit script suivant :
Code : Tout sélectionner
<?
// Calcul de l'heure de démarrage de la filtration
// (à lancer quotidiennement par règle avant 7h30)

$idperiph1 = xxxxxx ; // Etat température H2O - A REMPLACER
$tableau1 = getValue($idperiph1);
$temp = $tableau1["value"] ; // Température de l'eau
$idperiph2 = xxxxxx ; // Etat démarrage Filtration - A REMPLACER

if ($temp < 10) {
  setValue($idperiph2, 11) ; // Démarrage à 11 heures
} else if ($temp >= 10 and $temp < 27) {
  setValue($idperiph2, 9) ; // Démarrage à 9 heures
} else {
  setValue($idperiph2, 7.5) ; // Démarrage à 7 heures 30 minutes
}
?>

Suivant l’heure de démarrage ainsi calculée, trois règles lancent alors le script suivant qui calcule la durée et active une macro à durée variable sur le relais QUBINO :
Code : Tout sélectionner
<?
// Périphériques
$idperiph1 = xxxxxx ; // Etat température H2O - A REMPLACER
$tableau1 = getValue($idperiph1) ;
$temp = $tableau1["value"] ; // Température de l'eau

$idperiph2 = xxxxxx ; // Relais Pompe Filtration [QUBINO] - A REMPLACER
$idmacro2 = xxxxxx ; // filtration [x] minutes [macro à durée variable sur relais QUBINO]
/*********************************** OPTIONNEL ************************************/
//$idperiph3 = xxxxxx ; // Indicateur (virtuel) Filtration en cours (pour information)
//$idmacro3 = xxxxxx ; // ON [x] minutes [macro à durée variable sur indicateur vrtuel]
/*********************************** OPTIONNEL ************************************/

$minutes = 0 ; /*Durée de filtration en minutes*/

if ($temp <= 5.0) {
  $minutes = 120 ; // Durée 120 minutes
} else {
//  durée (en minutes) = 80.812028 * exp(0.093454 * température Celsius)
  $a = 0.093454 ;
  $b = 80.812028 ;
  $ax = $temp * $a ;
  $minutes = exp($ax) * $b ;
}

if ($minutes >= 1440) {
    $minutes = 24 * 60 ;
} else {
    $minutes = round($minutes) ;
}

$json_result = setMacro($idperiph2, $idmacro2, $dynamic_value = $minutes) ;
//$json_result = setMacro($idperiph3, $idmacro3, $dynamic_value = $minutes) ; // OPTIONNEL

/*echo "La macro <b>[$idmacro2]</b> a été demandée pour votre périphérique dont le code API est <b>[$idperiph2]</b><br>";
echo "Température de l'eau : <i>[$temp]</i> <br>";
echo "Durée de filtration calculée en heures : <i>[$heures]</i> <br>";
echo "Pour info, le résultat de la demande est : <i>[$json_result]</i> <br>"; */
?>

macros_filtration.jpg
Macros
macros_filtration.jpg (97.56 Kio) Consulté 8446 fois
Auteur:  Kitor [ 20 Août 2018 14:02 ]
Sujet du message:  Re: Filtration piscine

Très sympa tout sa :)
J'ai aussi mis en place la filtration piscine : http://kitor.synology.me/wordpress/prin ... a-piscine/
Mais j'ai utilisé la règle pré-programmée EEDOMUS
L'avantage de ta méthode et le démarrage en fonction de la température, perso, je règle cela en fonction de l'année.

Pièces jointes:
Capture.PNG
Capture.PNG (23.43 Kio) Consulté 8434 fois
Auteur:  Herbert [ 20 Août 2018 15:04 ]
Sujet du message:  Re: Filtration piscine

Mais j'ai utilisé la règle pré-programmée EEDOMUS

Merci pour l'info :mrgreen: . Nos deux méthodes se ressemblent beaucoup, la mienne est un peu plus complexe (probablement aussi un peu plus précise, quoique à la marge) mais il me semble l'avoir mise en place avant que la règle eedomus ne soit disponible. En tous cas les deux sont fonctionnelles.
Auteur:  Anthony86 [ 03 Déc 2018 17:58 ]
Sujet du message:  Re: Filtration piscine

bonjour a vous

j'aimerais domotiser ma pisicne sachant qu'elle est pas encore construite.

j ai donc une pompe de filtration m'ai ont m'as conseille de mettre ceci pour gere (Aeotec ZW078 "Heavy Duty Smart Switch Gen5" - Actionneur ON/OFF 40A (9600W) Z‑Wave+ avec mesure de la consommation)

sachant que je veut aussi gere mes lumieres

l'idee du Fibaro FGS-222 me plait bien et je baisse surtout ma facture !!

ensuite pour la temperature que me conseille vous??

merci
Auteur:  Kitor [ 04 Déc 2018 08:29 ]
Sujet du message:  Re: Filtration piscine

Bonjour,
Que dire de plus :?
http://kitor.synology.me/wordpress/principale/tutoriel/la-piscine/
Auteur:  Anthony86 [ 04 Déc 2018 10:00 ]
Sujet du message:  Re: Filtration piscine

bonjour et merci

donc pour la puissance moteur un Fibaro suffit?

pas trop compliqué a mettre la sonde ?


merci d avance
Auteur:  Kitor [ 04 Déc 2018 11:12 ]
Sujet du message:  Re: Filtration piscine

La sonde très facile, une perceuse avec le foret qui vas bien (tout est expliqué dans la notice)

Pour le moteur, comme expliqué, j'ai branché le FGS sur le relai est non directement au moteur.

Si tu ne peux pas faire la même chose renseigne toi auprès du plus grand nombre (je ne veux pas mettre le feu chez toi ;) )
Auteur:  Anthony86 [ 04 Déc 2018 11:48 ]
Sujet du message:  Re: Filtration piscine

ok quel relai je pense que toute les filtrations sont identiques non???
Auteur:  Kitor [ 04 Déc 2018 12:39 ]
Sujet du message:  Re: Filtration piscine

Stp, tout est dans mon tuto

------

Après vérification, la borne A1 est la phase permettant d’activer la filtration.
C’est donc sur celle-ci que je vais connecter ma sortie Q1 du micro module
Auteur:  Anthony86 [ 04 Déc 2018 12:43 ]
Sujet du message:  Re: Filtration piscine

ok

veuillez m'excusez

cordialement
Auteur:  Seyko [ 10 Août 2021 17:54 ]
Sujet du message:  Re: Filtration piscine

Kitor a écrit:Très sympa tout sa :)
J'ai aussi mis en place la filtration piscine : http://kitor.synology.me/wordpress/prin ... a-piscine/
Mais j'ai utilisé la règle pré-programmée EEDOMUS
L'avantage de ta méthode et le démarrage en fonction de la température, perso, je règle cela en fonction de l'année.


Bonjour,

Je m'interroge sur la règle prédéfini eedomus, il se base en fonction de la température de l'eau, mais à qu'elle moment ? Au début du lancement de la règle ?

Merci
Auteur:  Seyko [ 11 Août 2021 21:13 ]
Sujet du message:  Re: [Script] Filtration piscine

Herbert a écrit:Si vous êtes l’heureux propriétaire de l’une des 2 millions de piscines recensées en France, peut-être avez-vous une idée du coût de votre système de filtration ? Sinon, multipliez simplement la puissance nominale de votre pompe (en kilowatts) par la durée annuelle de filtration (en heures) puis par le tarif de votre fournisseur d’électricité : surpris ? D’où l’importance de filtrer ni trop ni trop peu pour assurer la qualité de votre eau, limiter votre facture et faire un geste pour la planète … [avant cette prise de conscience, j’ajustais mon programmateur mécanique à cliquets péniblement 2 fois l’an … et encore].
Si vous êtes convaincu, voici une proposition : vous aurez besoin d’un peu de matériel domotique, d’une formule pour calculer quotidiennement la durée optimale, de trois petits scripts et de quelques règles d’automatisation.

J’utilise un micromodule QUBINO 1 Relais [ZMNHAD1] avec sa sonde de température DS18B20 (étanche) : remplacer le programmateur mécanique par le micromodule (par sécurité, je l’ai connecté AVANT le relais du moteur et je ne profite donc pas de la fonction de mesure de consommation). Connecter la sonde de température, et la placer dans l’eau ; chez moi le local est déporté, j’ai percé un petit trou dans le retour des skimmers que j’ai ensuite colmaté avec un produit ad’hoc [on devrait aussi pouvoir bricoler quelque chose avec un collier et porte-sonde pH].

Lorsque la filtration est arrêtée, on fait circuler l’eau toutes les heures pendant 2 minutes (règle + macro) afin de mesurer sa température réelle (et non pas celle du local).
On calcule la moyenne sur 24 heures (par pas de une heure) que l’on stocke sur un périphérique virtuel de type « état - nombre décimal » avec le petit script suivant :
Code : Tout sélectionner
<?
/* Calcul de la température moyenne de l'eau sur 24 heures  :
/doit être lancé toutes les heures, et précédé d'une circulation
d'eau pendant 2 minutes, si la filtration est arrêtée */

// Périphériques
$idperiph1 = xxxxxx  ; // Qubino Température H2O - A REMPLACER
$idperiph2 = xxxxxx  ; // Etat température H2O - A REMPLACER
$tableau1 = getValue($idperiph1);
$temp = $tableau1["value"] ; // Température de l'eau

// Traitement
$heure = date("G") ; // Format 24 hrs, no leading 0
$cumul = loadvariable('cumul') ; // Cumul des températures
$compteur = loadvariable('compteur') ; // Nombre de mesures
$cumul += $temp ; // Nouveau cumul
$compteur += 1 ; // Incrémentation

if ($heure == 7) {
    // Calcul, stockage, et réinitialisation des variables
    $moyenne = $cumul / $compteur ; // Calcul
//    echo "Moyenne : <i>[$moyenne]</i> <br>" ;
    setValue($idperiph2, $moyenne) ; // Stockage
    saveVariable('cumul', 0.0) ; // Réinitialisation 
    saveVariable('compteur', 0) ; // Réinitialisation   
} else {
    // Incrémentation des variables
    saveVariable('cumul', $cumul) ; // Incrémentation 
    saveVariable('compteur', $compteur) ; // Incrémentation   
}

?>

Pour calculer la durée de filtration en minutes, j’utilise la fonction suivante (à partir de 5°C) :
durée = 80.812028 * exp(0.093454 * température moyenne J-1).
En dessous de 5°C : 120 minutes (au dessous de 10°C les algues ne se développent pas).
durée.jpg

L’heure de démarrage doit être adaptée à la durée ; j’utilise 11 heures (au dessous de 10°C), 9 heures (de 10 à 26°C), et 7h30 au dessus. Cette heure est calculée quotidiennement (à 7h10) après le calcul de la température moyenne, et stockée sur un périphérique virtuel de type « état - liste de valeurs » avec le petit script suivant :
Code : Tout sélectionner
<?
// Calcul de l'heure de démarrage de la filtration
// (à lancer quotidiennement par règle avant 7h30)

$idperiph1 = xxxxxx ; // Etat température H2O - A REMPLACER
$tableau1 = getValue($idperiph1);
$temp = $tableau1["value"] ; // Température de l'eau
$idperiph2 = xxxxxx ; // Etat démarrage Filtration - A REMPLACER

if ($temp < 10) {
  setValue($idperiph2, 11) ; // Démarrage à 11 heures
} else if ($temp >= 10 and $temp < 27) {
  setValue($idperiph2, 9) ; // Démarrage à 9 heures
} else {
  setValue($idperiph2, 7.5) ; // Démarrage à 7 heures 30 minutes
}
?>

Suivant l’heure de démarrage ainsi calculée, trois règles lancent alors le script suivant qui calcule la durée et active une macro à durée variable sur le relais QUBINO :
Code : Tout sélectionner
<?
// Périphériques
$idperiph1 = xxxxxx ; // Etat température H2O - A REMPLACER
$tableau1 = getValue($idperiph1) ;
$temp = $tableau1["value"] ; // Température de l'eau

$idperiph2 = xxxxxx ; // Relais Pompe Filtration [QUBINO] - A REMPLACER
$idmacro2 = xxxxxx ; // filtration [x] minutes [macro à durée variable sur relais QUBINO]
/*********************************** OPTIONNEL ************************************/
//$idperiph3 = xxxxxx ; // Indicateur (virtuel) Filtration en cours (pour information)
//$idmacro3 = xxxxxx ; // ON [x] minutes [macro à durée variable sur indicateur vrtuel]
/*********************************** OPTIONNEL ************************************/

$minutes = 0 ; /*Durée de filtration en minutes*/

if ($temp <= 5.0) {
  $minutes = 120 ; // Durée 120 minutes
} else {
//  durée (en minutes) = 80.812028 * exp(0.093454 * température Celsius)
  $a = 0.093454 ;
  $b = 80.812028 ;
  $ax = $temp * $a ;
  $minutes = exp($ax) * $b ;
}

if ($minutes >= 1440) {
    $minutes = 24 * 60 ;
} else {
    $minutes = round($minutes) ;
}

$json_result = setMacro($idperiph2, $idmacro2, $dynamic_value = $minutes) ;
//$json_result = setMacro($idperiph3, $idmacro3, $dynamic_value = $minutes) ; // OPTIONNEL

/*echo "La macro <b>[$idmacro2]</b> a été demandée pour votre périphérique dont le code API est <b>[$idperiph2]</b><br>";
echo "Température de l'eau : <i>[$temp]</i> <br>";
echo "Durée de filtration calculée en heures : <i>[$heures]</i> <br>";
echo "Pour info, le résultat de la demande est : <i>[$json_result]</i> <br>"; */
?>

macros_filtration.jpg



Bonjour Herbert,

Ou trouver ton script sur eedomus ? Quel est sont nom sur le store ? Merci
Page 1 sur 1 Le fuseau horaire est UTC+1 heure