Encore un arrosage automatique !
Re: Encore un arrosage automatique !
J'avais trouvé ça dans une documentation lorsque je m'étais renseigné sur les méthodes de calcul, à l'époque. Je vais tenter de te la retrouver.
Envoyé de mon moto g(6) en utilisant Tapatalk
Envoyé de mon moto g(6) en utilisant Tapatalk
Re: Encore un arrosage automatique !
Après avoir vu bcp de doc, j'ai trouvé ça
https://ariege.chambre-agriculture.fr/f ... on_sol.pdf
avec c'est un peu mouillé pour faire des boules en ce moment
J'ai une étude de sol qui dit que j'ai du remblai limoneux sur 1,3m et ensuite du limoneux-marneux jusqu'à plus de 3 m.
Donc si je prends 1,8 (terre limoneuse) * 130 m = 234 mm
Je ne sais pas quoi faire de la 2eme couche..., si je prends 1 * (300 - 130) = 170 mm
Soit 400 mm ?
Comme c'est pour du gazon au plus les racines seraient de 60 cm (ce sera un record).
https://ariege.chambre-agriculture.fr/f ... on_sol.pdf
avec c'est un peu mouillé pour faire des boules en ce moment
J'ai une étude de sol qui dit que j'ai du remblai limoneux sur 1,3m et ensuite du limoneux-marneux jusqu'à plus de 3 m.
Donc si je prends 1,8 (terre limoneuse) * 130 m = 234 mm
Je ne sais pas quoi faire de la 2eme couche..., si je prends 1 * (300 - 130) = 170 mm
Soit 400 mm ?
Comme c'est pour du gazon au plus les racines seraient de 60 cm (ce sera un record).
Re: Encore un arrosage automatique !
voici les scripts fait en dzVents: 1 pour l'EVP et 1 pour le RFU avec partir des scripts d'aleph0
pour l'EVP
pour le RFU
Utilisation d'un compteur incremental pour l'EVP pour pouvoir mettre une custom icon
et un custom sensor pour le RFU également avec une icone
Pour les infos météo j'utilise wunderground qui permet d'avoir accès à des stations météo (je trouve plus précis pour la pluie car ce sont des valeurs réelles par rapport à un service de météo général), du coup, je ne sais pas la hauteur de la mesure du vent
pour l'EVP
Code : Tout sélectionner
-- Script to estimate potential evapotranspiration according to Penman Monteith formula and FAO-56 method
--
-- 17/12/2021 - inital from https://domoticz.com/forum/viewtopic.php?p=249287#p249287
-- 02/01/2022 - result in a user variable and a counter updated via json to avoid "complication"
-- 12/01/2022 - some fix
-- 29/01/2022 - change RFX counter to increment as result that give abnormal values
-- 18/03/2022 - add a custom sensor to save the EVP no rounded for tracability
-- Weather sensors for EVP
local dev_barometer = 2336 -- Atmospheric pressure (hPa)
local dev_temperature = 2336 -- Outside temperature (°C)
local dev_humidity = 2336 -- Relative humidity (%)
local dev_Rn = 1911 -- Global sun radiation (Lux)
local dev_U = 2338 -- Wind speed (m/s)
local cst_G = 0 -- Thermal flux to the ground (MJ/h/m²)
local cst_h = 5 -- Height of wind speed mesurement (m) !!!
local Cn = 37 -- Hou rly steps...
-- EVP result in mm user variables and device to create w the GUI
local uv_EVP_noRounded = 17 -- Result of the day no rounded in a user variable
local uv_EVP_rounded = 33 -- Result rounded in a user variable
local uv_EVP_deltaNoRounded = 37-- Result delta no rounded in a user variable, resetted by RFU script
local dev_EVP_countIncr = 2476 -- Result rounded for UX in a incremental counter (divider = 10) -- comment if not used
local dev_EVP_custom = 2520 -- Result not rounded for tracking in a custom counter -- comment if not used
local dev_EVP_rain = 2475 -- Result rounded for UX in a rain counter -- comment if not used
-------------
local dev_EVP_countIncrOLD = 2423 -- Result rounded for UX in a incremental counter (divider = 10) -- comment if not used
--------
local TIME_INTERVAL = 'every 5 minutes except at 00:00-01:00' -- issue with counter after 00:00, to limit issue ; not necessary by night
local TEST = 203 -- to uncomment to use: launch the script w/o waiting
local LOG_DEBUG = 0 -- 0 =>ERROR / 1 => FORCE / 2 => DEBUG
local LOG_LEVEL
local LOGGING
if LOG_DEBUG == 2 then
LOGGING = domoticz.LOG_DEBUG
LOG_LEVEL = domoticz.LOG_DEBUG
elseif LOG_DEBUG == 1 then
LOGGING = domoticz.LOG_FORCE
LOG_LEVEL = domoticz.LOG_FORCE
else
LOGGING = domoticz.LOG_ERROR
LOG_LEVEL = domoticz.LOG_INFO
end
return {
logging = { level = LOGGING,
},
on = {
devices = {TEST},
timer = {TIME_INTERVAL}
},
execute = function(dz, item, triggerInfo)
_G.logMarker = dz.moduleLabel -- set logmarker to scriptname
local _u = dz.utils
local openURLAfterSec = 3
local function logWrite(str, level)
if level == nil then level = LOG_LEVEL end
dz.log(tostring(str), level)
end
local function jsonCounter(p_IDX, p_value)
logWrite('IDX= ' .. p_IDX .. ' value= ' .. p_value)
local cmd = '/json.htm?type=command¶m=udevice&idx=' .. p_IDX .. '&svalue=' .. p_value
local url = 'http://127.0.0.1:8080' .. cmd
logWrite('url= ' .. url)
dz.openURL(url).afterSec(openURLAfterSec) -- to avoid error w several openURL at the same time ?
openURLAfterSec = openURLAfterSec + 1
return
end
local function jsonCounterIncr(p_IDX, p_incr)
logWrite('IDX= ' .. p_IDX .. ' incr= ' .. p_incr)
local cmd = '/json.htm?type=command¶m=udevice&idx=' .. p_IDX .. '&nvalue=0&svalue=' .. p_incr
local url = 'http://127.0.0.1:8080' .. cmd
logWrite('url= ' .. url)
dz.openURL(url).afterSec(openURLAfterSec) -- to avoid error w several openURL at the same time ?
openURLAfterSec = openURLAfterSec + 1
return
end
---------------------------
-- reading of sensors
local P = dz.devices(dev_barometer).barometer
local T = dz.devices(dev_temperature).temperature
local Hr = dz.devices(dev_humidity).humidity
local Rn = (dz.devices(dev_Rn).lux) * 0.0079 -- W/m²
local U2 = dz.devices(dev_U).speedMs
local Cd
if dz.time.isDayTime then
Cd=0.24 -- at day
else
Cd=0.96 -- at night
end
--[[
logWrite('P: ' .. P)
logWrite('T: ' .. T)
logWrite('Hr: ' .. Hr)
logWrite('Rn: ' .. Rn)
logWrite('U2: ' .. U2)
logWrite('Cn: ' .. Cn)
logWrite('Cd: ' .. Cd)
logWrite('cst_h:' .. cst_h)
--]]
-- unit convertions
P = P/10 -- must be in kPa
Hr = Hr/100
Rn = Rn/277.77778 -- must be in MJ/h/m²
U2 = U2*4.87/math.log(67.8*cst_h-5.42) -- windspeed at 2m height, in m/s
--[[
logWrite("P': " .. P)
logWrite("Hr': " .. Hr)
logWrite("Rn': " .. Rn)
logWrite("U2': " .. U2)
--]]
-- Intermediates calculations
local Esat = 0.6108*math.exp(17.27*T/(T+237.3)) -- saturated vapor pressure (kPa)
local Ea = Hr*Esat -- current vapor pressure (kPa)
local Delta = 4098*Esat/((T+237.3)^2)
local Gamma = 0.665*P/1000
logWrite("Pressure of saturated vapor: "..Esat.." kPa")
logWrite("Pressure of actual vapor: "..Ea.." kPa")
logWrite("Delta: ".. Delta)
logWrite("Gamma: "..Gamma)
local ET0=(0.408*Delta*(Rn-cst_G)+Gamma*Cn/(T+273)*U2*(Esat-Ea))/(Delta+Gamma*(1+Cd*U2)) -- EVP in mm/h
logWrite("ET0 => ".. ET0 .." mm/h", dz.LOG_FORCE)
---------------------------------------
-- with RFX meter
local lastEVPUpdateInSec, EVP_delta, EVP_prevNoRouded, EVP_prevRounded, EVP_newNoRound, EVP_newRounded, EVP_last, EVP_deltaRounded
lastEVPUpdateInSec = dz.variables(uv_EVP_noRounded).lastUpdate.secondsAgo
logWrite('EVP updated ' .. lastEVPUpdateInSec .. ' sec ago')
EVP_delta = ET0 * lastEVPUpdateInSec / 3600
logWrite('EVP_delta => ' .. EVP_delta .. ' mm', dz.LOG_FORCE)
-- to user variable
local EVP_deltaPrev = dz.variables(uv_EVP_deltaNoRounded).value
logWrite('EVP_deltaPrev => ' .. EVP_deltaPrev .. ' mm', dz.LOG_FORCE)
local EVP_deltaNew = EVP_deltaPrev + EVP_delta
logWrite('EVP_deltaNew => ' .. EVP_deltaNew .. ' mm', dz.LOG_FORCE)
dz.variables(uv_EVP_deltaNoRounded).set(EVP_deltaNew)
if dz.variables(uv_EVP_noRounded).lastUpdate.isToday then
logWrite('Same day')
EVP_prevNoRouded = dz.variables(uv_EVP_noRounded).value
logWrite('EVP_prevNoRouded: ' .. EVP_prevNoRouded)
EVP_newNoRound = EVP_prevNoRouded + EVP_delta
EVP_prevRounded = dz.variables(uv_EVP_rounded).value
logWrite('EVP_prevRounded: ' .. EVP_prevRounded)
else
logWrite('New day')
EVP_newNoRound = EVP_delta
EVP_prevRounded = 0
end
logWrite('EVP => ' .. EVP_newNoRound .. ' mm', dz.LOG_FORCE)
-- to user variable
dz.variables(uv_EVP_noRounded).set(EVP_newNoRound)
-- to custom sensor
if dev_EVP_custom ~= nil then
jsonCounterIncr(dev_EVP_custom, EVP_newNoRound)
end
EVP_newRounded = math.floor(EVP_newNoRound * 10) / 10
logWrite('EVP_newRounded: ' .. EVP_newRounded)
dz.variables(uv_EVP_rounded).set(EVP_newRounded)
-- to a rain counter
if dev_EVP_rain ~= nil then
logWrite('Update rain counter' .. dz.devices(dev_EVP_rain).name)
dz.devices(dev_EVP_rain).updateRain(_u.round(ET0 * 100,3), EVP_newRounded) -- updateRain(rate, counter): Function. (rate in mm * 100 per hour, counter is total in mm)
end
-- to increment counter
if dev_EVP_countIncr ~= nil then
logWrite('Update incr counter' .. dz.devices(dev_EVP_countIncr).name)
EVP_deltaRounded = EVP_newRounded - EVP_prevRounded
logWrite('EVP_deltaRounded: ' .. EVP_deltaRounded)
jsonCounterIncr(dev_EVP_countIncrOLD, EVP_deltaRounded * 10) -- Divider
--dz.devices(dev_EVP_countIncr).updateCounter(EVP_deltaRounded)
jsonCounterIncr(dev_EVP_countIncr, EVP_deltaRounded * 10) -- Divider
end
logWrite("*** FIN ***")
end
}
Code : Tout sélectionner
--[[
Estimation du RFU
Idée : Toutes les 5 minutes, on fait le bilan
RU=RU+Pluie+arrosage-EVP sur la période précédente, limité en maximum (>320) et minimum (<0)
from https://domoticz.com/forum/viewtopic.php?p=249287#p249287
La variable à créer pour contenir l'humidité s'appelle RFU_RU,
elle varie entre 0 (sol complètement sec, toutes les plantes sont mortes depuis longtemps)
et la constante RUmax, qui dépends de votre sol (dans mon cas 320mm).
Pour initialiser le bilan un jour de grosse pluie,
il suffit de donner manuellement la valeur RUmax à la variable RFU_RU lorsqu'on voit que le sol est saturé.
-- RFU: Réserve Facilement Utilisable ou confort hydrique
ajouter coefficient cultural: https://easydomoticz.com/forum/viewtopic.php?p=69436&sid=6bd466a6a7862e21dee9adc66beaec48#p69436
https://fr.wikipedia.org/wiki/R%C3%A9serve_utile_en_eau_d%27un_sol
https://en.wikipedia.org/wiki/Available_water_capacity
-- 28/12/2021 - initial
--]]
local RU_MAX = 420 --
local wateredSurface = 40 -- m2
-- Actual values updated in other scripts
--local uv_EVP_day = 17 -- user variable for actual EVP (day)
local uv_EVP_deltaNoRounded = 37 -- user variable EVP delta no rounded from EVP script, resetted by RFU script
--local dev_rain = 2334 -- device for actual rain
local uv_rain = 28 -- user variable for rain (day)
local dev_watering1 = 1897 -- device for actual watering 1/2 (pelouse 1)
local dev_watering2 = 1899 -- device for actual watering 2/2 (pelouse 2)
local dev_RU = 2319 -- device for RFU (custom)
local dev_RFU_cb = 2328
-- Values from the previous run (mm) updated in this script
local uv_EVPPrevious = 21 -- user variable for previous EVP
local uv_rainPrevious = 20 -- user variable for previous Rain
local uv_RU = 22 -- user variable for previous RFU
local uv_wateringPrevious = 19 -- user variable for previous Watering
--local TIME_INTERVAL = 'every 5 minutes except at 00:00-01:00' -- issue with counter after 00:00, to limit issue ; not necessary by night
--local TEST = 207 -- a dummy switch to trigger the script w/o waiting (for testing)
local LOG_DEBUG = 2 -- 0 =>ERROR / 1 => FORCE / 2 => DEBUG
local LOG_LEVEL
local LOGGING
if LOG_DEBUG == 2 then
LOGGING = domoticz.LOG_DEBUG
LOG_LEVEL = domoticz.LOG_DEBUG
elseif LOG_DEBUG == 1 then
LOGGING = domoticz.LOG_FORCE
LOG_LEVEL = domoticz.LOG_FORCE
else
LOGGING = domoticz.LOG_ERROR
LOG_LEVEL = domoticz.LOG_INFO
end
return {
logging = {
level = LOGGING
},
on = {
devices = {TEST},
timer = {TIME_INTERVAL},
variables = {uv_EVP_deltaNoRounded}
},
execute = function(dz, item, triggerInfo)
_G.logMarker = dz.moduleLabel -- set logmarker to scriptname
local _u = dz.utils
local function logWrite(str, level)
if level == nil then level = LOG_LEVEL end
dz.log(tostring(str), level)
end
---------------------------
logWrite("*** START ***")
--local EVPActual = _u.round(dz.variables(uv_EVP_day).value, 3)
--local EVPPrevious = dz.variables(uv_EVPPrevious).value
local EVPDelta = dz.variables(uv_EVP_deltaNoRounded).value
logWrite('EVPDelta: ' .. EVPDelta .. ' mm', dz.LOG_FORCE)
--logWrite('EVPActual: ' .. EVPActual .. ' EVPPrevious: ' .. EVPPrevious .. ' mm')
local rainActual
if uv_rain ~= nil then
rainActual = _u.round(dz.variables(uv_rain).value, 3)
elseif dev_rain ~= nil then
rainActual = _u.round(dz.devices(dev_rain).rain, 3)
else
logWrite('rainActual not defined', dz.LOG_ERROR)
end
local newDay = false
if dz.variables(uv_rainPrevious).lastUpdate.isToday then
logWrite('Same day')
else
logWrite('New day')
newDay = true
end
local rainPrevious = _u.round(dz.variables(uv_rainPrevious).value, 3)
logWrite('rainActual: ' .. rainActual .. ' rainPrevious: ' .. rainPrevious .. ' mm')
if rainActual < rainPrevious then
logWrite('rainActual < rainPrevious: ' .. rainActual .. ' < ' .. rainPrevious .. ' mm')
if not newDay then
logWrite('rain data issue ' .. rainActual .. ' < ' .. rainPrevious, dz.LOG_ERROR)
end
rainPrevious = 0
end
local wateringActualVol = _u.round(dz.devices(dev_watering1).counter + dz.devices(dev_watering2).counter, 3)
logWrite('wateringActualVol: ' .. wateringActualVol .. ' m3')
local wateringActualAera = _u.round(wateringActualVol / wateredSurface * 1000, 3) -- to mm in m2
local wateringPreviousArea = _u.round(dz.variables(uv_wateringPrevious).value, 3)
local RUPrevious = _u.round(dz.variables(uv_RU).value, 3)
logWrite('wateringActualAera: ' .. wateringActualAera .. ' wateringPreviousArea: ' .. wateringPreviousArea .. ' mm')
logWrite('RUPrevious: ' .. RUPrevious .. ' mm')
local RUActual
--RUActual = RUPrevious + (wateringActualAera - wateringPreviousArea) + (rainActual - rainPrevious) - (EVPActual - EVPPrevious)
RUActual = RUPrevious + (wateringActualAera - wateringPreviousArea) + (rainActual - rainPrevious) - EVPDelta
logWrite('RUActual: ' .. RUActual)
if RUActual < 0 then
RUActual = 0
logWrite('RU Actual reset to 0')
elseif
RUActual > RU_MAX then
RUActual = RU_MAX
logWrite('RU Actual set to RU MAX: ' .. RU_MAX)
end
if RUActual > RUPrevious then
--logWrite('RU Actual > Previous ; RU ' .. RUActual .. '= RU ' .. RUPrevious .. ' + watering (' .. wateringActualAera .. ' - ' .. wateringPreviousArea .. ') + rain (' .. rainActual .. ' - ' .. rainPrevious .. ') - EVP (' .. EVPActual .. ' - ' .. EVPPrevious .. ')', dz.LOG_FORCE)
logWrite('RU Actual > Previous ; RU ' .. RUActual .. '= RU ' .. RUPrevious .. ' + watering (' .. wateringActualAera .. ' - ' .. wateringPreviousArea .. ') + rain (' .. rainActual .. ' - ' .. rainPrevious .. ') - EVP (' .. EVPDelta .. ')', dz.LOG_FORCE)
end
dz.devices(dev_RU).updateCustomSensor(_u.round(RUActual,1))
local soilMoisture = _u.round(200 * (1 - RUActual / RU_MAX),0)
logWrite('RFU: ' .. soilMoisture .. ' cb')
dz.devices(dev_RFU_cb).updateSoilMoisture(soilMoisture)
dz.variables(uv_RU).set(RUActual)
--dz.variables(uv_EVPPrevious).set(EVPActual)
dz.variables(uv_EVP_deltaNoRounded).set(0).silent() -- reset after being used
dz.variables(uv_rainPrevious).set(rainActual)
dz.variables(uv_wateringPrevious).set(wateringActualAera)
logWrite("*** FIN ***")
end
}
et un custom sensor pour le RFU également avec une icone
Pour les infos météo j'utilise wunderground qui permet d'avoir accès à des stations météo (je trouve plus précis pour la pluie car ce sont des valeurs réelles par rapport à un service de météo général), du coup, je ne sais pas la hauteur de la mesure du vent
Re: Encore un arrosage automatique !
Merci pour les scripts en dzvent, c'est sympa de voir son travail repris et amélioré par la communauté 
Si tu intérroge une station de particulier, c'est en général à 2 ou 3m du sol. Pour une station officielle (aéroport, etc...) c'est plutôt 10m
Re: Encore un arrosage automatique !
J'avais pas vu ton message, désolé pour la réponse tardive :-/. Ne te préoccupe pas de la couche profonde : Elle ne concernera que les arbres et, à cette profondeur, ils savent se débrouiller pour aller chercher l'eau dont ils ont besoin : Pas besoin d'une grande précision dans l'arrosage des arbres. Pour le gazon, considère seulement la 1ere couche en réglant sur 234 mm initialement, puis si besoin tu ajusteras en observant si l'arrosage correspond bien au besoin de ton gazonhestia a écrit : 10 janv. 2022, 20:31 J'ai une étude de sol qui dit que j'ai du remblai limoneux sur 1,3m et ensuite du limoneux-marneux jusqu'à plus de 3 m.
Donc si je prends 1,8 (terre limoneuse) * 130 m = 234 mm
Je ne sais pas quoi faire de la 2eme couche..., si je prends 1 * (300 - 130) = 170 mm
Soit 400 mm ?
Comme c'est pour du gazon au plus les racines seraient de 60 cm (ce sera un record).
Re: Encore un arrosage automatique !
Merci pour l'info.aleph0 a écrit : 30 mars 2022, 09:06 Merci pour les scripts en dzvent, c'est sympa de voir son travail repris et amélioré par la communauté
Si tu intérroge une station de particulier, c'est en général à 2 ou 3m du sol. Pour une station officielle (aéroport, etc...) c'est plutôt 10m
En regardant de plus prêt, je peux savoir assez de précision où se trouvent les stations que j'utilise et avec google maps savoir si c'est une maison ou non.
Dans 2 cas, c'est une maison donc 2 ou 3 m.
Dans un cas il est plus probable que ce soit sur le toit d'un immeuble collectif (3 étages) que sur le parking...donc plus de 10 m
Merci, avec cette valeur cela paraît plus cohérent par rapport à une mesure avec le doigthestia a écrit : 10 janv. 2022, 20:31 Pour le gazon, considère seulement la 1ere couche en réglant sur 234 mm initialement, puis si besoin tu ajusteras en observant si l'arrosage correspond bien au besoin de ton gazon
Dernière modification par Keros le 31 mars 2022, 20:19, modifié 1 fois.
Raison : Merci de grouper les réponses dans un seul message
Raison : Merci de grouper les réponses dans un seul message
Re: Encore un arrosage automatique !
@aleph0
j'ai mis en oeuvre l'EVP et le RFU et j'aurais besoin d'avis sur les ordres de grandeurs...
En avril l'EVP est de l'ordre de 3 mm/j, soit 90 mm pour le mois
En mai l'EVP est de l'ordre de 6 mm/j, soit 90 mm pour 15j
Pour la pluie:
avril: 60 mm
mai: 5 mm
Pas d'arrosage
je comprends que le sol a perdu 90 + 90 - 60 - 5 = 115 mm d'eau par m2
Le RFU est passé de plus de 200 à moins de 100
Le RU MAX est à 230 mm
D'après les calculs du script de l'eau nécessaire:
RFU: 102 cb
start_Hs: 25cb
target_Hs: 20cb
wateringNeed_mm: 94.3
wateringNeed_L: 2829.0
Il faut remettre les 100 mm perdus, soit pour 30 m2, 3 m3
c'est toute ma cuve d'eau de pluie
Ces ordres de grandeurs sont-il justes?
Le RFU MAX n'est-il pas trop grand? C'est de la pelouse...
Autre question:
D'où vient le 200 dans cette formule ?
new_Hs=round(200*(1-new_RU/RUmax))
j'ai mis en oeuvre l'EVP et le RFU et j'aurais besoin d'avis sur les ordres de grandeurs...
En avril l'EVP est de l'ordre de 3 mm/j, soit 90 mm pour le mois
En mai l'EVP est de l'ordre de 6 mm/j, soit 90 mm pour 15j
Pour la pluie:
avril: 60 mm
mai: 5 mm
Pas d'arrosage
je comprends que le sol a perdu 90 + 90 - 60 - 5 = 115 mm d'eau par m2
Le RFU est passé de plus de 200 à moins de 100
Le RU MAX est à 230 mm
D'après les calculs du script de l'eau nécessaire:
RFU: 102 cb
start_Hs: 25cb
target_Hs: 20cb
wateringNeed_mm: 94.3
wateringNeed_L: 2829.0
Il faut remettre les 100 mm perdus, soit pour 30 m2, 3 m3
c'est toute ma cuve d'eau de pluie
Ces ordres de grandeurs sont-il justes?
Le RFU MAX n'est-il pas trop grand? C'est de la pelouse...
Autre question:
D'où vient le 200 dans cette formule ?
new_Hs=round(200*(1-new_RU/RUmax))
Re: Encore un arrosage automatique !
Salut !
Pour les ordres de grandeurs de l'EVP, tout dépends de ta localisation et de ta météo, mais les chiffres que tu cites ne me choquent pas. Ci-dessous la mienne pour le centre hérault :
Je ne sais pas si tu as implémenté la dernière modif que j'ai publié pour tenir compte du coefficient cultural : La plupart des cultures n'ont besoin que d'une fraction de l'EVP, qui varie au cours de l'année et de leur cycle de croissance. Ceci dit, pour un gazon, il devrait être proche de 1 pour être au mieux de sa forme, par définition même de l'EVP. Ça vaudrait quand même le coup de fouiller la question, ce que je n'ai pas fait n'ayant pas de gazon.
Toujours sur les ordres de grandeur, je te confirme qu'on ne fais pas grand chose avec 3m3. En ce moment je passe ~750l/j pour 160m² de potager bâché. Et en regardant la tête des plantes, je ne suis pas sur-estimé. Si on fait le ratio de surface, ça fait ~4m3/mois pour 30m² ; pour peu qu'on ne soit pas dans la même région ça colle.
Enfin, si tu pense que le script n'est pas ajusté, tu as deux paramètres sur lesquels jouer :
- le RU_max de ton sol (mais ça, je crois que tu l'as déjà ajusté). Il définit la capacité de "l'éponge" que constitue le sol pour retenir les eaux de pluie ou d'arrosage lorsqu'il pleut plus que ne le nécessite les plantes. Si tu trouve que le script met trop de temps pour redémarrer les arrosages après une pluie, diminue le RU_max, s'il redémarre trop vite, augmente le
- le cst_adj qui te permet demander au script d'arroser plus ou moins. cst_adj=1 donnera exactement la quantité calculée ; 1.2 donnera 20% de plus ; 0.8 donnera 20% de moins
Dans la formule new_Hs=round(200*(1-new_RU/RUmax)), le 200 provient de la définition des cb pour mesurer l'humidité du sol : 0 cb=sol saturé ; 200 cb = sol totalement sec (voir p. ex https://www.agriexpo.online/fr/prod/spe ... 51842.html)
Pour les ordres de grandeurs de l'EVP, tout dépends de ta localisation et de ta météo, mais les chiffres que tu cites ne me choquent pas. Ci-dessous la mienne pour le centre hérault :

Je ne sais pas si tu as implémenté la dernière modif que j'ai publié pour tenir compte du coefficient cultural : La plupart des cultures n'ont besoin que d'une fraction de l'EVP, qui varie au cours de l'année et de leur cycle de croissance. Ceci dit, pour un gazon, il devrait être proche de 1 pour être au mieux de sa forme, par définition même de l'EVP. Ça vaudrait quand même le coup de fouiller la question, ce que je n'ai pas fait n'ayant pas de gazon.
Toujours sur les ordres de grandeur, je te confirme qu'on ne fais pas grand chose avec 3m3. En ce moment je passe ~750l/j pour 160m² de potager bâché. Et en regardant la tête des plantes, je ne suis pas sur-estimé. Si on fait le ratio de surface, ça fait ~4m3/mois pour 30m² ; pour peu qu'on ne soit pas dans la même région ça colle.
Enfin, si tu pense que le script n'est pas ajusté, tu as deux paramètres sur lesquels jouer :
- le RU_max de ton sol (mais ça, je crois que tu l'as déjà ajusté). Il définit la capacité de "l'éponge" que constitue le sol pour retenir les eaux de pluie ou d'arrosage lorsqu'il pleut plus que ne le nécessite les plantes. Si tu trouve que le script met trop de temps pour redémarrer les arrosages après une pluie, diminue le RU_max, s'il redémarre trop vite, augmente le
- le cst_adj qui te permet demander au script d'arroser plus ou moins. cst_adj=1 donnera exactement la quantité calculée ; 1.2 donnera 20% de plus ; 0.8 donnera 20% de moins
Dans la formule new_Hs=round(200*(1-new_RU/RUmax)), le 200 provient de la définition des cb pour mesurer l'humidité du sol : 0 cb=sol saturé ; 200 cb = sol totalement sec (voir p. ex https://www.agriexpo.online/fr/prod/spe ... 51842.html)
Re: Encore un arrosage automatique !
Merci pour ce retour
Pour les ordres de grandeur, je suis près de Paris et donc je constate que c'est cohérent, hier il faisait chaud (entre 20° et 28°, moy = 25°) et j'ai perdu 7,7 mm (EVP), pas de pluie!
Pour le coef cultural, en cherchant rapidement, vu ici http://documentation.2ie-edu.org/cdi2ie ... um_id=2780 "la méthode de Penman-Monteith comme méthode privilégiée d'estimation de ET0 du gazon, et donc pour servir de base à la détermination des coefficients culturaux"
Donc mon gazon pourrait être ma référence
Pour la tête de mon gazon, il n'a pas l'air sec et pourtant ça indique dangereusement sec Si j'augmente le RU_Max il faut aussi que j'augmente le RFU actuel, sinon ça affiche encore plus sec...
=> calculer une valeur...
Le cst_adj : pas trouvé dans les scripts ni le topic
Si c'est le coef par rapport à la capacité du puits, j'en ai fait un rapide pour ma cuve: je ne prends pas plus d' 1/15 de ce qui reste dans la cuve pour tenir 15 jours... en attendant mieux
Pour les ordres de grandeur, je suis près de Paris et donc je constate que c'est cohérent, hier il faisait chaud (entre 20° et 28°, moy = 25°) et j'ai perdu 7,7 mm (EVP), pas de pluie!
Pour le coef cultural, en cherchant rapidement, vu ici http://documentation.2ie-edu.org/cdi2ie ... um_id=2780 "la méthode de Penman-Monteith comme méthode privilégiée d'estimation de ET0 du gazon, et donc pour servir de base à la détermination des coefficients culturaux"
Donc mon gazon pourrait être ma référence
Pour la tête de mon gazon, il n'a pas l'air sec et pourtant ça indique dangereusement sec Si j'augmente le RU_Max il faut aussi que j'augmente le RFU actuel, sinon ça affiche encore plus sec...
=> calculer une valeur...
Le cst_adj : pas trouvé dans les scripts ni le topic
Si c'est le coef par rapport à la capacité du puits, j'en ai fait un rapide pour ma cuve: je ne prends pas plus d' 1/15 de ce qui reste dans la cuve pour tenir 15 jours... en attendant mieux
Re: Encore un arrosage automatique !
Ah oui, là c'est pas bon !! Y'a clairement un décalage entre le script et la réalité. As-tu initialisé le RFU actuel à RU_max un jour où tu pouvais observer des flaques d'eau dans ton jardin ? C'est le plus facile pour caler le script sur l'état "saturé". Car il agit comme un bilan apport-pertes, mais à un moment donné il faut l'initialiser sur une valeur connue.
Je viens de voir que le cst_adj est une modif ultérieure que je n'ai pas publiée
voici l'impact :
script EVP :
Script Arrosage
Je viens de voir que le cst_adj est une modif ultérieure que je n'ai pas publiée
script EVP :
- définir la variable en entête :
Code : Tout sélectionner
local cst_adj=1.0 -- Coefficient à ajuster pour arroser + ou -- Modifier la formule mes_Arr (mesure de l'arrosage) par
Code : Tout sélectionner
mes_Arr=flow_EV1/60*frequency_RFU/surf_EV1/cst_adj- définir la variable en entête (Attention à rester cohérent entre les 2 scripts, ou alors passer par un device ou une uservariable) :
Code : Tout sélectionner
local cst_adj=1.0 -- Coefficient à ajuster pour arroser + ou -- Modifier la formule de calcul de la durée d'arrosage
Code : Tout sélectionner
val_Duree_EV1=round(coef*cst_adj*DRu*surf_EV1/flow_EV1*3600,0)