Aller au contenu
Invité chris6783

Virtual Device : Gestionnaire Filtration Piscine

Recommended Posts

Invité chris6783

voici donc ce premier VD, juste à  temps pour la saison

 

L'installation se passe en 2 ou 3 étapes

 

1) Créer une variable globale nommée "GAP_setup"

 

2) Configurer les ID de la pompe, du capteur de temperature et ceux des icones (voir mon message plus haut pour une proposition d'icones)

 

pour cela il y a une section configuration au début de la main loop

--  ###############################################################
--  ##################### DEBUT CONFIGURATION #####################
--  ###############################################################

-- numero des icones 
local icons = {}
icons["AUTO_ON"] = 1009
icons["AUTO_OFF"] = 1010
icons["AUTO"] = 1011
icons["MANU_ON"] = 1013
icons["MANU_OFF"] = 1012

-- ID du module controlant la pompe
local id_pompe = 42

-- ID du capteur mesurant la température de l'eau
local id_temperature = 91

--  #############################################################
--  ##################### FIN CONFIGURATION #####################
--  #############################################################

3) Vous pouvez optionellement customiser votre courbe de température / cycles

 

Par defaut elle est réglée avec une durée de cycle de 4h et suivant les moyennes trouvées sur le net. par contre le courbe DOIT couvrir la plage des températures possibles, par exemple si votre courbe plafonne à  35 degrés, au-dela le mode auto va calculer une temps de filtration égal à  zéro.

 

Cette customization est possible dans le code du bouton "calculer cycle", tout au début

--  ###############################################################
--  ##################### DEBUT CONFIGURATION #####################
--  ###############################################################

-- volume bassin / debit filtration = durée en heure
local dureeCycle = 4.0 

-- courbe de filtration
-- les clées sont des degrés celcius, 
-- Les valeurs le nombre de cycles (filtration du volume complet)
local cycleLayout = {}
cycleLayout[0]=0.1
cycleLayout[1]=0.2 
cycleLayout[8]=0.2
cycleLayout[10]=0.25
cycleLayout[14]=0.5
cycleLayout[19]=1
cycleLayout[23]=2
cycleLayout[25]=3
cycleLayout[26]=3.5
cycleLayout[30]=4
cycleLayout[35]=4


--  ###############################################################
--  ##################### FIN CONFIGURATION #####################
--  ###############################################################

C'est tout... ne reste plus qu'à  allumer le BBQ et lézarder

 

Au démarrage le VD va passer en mode auto, relever la température et faire un premier calcul, par la suite le calcul sera refait après la fin du cycle journalier (mais pas forcement tout de suite) et la capture de la température de référence se fait peu après midi.

 

C'est un premier VD, tout commentaire/critique (constructif  :) ) est le bienvenu.

Je t'acherai de fournir du support mais ne garanti pas le temp de réponse.

 

PS : je tourne en 3.591 et n'ai pas testé en 4.X mais le VD n'utilise pas d'API complexe ou modifiée à  priori.

 

Gestionnaire_Piscine.vfib

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut Chris6783 et merci pour ce partage. J'ai regardé par curiosité ton module qui semble bien "chiadé". Je te remonte quelques petits soucis que je viens de voir dans le main loop : 

 

1) J'ai remplacé l'ID en dur de ton VD par la variable que tu avais déjà  initialisé d'ailleurs dans le code (juste après le bloc de configuration) : 

local ID_VD = fibaro:getSelfId() 
local ajustement = fibaro:get(ID_VD, "ui.labelAdjust.value")

2) Ensuite j'ai une erreur d'execution. Alors je ne suis pas du tout expert code lua, mais je ne pense pas que ce soit lié a une différence de version entre la v3.x et v4.x.

Alors j'ai créé la variable globale, et je ne sais pas si c'est le cas chez tout le monde mais cette dernière prend la valeur 0 par défaut. Peut être que je m'y suis pris comme un pied ? 

Du coup, à  la ligne 43/44, lorsque tu initialises pour la première fois ton conteneur pour la config, sa plante car tu essayes d'accéder a un tableau alors que la variable contient un entier. 

Bref, j'ai bidouillé rapidement un truc pour contourner la chose : 

-- preparer un conteneur pour la config
if ((tonumber(cycles) ~= nil) or (cycles["config"] == nil )) then 
    local newConfig = {}
    cycles = {}
    cycles["config"] = newConfig
end

En fait on prepare le conteneur par défaut de la config si cycles est un nombre (c'est mon cas a la con de la valeur 0 stockée) ou si un conteneur existe déjà  mais est vide (ton test initial). J'écrase alors cycles par un tableau vide avant d'initialiser l'élément du tableau qui va bien.

Voilà  pour l'instant ce que j'ai vu, si des experts lua ont une solution moins bourrine,  j'aimerai bien avoir leurs avis histoire de me coucher moins con demain soir ;)

En tout cas, encore bravo pour ton module ! 

Partager ce message


Lien à poster
Partager sur d’autres sites
Invité chris6783

Merci pour ce retour complet. c'est en effet une mise en place de zéro qui révèle des trucs pas bien testé. J'aurai du recharger un import du VD après destruction de la Variable globale. Au lieu de ça j'ai été me baigner ! FAINÉANT

Partager ce message


Lien à poster
Partager sur d’autres sites
Invité chris6783

voici une V1.01 qui fixe les problèmes trouvés et contournés par Pinou.

 

La gestion de la VG qui vaut 0 à  été ajoutée à  la gestion de la VG qui vaut "NaN" qui existait (ligne 45 de la main loop) et qui gère la cas ou une autre VG est sauvée via le panneau de variable... Ce qui reset certaines VG à  "NaN" ????????

 

 

Gestionnaire_Piscine.vfib

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut

@chris6783 afin de customiser la courbe de calcul à  mon bassin, tu t'es appuyé sur quel site internet pour la formule et trouver ensuite les références pour remplir le tableau lié au cycle.

 

@tous,

Autre question, vous utilisez quoi pour remonter la température de votre piscine vers votre HC2?

Capteurs? Éléments divers?

Merci de vos conseils.

Partager ce message


Lien à poster
Partager sur d’autres sites

Excellent Chris, je prendrai l'an prochain quand il y aura la piscine !

Partager ce message


Lien à poster
Partager sur d’autres sites

@kioneoranga : avant j'utilisais le thermometre de piscine de chez Oregon couplé a ma zibase que j'utilise en mode "gateway" pour les divers protocoles .. mais ça c'était avant. En effet ce capteur n'est pas fiable, de temps en temps il change d'ID tu sais meme pas pourquoi .. bref de la daube qui flotte ! D'ailleurs je ne suis pas certain qu'il soit toujours commercialisé. 

Bref, maintenant je suis passé par une sonde  branchée au qubino qui contrôle le moteur de la pompe de filtration. La sonde est dans un doigt de gant avec collier de prise de charge sur la tuyauterie de la piscine. Y a plus rien qui flotte à  la surface, tout est invisible, tout fonctionne bien... nickel quoi ! 

Partager ce message


Lien à poster
Partager sur d’autres sites
Invité chris6783

Salut

@chris6783 afin de customiser la courbe de calcul àmon bassin, tu t'es appuyé sur quel site internet pour la formule et trouver ensuite les références pour remplir le tableau lié au cycle.

.

Je n'ai pas gardé de pointeurs vers les sites je notais simplement sur un papier les valeurs lues un peu partout puis j'ai fait une sorte de lissage. J'ai même ajouté un point ou 2 pour éviter un trop grosse ligne droite dans la courbe et valider la fonction de calcul.

Le but est vraiment que le VD soit adaptable àchacun. Par exemple on peut filtrer très longtemps autour de zéro pour éviter les dégâts liés au gel... La durée d'un cycle est en général autour de 4h et ensuite on multiplie et on peut vérifier que ça colle àses habitudes de filtration.

comme dit au début du tuto, il n'y a pas une stratégie bonne et les autres seraient mauvaises mais il y a pleins d'avis... D'où la courbe flexible.

Peut être que je retoucherai ma courbe en cours de saison mais pour le moment elle me convient et l'eau est limpide (certainement plus grâce àmon nouveau filtre que grasse au VD)

Partager ce message


Lien à poster
Partager sur d’autres sites

J'ai un capteur de température de Qubino le ZMNHEA1, qui serait étanche. Je pourrai le placer ou dans le circuit d'eau et comment?

 

Merci pour vos conseils.

 

Salutations

 

speedoxx007

Partager ce message


Lien à poster
Partager sur d’autres sites
Invité chris6783

Le plus fiable serait àmon avis de monter un doigt de gant sur la tuyauterie dans le local technique avec un collier de prise de charge.

Ensuite tu peux placer la sonde dans le doigt avec de la pate thermique.

Bien sûr le relevé n'est fiable que lorsque la pompe tourne

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui je vois et je trouve ou par exemple ce doigt de gant avec collier de prise en charge?

Partager ce message


Lien à poster
Partager sur d’autres sites
Invité chris6783

Chez un pisciniste ou un grossiste en plomberie.

Sinon sur le net sans faire de pub car je ne connais pas il y tout chez thermatec-shop.fr

Partager ce message


Lien à poster
Partager sur d’autres sites
Invité chris6783

Je poste la version en production du VD avant de retirer la gestion de la piscine de la HC2 et de l'éteindre.

 

Fonctionnellement rien ne change par rapport à  celle déjà  publiée mais elle résiste mieux à  la corruption de sa configuration lorsqu'on sauve une VG voisine et que la HC2 modifie également d'autres variables en les mettant à  NaN ou a d'autres valeurs farfelues.

 

Le module tourne depuis 2 saisons maintenant et je ne m'occupe plus du tout des cycles de filtrations été comme hiver.

 

 

 

 

Gestionnaire_Piscine.vfib

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut ,

Serait il possible de n'avoir que le code LUA ceci éviterait de ré-importer le VD?

Pourquoi dis tu avant d'éteindre la HC2??

Tu abandonnes Fibaro ou la domotique???

Partager ce message


Lien à poster
Partager sur d’autres sites
Invité chris6783

Je suis en déplacement sans accès àla box pour quelques jours. Pas de problème pour poster le lua àmon retour. Tu devrais aussi pouvoir importer le VD dans un device temporaire et faire les copier coller du code vers ton VD avant de détruire celui importé.

Salut

En effet je quitte fibaro pour jeedom. Mes 2 HC2 sont a vendre... L'une d'elles est déjàréservée pour un éléphant qui rôde par là☺

Partager ce message


Lien à poster
Partager sur d’autres sites

 Ah oui, le rose, je l'ai vu passé.

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

hello,

 

ma petite participation à  ce post est ici...

http://www.domotique-fibaro.fr/index.php/topic/8989-domotisation-de-la-piscine/

 

Il y a plein de choses à  redire sur le code et le VD et comme dit, je suis preneur pour améliorer mon code de débutant... (il n'y a pas de section dédiée sur le site?? tutos???) (quand je vois la différence de code entre le mien et ceux de chris et berale... aie aie aie!!!, c'est comme un enfant qui apprend à  écrire... :D )

 

D'ailleurs j'ai une question :

puis-je mettre tout le code la scène dans la main loop du VD ? Ou n'est ce pas une bonne chose ? Faut-il simplifier le code avant???

En fait cela me permettrait de récupérer des infos que je mettrai dans le VD...Exemples :

la temp de référence

la temp max de la veille

le temps restant de filtration en mode auto ou en mode choc

... et d'autres que e n'ai pas encore trouvées !!  :)

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour

 

J'ai une question. Je utilise ce VD depuis le mois de Juillet de cette année et ça fonctionne à  la mereveille et je vais faire un hivernage activ. Es-ce que il aurait une possibilité de ajouter une fonction "Danger Gel"? Avec une sonde de température pour l'air Exterieur. P.ex. la température Exterieur est à  0° ou moins que la pompe elle tourne jusqu`à  p.ex. 3°.

 

Merci pour vos aides.

 

Salutations Speedoxx007

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites
Invité chris6783

Merci pour le retour.

Techniquement c'est assez simple àajouter et àintégrer àla logique en place. Par contre il faudrait rendre cette fonction et la sonde optionnelle pour garder une branche de code unique.....

Genre si aucun id de sonde air n'est fourni tout marche comme maintenant et sinon on applique cette fonction avec un seuil de température air reglable

Je n'ai plus de hc2 en ligne pour le faire (elle est toujours àvendre). Je peux cependant la reconnecter si personne ne reprend le flambeau

Partager ce message


Lien à poster
Partager sur d’autres sites

Qui est le.mieux placé pour faire l'update que l'auteur du code

Je vote pour 😎😎😎

Envoyé de mon ONE A2003 en utilisant Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

Ce serai cool @chris6783 si tu pourrai implementer cette fonction optionelle dans le VD.

  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

Personne pourrait nous aider a intégrer cette idée dans le VD actuel ?

 

Es-ce que il aurait une possibilité de ajouter une fonction "Danger Gel"? Avec une sonde de température pour l'air Extérieur. P.ex. la température Extérieur est à  0° ou moins que la pompe elle tourne jusqu`à  p.ex. 3°.

 

Réponde de chris6783:

Techniquement c'est assez simple à  ajouter et à  intégrer à  la logique en place. Par contre il faudrait rendre cette fonction et la sonde optionnelle pour garder une branche de code unique.....
Genre si aucun id de sonde air n'est fourni tout marche comme maintenant et sinon on applique cette fonction avec un seuil de température air réglable

 

Salutations Speedoxx007

Partager ce message


Lien à poster
Partager sur d’autres sites

Hello

 

j'ai une autre idée pour eviter le gel en hivernage active. On pourrait pas avec ce VD si l'eau est à  2° que la filtration commence entre 4 et 6h du matin et si la température de l'eau est plus petit que 2° que la filtration tourne 24h?. Bon pour le 24h c'est simple avec le CycleLayout[?].

 

Quelque'un porrait nous aider?

 

Salutations Speedoxx007

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut tout le monde

en fait àdéfaut d'avoir une modification de code pour tenir compte de la température extérieure, il est possible de modifier le calcul des cycles afin que si la température de l'eau passe en dessous de zéro on augmente le cycle de la pompe de la sorte

Donc au de làde 0 cela tourne 24/24, c'est une solution intermédiaire.

cycleLayout[-25]=6
cycleLayout[-10]=6
cycleLayout[-8]=6
cycleLayout[-5]=6
cycleLayout[-3]=6
cycleLayout[-1]=6
cycleLayout[0]=1
cycleLayout[1]=0.1
cycleLayout[8]=0.2
cycleLayout[10]=0.25
cycleLayout[14]=0.5
cycleLayout[19]=1
cycleLayout[23]=2
cycleLayout[25]=3
cycleLayout[26]=3.5
cycleLayout[30]=4
cycleLayout[35]=5

Partager ce message


Lien à poster
Partager sur d’autres sites

Hello

 

Je suis d'accord mais l'eau -8 ou  est gelée donc je pense que il n'y a pas besoin d'eesayer de faire tourner la pompe à  une eau de -25 dègrés :). Enfin c'est mon avis.

Partager ce message


Lien à poster
Partager sur d’autres sites

×