Page 10 sur 12

Re: Script de Givre full auto ou presque

Publié : 15 févr. 2020, 20:47
par Euton
Ok voici ce qui se passe quand tout va bien comme ce soir :

Code : Tout sélectionner

 2020-02-15 19:30:02.473 Status: LUA: =========== Point de rosee et point de givrage (v1.0) ===========
2020-02-15 19:30:02.473 Status: LUA: --- --- --- Temperature Ext : 4.22
2020-02-15 19:30:02.473 Status: LUA: --- --- --- Point de Rosee : -1.74
2020-02-15 19:30:02.473 Status: LUA: --- --- --- Point de Givrage : -2.25070467966
2020-02-15 19:30:02.473 Status: LUA: --- --- --- Aucun risque de Givre --- --- ---
2020-02-15 19:30:02.473 Status: LUA: =========== Fin Point de rosee et point de givrage (v1.0) ===========

Re: Script de Givre full auto ou presque

Publié : 15 févr. 2020, 21:06
par Euton
Bon je viens de modifier mon script pour ne plus avoir les 10 chiffres après la virgule proposé par francklek

Re: Script de Givre full auto ou presque

Publié : 15 févr. 2020, 21:14
par Euton
Voici le script modifé :

Code : Tout sélectionner

 
--~/domoticz/scripts/lua/script_time_givre.lua
--auteur : papoo&deennoo
--modifié par : euton
--version : v1.1
--MAJ : 15/02/2020
--création : 06/05/2016
--Principe :
--a une heure donnée, va chercher les previsions de temperature pour dans 12h puis va calculer
 --le point de givre
--puis en comparant ensuite le point de givre et la température reçue, création d'une alerte givre.

--------------------------------------------
------------ Variables à éditer ------------
-------------------------------------------- 
local debugging = true -- true pour voir les logs dans la console log Dz ou false pour ne pas les voir
local dew_point_idx = XX -- idx de l'éventuel dummy température point de rosée si vous souhaitez le suivre
local freeze_point_idx = XX -- idx du dummy température point de givre
local freeze_alert_idx = XX -- idx du dummy alert point de givre
local heure = 19 ---heure de declenchement
local minute = 30 -- minute de declenchement
local api = "xxxxxxxxxxxxxxxxxxxxxxxxx"
local lat = xxx.xxxxx
local long = x.xxxxxx

--------------------------------------------
----------- Fin variables à éditer ---------
-------------------------------------------- 
--parser le json forcast io
--json = (loadfile "/home/votrenomutilisé/domoticz/scripts/lua/JSON.lua")() -- For Linux
json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")() -- for PI
--json = (loadfile "/volume1/@appstore/domoticz/var/scripts/lua/JSON.lua")() -- For Syno

commandArray = {}

now=os.date("*t")
if (now.min == minute and now.hour == heure) then
--if now.min % 1 == 0 then -- toutes les minutes

config=assert(io.popen('/usr/bin/curl https://api.darksky.net/forecast/'..api..'/'..lat..','..long..'?units=ca&exclude=currently,minutely,daily,alerts,flags'))
blocjson = config:read('*all')
config:close()
jsonValeur = json:decode(blocjson)
temp = jsonValeur.hourly.data[12].apparentTemperature
dew = jsonValeur.hourly.data[12].dewPoint
--print('temp: '..temp..' dew: '..dew)

--------------------------------------------
---------------- Fonctions -----------------
-------------------------------------------- 
function voir_les_logs (s, debbuging)
    if (debugging) then 
        if s ~= nil then
        print ( s );
        else
        print ("aucune valeur affichable");
        end
    end
end 

function round(num, dec)
    local mult = 10^(dec or 2)
    return math.floor(num * mult + 0.5) / mult
end

function freezing_point(d, t) 
    if d > t then
    return nil, " La température du point de rosée est supérieure à la température. Puisque la température du point de rosée ne peut être supérieure à la température de l'air , l\'humidité relative a été fixée à nil."
end

T = t + 273.15
Td = d + 273.15
return round((Td + (2671.02 /((2954.61/T) + 2.193665 * math.log(T) - 13.3448))-T)-273.15,2) 
end 
--------------------------------------------
-------------- Fin Fonctions ---------------
-------------------------------------------- 
voir_les_logs("=========== Point de rosee et point de givrage (v1.1) ===========",debugging)
voir_les_logs("--- --- --- Temperature Ext : ".. temp,debugging)
voir_les_logs("--- --- --- Point de Rosee : ".. dew,debugging)
 if dew ~= nil and temp ~= nil then
 if dew_point_idx ~= nil then
 commandArray[1] = {['UpdateDevice'] = dew_point_idx .. "|0|" .. dew} -- Mise à jour point de rosee
 end 
 
FreezingPoint = freezing_point(dew, tonumber(temp))

 if FreezingPoint ~= nil then 
 voir_les_logs("--- --- --- Point de Givrage : ".. FreezingPoint,debugging)

 if freeze_point_idx ~= nil then
 commandArray[2] = {['UpdateDevice'] = freeze_point_idx .. "|0|" .. FreezingPoint} -- Mise à jour point de givrage
 end

 if(tonumber(temp)<=1 and tonumber(FreezingPoint)<=0)then
 voir_les_logs("--- Givre Demain Matin ---",debugging)
 commandArray[3]={['UpdateDevice'] = freeze_alert_idx..'|4|'..FreezingPoint}
 commandArray['SendNotification'] = 'Alerte Givre#Presence de givre demain matin !'
 elseif(tonumber(temp)<=3 and tonumber(FreezingPoint)<=0)then
 voir_les_logs("--- Risque de Givre Demain Matin ---",debugging)
 commandArray[3]={['UpdateDevice'] = freeze_alert_idx..'|2|'..FreezingPoint}
 commandArray['SendNotification'] = 'Alerte Givre#Risque de givre demain matin !'
 else
 voir_les_logs("--- --- --- Aucun risque de Givre --- --- ---",debugging)
 commandArray[3]={['UpdateDevice'] = freeze_alert_idx..'|1|'..'Pas de givre'}
 voir_les_logs("=========== Fin Point de rosee et point de givrage (v1.1) ===========",debugging)
 end 
 else
 voir_les_logs("=========== La temperature du point de rosee est superieure a la temperature. Puisque la temperature du point de rosee ne peut etre superieure a la temperature de l'air , l\'humidite relative a ete fixee à nil ===========",debugging)
 if tonumber(dew)<= -5 then
 voir_les_logs("--- Risque de Givre Demain Matin ---",debugging)
 commandArray[3]={['UpdateDevice'] = freeze_alert_idx..'|2|'..FreezingPoint}
 commandArray['SendNotification'] = 'Alerte Givre#Risque de givre demain matin !'
 end
 
 
 
 end
 else
 voir_les_logs("=========== Calcul du Point de rosee et du point de givrage impossible aucune donnee a traiter ===========",debugging)
 end 
end

return commandArray

Re: Script de Givre full auto ou presque

Publié : 15 févr. 2020, 22:48
par Euton
Première question :
dans ce script on récupère la température apparente et non la température, es ce que c’est ce qu’il faut ?

Re: Script de Givre full auto ou presque

Publié : 16 févr. 2020, 10:56
par Neutrino
Bonjour,
Perso, j'ai de meilleurs résultats avec la Temperature qu'avec la température apparente.

Re: Script de Givre full auto ou presque

Publié : 01 mars 2020, 15:15
par Euton
Bonjour,

Voici mon script modifié pour que cela marche tout le temps :

Code : Tout sélectionner

--[[ 
auteur : papoo&deennoo
modifié par : euton
version : v1.2
MAJ : 19/02/2020
création : 06/05/2016
Principe :
a une heure donnée, va chercher les previsions de temperature pour dans 12h puis va calculer
le point de givre
puis en comparant ensuite le point de givre et la température reçue, création d'une alerte givre.
]]--
--------------------------------------------
------------ Variables à éditer ------------
-------------------------------------------- 
local debugging = true -- true pour voir les logs dans la console log Dz ou false pour ne pas les voir
local dew_point_idx = xx -- idx de l'éventuel dummy température point de rosée si vous souhaitez le suivre
local freeze_point_idx = xx -- idx du dummy température point de givre
local freeze_alert_idx = xx -- idx du dummy alert point de givre
local heure = xx ---heure de declenchement
local minute = xx -- minute de declenchement
local api = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
local lat = xxxxxxxxxxx
local long = xxxxxxxxxxxxxxxx

--------------------------------------------
----------- Fin variables à éditer ---------
-------------------------------------------- 
--parser le json forcast io
--json = (loadfile "/home/votrenomutilisé/domoticz/scripts/lua/JSON.lua")() -- For Linux
json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")() -- for PI
--json = (loadfile "/volume1/@appstore/domoticz/var/scripts/lua/JSON.lua")() -- For Syno

commandArray = {}

now=os.date("*t")
if (now.min == minute and now.hour == heure) then
--if now.min % 1 == 0 then -- toutes les minutes

config=assert(io.popen('/usr/bin/curl https://api.darksky.net/forecast/'..api..'/'..lat..','..long..'?units=ca&exclude=currently,minutely,daily,alerts,flags'))
blocjson = config:read('*all')
config:close()
jsonValeur = json:decode(blocjson)
temp = jsonValeur.hourly.data[12].temperature
dew = jsonValeur.hourly.data[12].dewPoint
--print('temp: '..temp..' dew: '..dew)

--------------------------------------------
---------------- Fonctions -----------------
-------------------------------------------- 
function voir_les_logs (s, debbuging)
    if (debugging) then 
        if s ~= nil then
        print ( s );
        else
        print ("aucune valeur affichable");
        end
    end
end 

function round(num, dec)
    local mult = 10^(dec or 2)
    return math.floor(num * mult + 0.5) / mult
end

function freezing_point(d, t) 
--    if d > t then
--    return nil, " La température du point de rosée est supérieure à la température. Puisque la température du point de rosée ne peut être supérieure à la température de l'air , l\'humidité relative a été fixée à nil."
--    end

T = t + 273.15
Td = d + 273.15
return round((Td + (2671.02 /((2954.61/T) + 2.193665 * math.log(T) - 13.3448))-T)-273.15,2) 
end 
--------------------------------------------
-------------- Fin Fonctions ---------------
-------------------------------------------- 
voir_les_logs("=========== Point de rosee et point de givrage (v1.2) ===========",debugging)
voir_les_logs("--- --- --- Temperature Ext : ".. temp,debugging)
voir_les_logs("--- --- --- Point de Rosee : ".. dew,debugging)
 if dew ~= nil and temp ~= nil then
 if dew_point_idx ~= nil then
 commandArray[1] = {['UpdateDevice'] = dew_point_idx .. "|0|" .. dew} -- Mise à jour point de rosee
 end 
 
FreezingPoint = freezing_point(dew, tonumber(temp))

 if FreezingPoint ~= nil then 
 voir_les_logs("--- --- --- Point de Givrage : ".. FreezingPoint,debugging)

 if freeze_point_idx ~= nil then
 commandArray[2] = {['UpdateDevice'] = freeze_point_idx .. "|0|" .. FreezingPoint} -- Mise à jour point de givrage
 end

 if(tonumber(temp)<=1 and tonumber(FreezingPoint)<=0)then
 voir_les_logs("--- Givre Demain Matin ---",debugging)
 commandArray[3]={['UpdateDevice'] = freeze_alert_idx..'|4|'..FreezingPoint}
 commandArray['SendNotification'] = 'Alerte Presence Givre#Presence de givre demain matin !'
 voir_les_logs("=========== Fin Point de rosee et point de givrage (v1.2) ===========",debugging)
 elseif(tonumber(temp)<=3 and tonumber(FreezingPoint)<=0)then
 voir_les_logs("--- Risque de Givre Demain Matin ---",debugging)
 commandArray[3]={['UpdateDevice'] = freeze_alert_idx..'|2|'..FreezingPoint}
 commandArray['SendNotification'] = 'Alerte Risque Givre#Risque de givre demain matin !'
 voir_les_logs("=========== Fin Point de rosee et point de givrage (v1.2) ===========",debugging)
 else
 voir_les_logs("--- --- --- Aucun risque de Givre --- --- ---",debugging)
 commandArray[3]={['UpdateDevice'] = freeze_alert_idx..'|1|'..'Pas de givre'}
 commandArray['SendNotification'] = 'Pas de Givre#pas de risque de givre demain matin !'
 voir_les_logs("=========== Fin Point de rosee et point de givrage (v1.2) ===========",debugging)
 end 
 else
 voir_les_logs("=========== La temperature du point de rosee est superieure a la temperature. Puisque la temperature du point de rosee ne peut etre superieure a la temperature de l'air , l\'humidite relative a ete fixee à nil ===========",debugging)
 if tonumber(dew)<= -5 then
 voir_les_logs("--- Risque de Givre Demain Matin ---",debugging)
 commandArray[3]={['UpdateDevice'] = freeze_alert_idx..'|2|'..FreezingPoint}
 commandArray['SendNotification'] = 'Alerte Givre#Risque de givre demain matin !'
 voir_les_logs("=========== Fin Point de rosee et point de givrage (v1.2) ===========",debugging)
 end
 
 
 
 end
 else
 voir_les_logs("=========== Calcul du Point de rosee et du point de givrage impossible aucune donnee a traiter ===========",debugging)
 end 
end

return commandArray

Re: Script de Givre full auto ou presque

Publié : 06 nov. 2020, 17:20
par pierrotori
de mon côté ca ne fonctionne pas avec le dernier script à jour

v1.1: ============== METEO GIVRE ==================
v1.1: autumn
v1.1: Home latitude = 49.413428 °
v1.1: Home longitude = 1.058115 °
v1.1: Message : Il fera -1.62 degres et la météo prévoit un Point de rosée de 0.96 à 07:00:00.
v1.1: Point de rosee et point de givrage :
v1.1: Temperature Ext : -1.62
v1.1: Point de Rosee : 0.96
v1.1: Point de Givrage : 1.15
v1.1: Aucun risque de Givre Demain Matin !

il a bien eu du givre mais l'alerte n'a pas été levée car mon point de givrage n'est jamais négatif

if(tonumber(temp)<=1 and tonumber(FreezingPoint)<=0)then
message = 'Presence de givre demain matin !'
niveau = 4
dz.log(message, dz.LOG_DEBUG)
elseif(tonumber(temp)<=3 and tonumber(FreezingPoint)<=0)then
message = 'Risque Givre Demain Matin !'
niveau = 2
dz.log(message, dz.LOG_DEBUG)
else
message = 'Aucun risque de Givre Demain Matin !'
niveau = 1
dz.log(message, dz.LOG_DEBUG)
end

ca fonctionne chez vous en ce moement ?

Re: Script de Givre full auto ou presque

Publié : 06 nov. 2020, 19:18
par Keros
Mon script de givre fonctionne. Maintenant, je ne sais plus sur quelle version je suis ...

D'un autre coté, je n'ai pas eu d'alerte hier alors que c'était limite :?

Re: Script de Givre full auto ou presque

Publié : 06 nov. 2020, 21:09
par pierrotori
2 jours de givre cette semaine et pas d'alerte , je surveille la prochaine journée de givre
sinon j'ai la version qui est au dessus

Re: Script de Givre full auto ou presque

Publié : 06 nov. 2020, 21:39
par romain1206
pierrotori a écrit : 06 nov. 2020, 21:09 2 jours de givre cette semaine et pas d'alerte , je surveille la prochaine journée de givre
sinon j'ai la version qui est au dessus
pareil chez moi 3 jours de grattage de pare brise mais pas d'alerte :D