Re: volume eau de pluie récupérée
Publié : 08 juil. 2016, 08:00
Salut,
j'ai un problème de syntaxe....
Les valeurs de mon capteur de distance oscillent de 1cm par moment. Du coup le script calcule qu'on a récupéré de l'eau même s'il n'a pas plu...
Je voudrais donc inclure la condition de ne faire le calcul que s'il a plu.
J'ai donc relevé la valeur de la pluie du jour et j'ai essayé de le mettre en condition mais j'ai une erreur:
voici le script:
quand je fais un print(pluiedujour) j'obtiens deux valeurs:

Si un pro du code pouvait me donner un coup de main svp!
j'ai un problème de syntaxe....
Les valeurs de mon capteur de distance oscillent de 1cm par moment. Du coup le script calcule qu'on a récupéré de l'eau même s'il n'a pas plu...
Je voudrais donc inclure la condition de ne faire le calcul que s'il a plu.
J'ai donc relevé la valeur de la pluie du jour et j'ai essayé de le mettre en condition mais j'ai une erreur:
Code : Tout sélectionner
2016-07-08 07:55:00.563 Error: EventSystem: in /home/pi/domoticz/scripts/lua/script_time_recup_eau.lua: /home/pi/domoticz/scripts/lua/script_time_recup_eau.lua:30: attempt to compare number with nilCode : Tout sélectionner
--Ce script permet de calculer et d'afficher sur un compteur, le volume quotidien d'eau de pluie emmagasiné dans une cuve
--Pour utiliser ce script, il faut:
-- un capteur de distance qui mesure la distance entre le haut de la cuve et l'eau (ici nommé: Hauteur eau cuve arrosage). Voir Mysensors :https://www.mysensors.org/build/distance
-- un compteur d'eau de type compteur incrémental(ici nommé: Gain Eau pluie cuve /jour). NB: mettez en concordance l'ID de votre compteur ligne 17
-- modifiez les dimensions de la base de votre cuve (longueur et largeur) ligne 20
-- modifiez les heures de prise de mesure des deux hauteurs d'eau qui vont permettre de calculer le volume d'eau emmagasiné. Les deux valeurs devront impérativement être prise ENTRE DEUX ARROSAGES pour ne pas fausser les mesures. lignes 28 et 38
-- créer une variable utilisateur nommée depth qui permettra de stocker une des deux hauteur d'eau nécessaire au calcul
-- Input devices:
depth_sensor = 'Hauteur eau cuve arrosage'
-- Output devices: volume.
volume_sensor = 'Gain Eau pluie cuve /jour'
volume_sensor_id = 123
-- Tank dimensions
tank_area = 40 * 40
-----------------------------------------------------------------------------------
commandArray = {}
time = os.date("*t")
pluiedujour = otherdevices_svalues['Pluie']
print(pluiedujour)
--condition d'heure : peu APRES l'arrosage de fin de journée (ici arrosage à 21h)
if (time.hour ==7 and time.min == 55 and (tonumber(pluiedujour)) > 0) then
depth = otherdevices_svalues[depth_sensor]
print(depth)
--stockage dans une variable utilisateur appelée aussi depth
commandArray['Variable:depth']= (depth)
end
--condition d'heure : peu AVANT le nouvel arrosage
if (time.hour ==20 and time.min == 55) then
--rappel de la valeur de la variable utilisateur depth
depth=uservariables["depth"]
depth2 = otherdevices_svalues[depth_sensor]
print(depth)
print(depth2)
print(tank_area)
-- Calcul du volume d'eau récupéré
volume = ((depth - depth2) * tank_area / 1000)*2 --j'ai deux cuves en vase communiquant donc il faut multiplier par deux
-- Mise a jour du compteur
commandArray[2] = {['UpdateDevice'] = volume_sensor_id .. "|0|" .. volume}
end
Si un pro du code pouvait me donner un coup de main svp!