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 542 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)}