Différences entre les versions de « Remplissage sécurisé d'une piscine »
Ligne 104 : | Ligne 104 : | ||
* Les PUSH | * Les PUSH | ||
** Preset "Eau.Niveau.Bas"<br>[[fichier:PushEauNiveauBas.png]] | ** Preset "Eau.Niveau.Bas"<br>[[fichier:PushEauNiveauBas.png]] | ||
** Preset "Rempl.En.Cours"<br>[[fichier:PushRemplEnCours.png]] | ** Preset "Rempl.En.Cours"<br>[[fichier:PushRemplEnCours.png]] | ||
** Preset "Alerte.Fuite" <br>[[fichier:PushEauFuite.png]]<BR> Adaptez le nom de l'étiquette afin d'envoyer l'index du compteur CPT2 | |||
===Les scénarios=== | ===Les scénarios=== |
Version du 12 novembre 2020 à 01:05
| |||
---|---|---|---|
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 aini 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
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 :
L'électrovanne NF
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.
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 une entrée digitale de l'IPX800 V4, 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. Personnellemt, j'incrémente un duxiè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 ne 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.
Electrovanne d'alimentation principale
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 ne nécessite une alimentation électrique seulement pendant quelques secondes pendant le mouvement d'ouverture ou de fermeture. C'est une vanne à sphère, motorisée, qui comporte 3 fils ( Ground, ouverture, Fermeture).
Elle sera alimentée en 240Vac et pilotée par 2 relais de l'ipx800, sur les bornes NO de chacun.
- le premier relais pilotera l'alimentation 240Vac, pendant 30 secondes afin de permettre un mouvenent d'ouverture ou de fermeture.
- le second relais détermine le sens du mouvement. Sur les bornes NC, nous aurons l'ouverture, sur NO nous aurons la fermeture.
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
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. Nommée "compteur.impulsion",
- une entrée digitale (ED) connectée au bouton poussoir d'acquit . Nommé ED "acquit.fuite",
- une sortie physique connectée à l'électrovanne de remplissage . Nommée "relais.Electrovanne.1",
- une sortie physique qui pilotera le sens du mouvement de la vanne de Secuité, EN NC : Fermeture, EN NO : Ouverture, 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=3
- 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,
- 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 scénarios
Gestion du remplissage
scène 0 : Statut Niveau Bas é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(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(Rempl.En.Cours) ; SV(RemplStatutEnCours)
scène 5 : Arret rempl. Manuel événement : NON SV(Niveau.Statut.Bas) Action : OFF Résultat : SV(RemplManuelDemande)
Index conso
scène 6 : conso globale eau [CPT1] événement : ED(compteur.impulsion) Action : ON Résultat : CPT1(Inc 1);
Cas de fuite
scène 7 : 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 8 : 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 9 : reset compteur fuite si BP acquit événement : ED(acquit.fuite) Action : ON Résultat : CPT2(Set 0)
scène 10 : Acquit statut fuite si appui sur BP événement : ED(acquit.fuite) Action : OFF Résultat : SV(Rempl.statut.fuite)
scène 11 : 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 12 : Rempl Mode Auto événement : BtnDashRemplAuto Action : SWITCH Résultat : SV(Rempl.Statut.AUTO)
Sécurisation
scène 13 : Rempl Mode Auto événement : SV(BtnSecure) Action : SWITCH Résultat : SV(RemplSec)
scène 14 : Sens Ouverture/Fermeture Vanne SECURE événement : SV(RemplSec) Action : ON/OFF Résultat : SV(relais.sens.sec)
scène 15 : 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
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 - 8);
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:55px;font-size:12px'>${c1}</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>
`;