Remplissage sécurisé d'une piscine
| |||
---|---|---|---|
Nom | Remplissage sécurisé | ||
Famille | Widgets | ||
Wiki créé le | 11/11/2020 | ||
Wiki mis à jour le | 11/11/2020 | ||
Auteur | fgtoul |
Présentation
Dans cet article, vous allez voir comment programmer le remplissage automatique d'une piscine, être averti en cas de fuite et pouvoir sécuriser le circuit d'alimentation en eau, même loin de chez vous.
Le principe
Un capteur de niveau d'eau détecte le niveau bas dans le bassin et transmet l'information à l'IPX800 V4. Si vous avez autorisé le remplissage en mode Automatique, alors l'électrovanne s'ouvre pour permettre le remplissage. L'avantage d'un remplissage automatique, c'est que le bassin est toujours à son niveau optimal et vous évitez ainsi les problèmes sur la pompe de filtration en cas de manque d'eau. Cependant une fuite sur le réseau hydraulique ou dans le bassin peut passer inaperçue et faire très vite grimper vos factures d'eau. Il faut donc impérativement sécuriser le système, être averti en cas de fuite et pouvoir sécuriser l'installation (même à distance).
En cas de fuite, l’ipx800 envoie le volume d’eau perdue par mail ou SMS, toutes les heures. Ainsi, nous pouvons prendre la décision, ou pas, de fermer manuellement la vanne de sécurité via le widget et ainsi stopper la fonction de remplissage automatique en fonction du débit de la fuite. Il faudra une intervention manuelle pour acquitter le statut de fuite et réactiver le remplissage automatique. Après tout, une fuite disparaît rarement seule
Le matériel
Mon arrivée d'eau étant en cuivre, j'ai préféré que le corps de mes électrovannes soient en Laiton. Si votre installation est en Polypropylène (PP) , vous pouvez adapter l'assemblage, ou choisir des vannes avec corps en PVC.
Le capteur de niveau
Comme je vous l'ai dit au dessus, il faut un capteur de niveau d'eau. Le plus simple est d'utiliser un capteur à flotteur que vous pourrez fixer dans un skimmer. Qu'il soit de type 'Normalement fermé' ou 'Normalement Ouvert' ce capteur convient parfaitement.
Voici quelques exemples de montage (partagés par la communauté), dans un skimmer ou un bac tampon :
@Henri66 a monté deux capteurs (niveau haut / niveau bas) dans la goulotte, reliés indépendamment sur 2 entrées digitales.
Pensez à protéger le flotteur des éventuels débris flottants afin d'éviter tout blocage.
Remarque : Un retard de 3 minutes a été configuré sur la sortie virtuelle qui pilote le remplissage, pour éviter qu'elle n'oscille entre état haut et état bas de manière répétée à cause des vagues. Il faudra donc que le niveau bas soit observé pendant ces 180 secondes pour que l'ipx800 ouvre l'électrovanne.
L'électrovanne Normalement Fermée
Personnellement, j'utilise une électrovanne dont l'alimentation de la bobine est de 12V.
Son alimentation sera commandée par un relais de l'IPX800 V4. Le solénoïde doit être alimenté en 12Vcc pour que l'électrovanne reste ouverte. En cas de coupure de courant, elle se referme automatiquement. Elle se connecte avec 2 fils et sera branchée sur les bornes NO de la sortie Relais nommée "relais.Electrovanne.1". Cette sortie relais sera surveillée. Une alerte sera envoyée si le remplissage se poursuit au delà d'un temps imparti. Il sera alors possible de stopper le système et fermer la vanne de sécurité en cas de suspicion de fuite.
Un compteur d'eau à impulsion
Le compteur d'eau à impulsions pourra vous indiquer le volume d'eau utilisé pour le remplissage du bassin.
Connecté sur l'entrée digitale nommée "compteur.impulsion", le modèle vendu par GCE émet 1 impulsion par litre ce qui permet une configuration très simple sur l'IPX800. Chaque impulsion reçue provoque l'incrémentation d'un index général. Personnellement, j'incrémente un deuxième index simultanément, pour connaître le volume d'eau utilisé pendant la saison.
Le compteur d'eau sera également utilisé en détecteur de fuite. Un scénario simple suffit sur l'Ipx800 : si l'électrovanne 12V est fermée, alors la consommation d'eau devrait être nulle. Le compteur devrait par conséquent n'émettre aucune impulsion. Si une impulsion est malgré tout détectée sur l'entrée digitale, une notification de fuite est envoyée.
L'électrovanne de sécurisation
Pour la sécurisation du circuit d'alimentation d'eau, nous utiliserons une deuxième électrovanne, que nous pourrons fermer à distance en cas de réception d'une notification de fuite. J'ai choisi un modèle pour circuit d'alimentation principale qui nécessite une alimentation électrique seulement pendant quelques secondes, pour permettre le mouvement d'ouverture ou de fermeture. C'est une vanne à sphère, motorisée, qui comporte 3 fils ( Neutre, Ouverture, Fermeture).
Elle sera alimentée en 240Vac et pilotée par 2 relais de l'ipx800,
- le premier, nommé "relais.alim.sec", pilote l'alimentation 240Vac, pendant 30 secondes afin de permettre un mouvement d'ouverture ou de fermeture.
- le second, nommé "relais.sens.sec", détermine le sens du mouvement. Sur les bornes NO, nous aurons l'ouverture, sur NC nous aurons la fermeture.
Le coût du projet
- Compteur d'eau froide à impulsion : 75€
- Vanne à sphère, motorisée 240Vac : 50€
- électrovanne à solénoïde 12V : 30€
- capteur à flotteur : 8.5€
Hors plomberie, le coût s'élève à 165€ environ, ce qui peut paraître peu par rapport au coût engendré par une éventuelle fuite d'eau.
Le montage
Pour une détection de fuite efficace, le compteur d'eau doit être en amont des 2 électrovannes.
Attention, chaque dispositif doit être correctement monté dans le sens du débit
Un effet d'eau, assemblé avec des pièces PVC, sera monté sur le skimmer. N'oubliez pas les joints de chaque côté de la traversée.
La programmation sur IPX800
Les ressources utilisées
- les entrées/sorties physiques
- une entrée digitale (ED) recevant les impulsions du compteur d'eau, nNommée "compteur.impulsion",
- une entrée digitale (ED) connectée au bouton poussoir d'acquit . nommée "acquit.fuite",
- une entrée digitale (ED) connectée au capteur de niveau, nommée "Niveau.Bas"
- une sortie physique connectée à l'électrovanne de remplissage (Tb à déterminer), nommée "relais.Electrovanne.1",
- une sortie physique qui pilotera le sens du mouvement de la vanne de Secuité, nommée "relais.sens.sec"
- une sortie physique pour alimenter la vanne de sécurité pendant 30 s (Tb=30 ), nommée "relais.alim.sec"
- Les Sorties Virtuelles
- 1 SV nommée "Rempl.statut.fuite". Elle sera ON en cas de fuite, jusqu'à l'acquit,
- 1 SV nommée "Rempl.tempo.1h". Elle permettra une temporisation d'une heure entre 2 notifications de fuite. Elle aura tb=3600,
- 1 SV nommée "Niveau.Statut.Bas". Elle sera ON lorsque le niveau sera insuffisant, elle aura Ta=180
- 1 SV nommée "Rempl.Statut.AUTO". Elle sera ON lorsque le remplissage automatique sera autorisé,
- 1 SV nommée "RemplManuelDemande". Elle sera ON lors d'une demande de remplissage manuel,
- 1 SV nommée "RemplAutoDemande". Elle sera ON lorsque le niveau sera bas et lorsque le remplissage automatique sera autorisé,
- 1 SV nommée "RemplStatutEnCours". Elle sera ON pendant un remplissage automatique ou manuel, Tb=temps maxi de remplissage
- 1 SV nommée "RemplSec". Elle sera ON lorsque l'électrovanne de sécurité sera fermée,
- 1 SV nommée "StatutFuite". Elle sera ON en cas de fuite.
- 1 SV nommée "BtnDashRempl". Elle aura Tb=1 et sera pilotée par le bouton "Remplissage Manuel" du widget,
- 1 SV nommée "BtnDashRemplAuto". Elle aura Tb=1 et sera pilotée par le bouton "mode auto / manuel" du widget
- 1 SV nommée "BtnSecure" qui sera pilotée par le bouton "Secure" du widget. Mettre Tb=1
- Les compteurs
- un compteur pour la consommation d'eau cumulée. Nommé CPT1,
- un compteur pour le volume d'eau perdue. Nommé CPT2,
- Les PUSH
Les scénarios
Gestion du remplissage
scène 0 : Statut Niveau Bas avec capteur NF. Utiliser NON ED pour un capteur NO événement : ED(Niveau.Bas) Action : ON/OFF Résultat : SV(Niveau.Statut.Bas)
scène 1 : Alerte Niveau Bas événement : SV(Niveau.Statut.Bas) Action : ON/OFF Résultat : PUSH(preset "Eau.Niveau.Bas")
scène 2 : Demande Rempl. Manuel événement : SV(BtnDashRempl) ET SV(Niveau.Statut.Bas) Action : ON Résultat : SV(RemplManuelDemande)
scène 3 : Demande Rempl. Auto événement : SV(Rempl.Statut.AUTO) ET SV(Niveau.Statut.Bas) Action : ON/OFF Résultat : SV(RemplAutoDemande)
scène 4 : Pilotage electrovanne remplissage événement : SV(RemplManuelDemande) OU SV(RemplAutoDemande) Action : ON/OFF Résultat : Relais(relais.Electrovanne.1) ; PUSH(preset "Rempl.En.Cours") ; SV(RemplStatutEnCours)
scène 5 : Surveillance temps remplissage événement : NON SV(RemplStatutEnCours) ET Relais(relais.Electrovanne.1) Action : ON/OFF Résultat : PUSH(preset "Alerte.Temps.depasse")
scène 6 : Arret rempl. Manuel événement : NON SV(Niveau.Statut.Bas) Action : OFF Résultat : SV(RemplManuelDemande)
Index conso
scène 7 : conso globale eau [CPT1] événement : ED(compteur.impulsion) Action : ON Résultat : CPT1(Inc 1);
Cas de fuite
scène 8 : incrément CPT conso fuite [CPT2] événement : ED(compteur.impulsion) ET NON relais(relais.Electrovanne.1) Action : ON Résultat : CPT2(Inc 1); SV(Rempl.statut.fuite)
scène 9 : tempo 1h entre 2 mails avec index compteur événement : SV(Rempl.statut.fuite) ET NON SV(Rempl.tempo.1h) Action : ON Résultat : PUSH(preset "Alerte.Fuite") ; SV(Rempl.tempo.1h)
scène 10 : reset compteur fuite si BP acquit événement : ED(acquit.fuite) Action : ON Résultat : CPT2(Set 0)
scène 11 : Acquit statut fuite si appui sur BP événement : ED(acquit.fuite) Action : OFF Résultat : SV(Rempl.statut.fuite)
scène 12 : Reset CPT2 si Remplissage demandé événement : relais(relais.Electrovanne.1) Action : ON Résultat : CPT2(Set 0)
Remplissage Mode AUTO ou Manuel
scène 13 : Rempl Mode Auto événement : BtnDashRemplAuto Action : SWITCH Résultat : SV(Rempl.Statut.AUTO)
Sécurisation
scène 14 : Rempl Mode Auto événement : SV(BtnSecure) Action : SWITCH Résultat : SV(RemplSec)
scène 15 : Sens Ouverture/Fermeture Vanne SECURE événement : SV(RemplSec) Action : ON/OFF Résultat : SV(relais.sens.sec)
scène 16 : Alimentation Vanne SECURE événement : SV(BtnSecure) Action : ON Résultat : SV(relais.alim.sec)
Le Widget
- Ajoutez une source de données sur le Dashboard.
Elle doit se connecter au fichier Status.xml de l'IPX800. Nommez la STATUS.
- Ajoutez un widget HTML sur le dashboard, 2 blocs de hauteur puis collez le code ci-dessous
- ajustez les variables en lignes 1 à 16
Afficher le code du widget
let d=datasources["STATUS"]["response"];
//gestion remplissage
let svNiveauStattBas=49; //n° de la SV Niveau.Statut.Bas
let svRemplStatutAuto=50; //n° de la SV Rempl.Statut.AUTO
let svRemplManuelDemande=51; //n° de la SV RemplManuelDemande
let svBtnDashRempl=53; //n° de la SV BtnDashRempl
let svRemplStatutEnCours=54; //n° de la SV RemplStatutEnCours
let svBtnDashRemplAuto=58; //n° de la SV BtnDashRemplAuto
//gestion fuite
let svBtnSecure=59; //n° de la SV BtnSecure
let svRemplSec=60; //n° de la SV RemplSec
let svStatutFuite=42; //n° de la SV StatutFuite
let cptFuite=6; //n° du compteur CPT2
// Ne rien modifier ci-dessous
let coulNiveau= (d["vout"+svNiveauStatutBas]==1 ? "#f00" : "#ccc");
let coulRempl= (d["vout"+svRemplStatutEnCours]==1 ? "#0f0" : "#ccc");
let coulMode=(d["vout"+svRemplStatutAuto]==1 ? "#0f0" : "#ccc");
let c1="00000000" + d["cpt"+cptFuite];
c1= c1.substring(c1.length, c1.length - 6);
coulFuite= (d["vout"+svStatutFuite]==1 ? "#f00" : "#ccc");
coulSecure= (d["vout"+svRemplSec]==1 ? "#f00" : "#ccc");
return `
<style>
hr.style-six{
border:0;
height:0;
border-top: 1px solid rgba(0, 0, 0, 0.1);
border-bottom: 1px solid rgba(255, 255, 255, 0.3);
}
</style>
<input type="button" id="bouton2" class="bouton2 vout${svBtnDashRempl} btnV4vout${svBtnDashRempl}" style="font-size:10px;position:absolute;margin-left:25px;margin-top:6px;width: 110px;" name="Rempl. Manuel|Rempl. Manuel" onclick="newAJAXCommand('io.cgi?vout=${svBtnDashRempl}');" value="Rempl. Manuel">
<input type="button" id="bouton2" class="bouton2 vout${svBtnDashRemplAuto} btnV4vout${svBtnDashRemplAuto}" style="font-size:10px;position:absolute;margin-left:145px;margin-top:6px;width: 110px;" name="Mode Auto/Off|Mode Auto/Off" onclick="newAJAXCommand('io.cgi?vout=${svBtnDashRemplAuto}');" value="Mode Auto/Off">
<center>
<span style="position:absolute;left:40px;top:35px;font-size:18px;">
<span id=nivB class="glyphicons glyphicons-pool" color='${coulNiveau}'></span>
<span id=rempl class="glyphicons glyphicons-drop" color='${coulRempl}'></span>
<span class=info id=mAutoR style='margin-left:105px;width:35px;font-size:12px;color:${coulMode}'>AUTO</span></>
<hr class=style-six>
</span>
</center>
<span style="position:absolute;left:35px;top:80px;font-size:28px;color:${coulFuite}"><span id=nivB class="glyphicons glyphicons-tint"></span>
<span class=info id=fuit style='position:absolute;top:0px;margin-left:5px;width:55px;font-size:12px'>FUITE</span></>
<span class=info id=cfuit style='position:absolute;top:20px;margin-left:5px;width:85px;font-size:12px'>${c1} litres</span></>
<input type="button" id="bouton2" class="bouton2 vout${svBtnSecure} btnV4vout${svBtnSecure}" style="font-size:10px;position:absolute;margin-left:95px;width: 55px;" name="Secure|Secure" onclick="newAJAXCommand('io.cgi?vout=${svBtnSecure}');" value="Secure">
<span style="font-size:14px;position:absolute;margin-left:175px;margin-top: 8px;width: 110px;color:${coulSecure}"><span id=secR class="glyphicons glyphicons-lock"></span>
`;