Domotique Piscine
Re: Domotique Piscine
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
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
Ah oui exact bien vu !
J'ai mis 5 min pour que ça soit un peu plus précis du coup merci
J'ai mis 5 min pour que ça soit un peu plus précis du coup merci

Re: Domotique Piscine
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 : la fonction lua en question :
l'appel de la fonction :
et enfin un extrait de log sur deux appels:
Avez vous une idée ?
Merci !
Multinet
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 : 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
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
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
-
- Messages : 625
- Enregistré le : 24 déc. 2018, 17:05
- Localisation : (26)
Re: Domotique Piscine
Ton anomalie a l'air de ressembler à celle ci :
Erreurs Compteurs Incrementiels 2020-1
Erreurs Compteurs Incrementiels 2020-1
Il te faudrait récupérer la valeur du compteur, et n'y ajouter que la différence avec la nouvelle valeuraleph0 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
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)}
Pi3 + DD PiDrive + RFXtrx433 + AEON Labs ZW090
7 Modules fil pilote ZMNHJD1
2 détecteur fumées CHACON 34131
5 Bresser Capteur thermo/hygro
1 contacteur porte Philio PST02-1A Z
OWL Micro+ CM180
D2L LINKY
FGR-223 "Roller Shutter 3"
7 Modules fil pilote ZMNHJD1
2 détecteur fumées CHACON 34131
5 Bresser Capteur thermo/hygro
1 contacteur porte Philio PST02-1A Z
OWL Micro+ CM180
D2L LINKY
FGR-223 "Roller Shutter 3"
Re: Domotique Piscine
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
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

---------------------------------------------------------------------------------------------------
Domoticz + Raspberry Pi3 x2 + RFXCOM (IFTTT)
Domoticz + Synology + RFLink
Domoticz + Raspberry Pi3 x2 + RFXCOM (IFTTT)
Domoticz + Synology + RFLink
Re: Domotique Piscine
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 ?
En faisant du débogage (voir dans ma signature), est-ce que dev_TAir te retourne une valeur ?
Mon installation - Ma philosophie sur le forum - Débuter en programmation - Aide au débogage
Mes Tutos : OpenWeatherMap LUA
Mes Tutos : OpenWeatherMap LUA
Re: Domotique Piscine
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
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
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
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

---------------------------------------------------------------------------------------------------
Domoticz + Raspberry Pi3 x2 + RFXCOM (IFTTT)
Domoticz + Synology + RFLink
Domoticz + Raspberry Pi3 x2 + RFXCOM (IFTTT)
Domoticz + Synology + RFLink
Re: Domotique Piscine
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.

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.
Mon installation - Ma philosophie sur le forum - Débuter en programmation - Aide au débogage
Mes Tutos : OpenWeatherMap LUA
Mes Tutos : OpenWeatherMap LUA