Page 32 sur 32

Re: Domotique Piscine

Posté : 01 juin 2020, 11:56
par Martial
Bonjour,
Regarde dans ton code tous les combien est lancé ChkFiltration().
N'est-ce pas uniquement toutes les 15mn, alors que le calcul se fait à la minute pret.

Exemple:
if (((time.min-1) % 15)== 0) then ChkFiltration() end

CQFD

Re: Domotique Piscine

Posté : 01 juin 2020, 12:00
par MAidEN91
Ah oui exact bien vu !

J'ai mis 5 min pour que ça soit un peu plus précis du coup merci :)

Re: Domotique Piscine

Posté : 04 juin 2020, 11:51
par multinet
Bonjour

J'utilise le script de gestion de piscine depuis plusieurs années sans aucun souci et cela fonctionne tres bien

J'ai updaté mon domoticz en derniere version lundi 1er Juin et depuis j'ai un comportement différent sur une mise à jour de compteur de minutes de filtration

Auparavant : chaque appel "Updatedev" remplacait la valeur (O minutes puis 5 minutes puis 10 minutes etc);, et depuis la mise à jour de domoticz, alors que je n'ai rien changé au script j'ai l'impression qu'il CUMULE les valeurs à chaque appel (et chaque appel est fait toutes les secondes !)

resultat :
Capture d’écran 2020-06-04 à 11.16.39.png
Capture d’écran 2020-06-04 à 11.16.39.png (180.23 Kio) Vu 1536 fois
la fonction lua en question :

Code : Tout sélectionner

function UpdateDev(device,nvalue,svalues)
    --Met à jour un device numérique Domotica
    print("Updatedev")
    print("nvalue:"..tostring(nvalue))
    print("svalues:"..tostring(svalues))
    commandArray[CmdIdx] = {['UpdateDevice'] = otherdevices_idx[device]..'|'..tostring(nvalue)..'|'..tostring(svalues)}
    CmdIdx=CmdIdx+1
end
l'appel de la fonction :

Code : Tout sélectionner

           -- Mise à jour du capteur loggant la durée de filtration, en minutes
            if (val_DebitFl > 0) and (val_PpeFl == "On") then 
                UpdateDev(dev_DureeFl,0,tonumber(PpeFait))
            elseif (val_PpeFl == "On") then
                print("Pompe en mode ON mais pas de débit --> le watchdog doit corriger, pas de mise à jour du compteur")
            end   
            
et enfin un extrait de log sur deux appels:

Code : Tout sélectionner

2020-06-04 11:34:02.195  Status: LUA: Script Piscine : Gestion de la filtration
2020-06-04 11:34:02.199  Status: LUA: ---Temperature de la piscine : 27.0
2020-06-04 11:34:02.527  Status: LUA: Déjà effectué : 680.0 minutes sur 815
2020-06-04 11:34:02.529  Status: LUA: PpeRest (conso piscine) : 135.0
2020-06-04 11:34:02.531  Status: LUA: =PpeDuree (conso piscine) : 815
2020-06-04 11:34:02.532  Status: LUA: -PpeFait (conso piscine) : 680.0
2020-06-04 11:34:02.536  Status: LUA: Temps restant de filtration : 135.0 minutes 
2020-06-04 11:34:02.538  Status: LUA: Updatedev
2020-06-04 11:34:02.540  Status: LUA: nvalue:0
2020-06-04 11:34:02.552  Status: LUA: svalues:680.0
2020-06-04 11:34:02.719  Status: EventSystem: Script event triggered: TIMER-Piscine Filtration

Code : Tout sélectionner

2020-06-04 11:35:04.510  Status: LUA: Script Piscine : Gestion de la filtration
2020-06-04 11:35:04.513  Status: LUA: ---Temperature de la piscine : 27.0
2020-06-04 11:35:04.643  Status: LUA: Déjà effectué : 685.0 minutes sur 815
2020-06-04 11:35:04.647  Status: LUA: PpeRest (conso piscine) : 130.0
2020-06-04 11:35:04.649  Status: LUA: =PpeDuree (conso piscine) : 815
2020-06-04 11:35:04.651  Status: LUA: -PpeFait (conso piscine) : 685.0
2020-06-04 11:35:04.652  Status: LUA: Temps restant de filtration : 130.0 minutes 
2020-06-04 11:35:04.654  Status: LUA: Updatedev
2020-06-04 11:35:04.655  Status: LUA: nvalue:0
2020-06-04 11:35:04.656  Status: LUA: svalues:685.0
2020-06-04 11:35:04.755  Status: EventSystem: Script event triggered: TIMER-Piscine Filtration

Avez vous une idée ?
Merci !
Multinet

Re: Domotique Piscine

Posté : 05 juin 2020, 13:54
par denis_brasseur
Ton anomalie a l'air de ressembler à celle ci :
Erreurs Compteurs Incrementiels 2020-1
aleph0 a écrit : 01 avr. 2020, 20:49 J'ai eu le même problème avec une bêta récente. Le comportement des compteurs a été changé :
Avant, compteur normal ou compteur incrémental, il fallait calculer le total par script et envoyer le total via le commandArray
Maintenant, pour le compteur incrémental, il faut n'envoyer que la valeur a ajouter aux compteur, et le compteur l'ajoute lui-même a la valeur précédente. Pour les compteurs non incrémental, ça reste comme avant : on envoi au compteur la valeur totale du compteur
Il te faudrait récupérer la valeur du compteur, et n'y ajouter que la différence avec la nouvelle valeur

Code : Tout sélectionner

--recuperation de la valeur du device
v1,v2 = otherdevices_svalues['nom de ton capteur']:match("([^;]+);([^;]+)")
--on soustrait de la valeur du device (v1) le valeur calculé (svalues) pour n'obtenir que la difference
newvalue = v1 - svalues
commandArray[CmdIdx] = {['UpdateDevice'] = otherdevices_idx[device]..'|'..tostring(nvalue)..'|'..tostring(newvalue)}

Re: Domotique Piscine

Posté : 07 déc. 2020, 11:09
par Gardaux
Bonjour,
Depuis que les températures ont baissées j'ai l'erreur suivante qui apparait :
2020-12-07 10:01:00.317 Error: EventSystem: in Gestion_piscine: [string "--[[ Script de gestion de la piscine ..."]:267: attempt to compare nil with number

La ligne concernée est la suivante :
if (val_Tair <= 1) and val_PpeFl == "Off" then
Dans le bloc :

if gst_HorsGel then
--[[ La température de l'eau est <12°C : on utilise la température
Démarrage si température d'air <= 1
Arrêt si température d'air >= 1.5 et température eau >= 0.5
--]]
val_Tair = tonumber(otherdevices_svalues[dev_TAir])
if (val_Tair <= 1) and val_PpeFl == "Off" then
print("Filtration piscine : Démarrage par température")
UpdateSw(dev_PpeFl,'On')
elseif (val_Tair >= 1.5) and (val_TEau>=0.5) and val_PpeFl == "On" then
print("Filtration piscine : Arrêt par température")
UpdateSw(dev_PpeFl,'Off')
end
end
Merci de l'aide que vous pourrez m'apporter :)

Re: Domotique Piscine

Posté : 07 déc. 2020, 12:53
par Keros
Essaye de mettre ton script entre les balises Code. Il y a un bouton </>. C'est plus facile pour lire.

En faisant du débogage (voir dans ma signature), est-ce que dev_TAir te retourne une valeur ?

Re: Domotique Piscine

Posté : 07 déc. 2020, 21:23
par Gardaux
Alors sur tes conseils j'ai mis un print pour avoir la valeur de dev_TAir, j'obtiens le résultat suivant :
2020-12-07 21:22:00.534 Status: LUA: Température Extérieure
2020-12-07 21:22:00.534 Status: LUA: 8.3000001907349

Code : Tout sélectionner

            if gst_HorsGel then
                --[[ La température de l'eau est <12°C : on utilise la température 
                Démarrage si température d'air <= 1
                Arrêt si température d'air >= 1.5 et température eau >= 0.5
                --]]               
                val_Tair = tonumber(otherdevices_temperature[dev_TAir])
                print(dev_TAir)
                print(otherdevices_temperature[dev_TAir])
                if (val_TAir <= 1) and val_PpeFl == "Off" then
                    print("Filtration piscine : Démarrage par température")
                    UpdateSw(dev_PpeFl,'On')
                elseif (val_TAir >= 1.5) and (val_TEau>=0.5) and val_PpeFl == "On" then
                    print("Filtration piscine : Arrêt par température")
                    UpdateSw(dev_PpeFl,'Off')
                end                
            end
est toujours la même erreur soit :
2020-12-07 21:23:00.540 Error: EventSystem: in Gestion_piscine: [string "--[[ Script de gestion de la piscine ..."]:271: attempt to compare nil with number

Upupup Le problème est résolu !
Après avoir modifié :
val_Tair = tonumber(otherdevices_svalues[dev_TAir])
par
val_TAir = tonumber(otherdevices_temperature[dev_TAir])
Tout est renté dans l'ordre

Un grand merci tout de même ;)

Re: Domotique Piscine

Posté : 07 déc. 2020, 21:40
par Keros
Pardon ma question était con, je n'avais pas bien lu. Mais tu as fait un print des deux valeurs, c'est super ;)

L'erreur indique que tu essayes de comparer une valeur nulle à une valeur numérique. Tu peux faire un print de val_TAir et val_PpeFl (désolé, j'ai voulu sauté une étape). Il faudrait également tester les deux conditions séparément afin de voir si c'est val_TAir <= 1 ou val_PpeFl == "Off" qui plante.
Avant if (val_TAir <= 1) and val_PpeFl == "Off" then , tu peux par exemple insérer if (val_TAir <= 1) then print("Ok1) end et une deuxième ligne avec l'autre partie de la condition.

Re: Domotique Piscine

Posté : 10 avr. 2021, 15:05
par vwstepha
Salut à tous!!!
A la mi-mai j'ai ma piscine!!!!
Filtration sable + électrolyseur + sonde ph-
Serait t-il possible d'avoir une version complète de votre script avec la liste des variables à définir?
C'est peut être abusé mais j'ai parcouru les 30 pages et je m'y perds (n étant pas assez calé aussi!) :mrgreen:
j 'ai déjà pas ma de chose sous domoticz mais je tâtonne..... :roll:

Je dédierai un Rasp 3b pour le local piscine et ce sera mon second esclave

Par contre une question:
j'ai donc tout ce matos pré-cité qui va être installé.
Dois-je rajouter 4 "T" pression ave réducteur pour ajouter:
1 doigt mesureur température ds18b20 ( j'ai déjà plusieurs sonde en version étanche)
1 doigt avec 1 sonde ph
1 doigt avec 1 sonde chlore
1 doigt avec injecteur PH-

Quel type de matériel pouvez vous me conseillez pour réaliser ces doigts
j'ai du tube en 50mm ( je sais pas quel doigt prendre et quel réducteur prendre....à visser, à coller)
ou prendre les sondes chlore et PH et l'injecteur PH

Si vous aviez des photos, ce serait top!!!! :D :D
Merci pour tout!!!!

Re: Domotique Piscine

Posté : 12 avr. 2021, 21:53
par mickaelr30
bonjour,
voici le montage que j'ai fait :
- 1 collier prise en charge avec adaptation d'un presse-étoupe d’électricien en amont de la pompe pour la sonde de température.
- 1 collier prise en charge en sortie de la pompe qui alimente des filtres à cartouche ( qui servent de chambre de tranquillisation) pour les sonde de ph, de chlore et bientôt de conductivité ( j'ai également adapté des presses étoupe d'électricien pour les sondes) qui repart en aval du filtre.
- 1 collier prise en charge en aval du filtre pour injection du Ph.