Bonjour,
Je souhaite créer un capteur de type ALERTE (avec modification de la couleur en fonction du nombre de jours entre deux dates). Je m'explique.
Je crée une variable utilisateur de type "date" que je renseigne (25/12/2018 par exemple).
Je crée un capteur de type alerte et je souhaite qu'il soit :
- vert à plus d'un mois de l'échéance (par rapport à la date du jour)
- orange à moins d'un mois
- rouge à moins de 7 jours
Comment faire récupérer le contenu de la variable utilisateur par le script et comment travailler sur le nombre de jours entre 2 dates ?
Merci d'avance pour votre aide
Variable utilisateur et capteur "alert"
Re: Variable utilisateur et capteur "alert"
Code : Tout sélectionner
--[[
name : script_date_alert.lua
auteur : papoo
mise à jour : 21/11/2018
création : 21/11/2018
]]--
--------------------------------------------
------------ Variables à éditer ------------
--------------------------------------------
local debugging = true -- true pour voir les logs dans la console log Dz ou false pour ne pas les voir
local script_actif = true -- active (true) ou désactive (false) ce script simplement
local rouge = 7 -- seuil de jour pour alerte rouge
local orange = 30 -- seuil de jour pour alerte orange
local var_date = "date" -- nom de la variable à surveiller
local date_alert_idx = nil -- idx du device alert à mettre à jour, nil si non utilisé
--------------------------------------------
----------- Fin variables à éditer ---------
--------------------------------------------
local nom_script = 'date alerte'
local version = '1.0'
--------------------------------------------
---------------- Fonctions -----------------
--------------------------------------------
function voir_les_logs (s, debugging) -- nécessite la variable local debugging
if (debugging) then
if s ~= nil then
print (s)
else
print ("aucune valeur affichable")
end
end
end -- usage voir_les_logs("=========== ".. nom_script .." (v".. version ..") ===========",debugging)
--------------------------------------------
function round(n)
return n % 1 >= 0.5 and math.ceil(n) or math.floor(n)
end
--------------------------------------------
function jours2difference(dateFr) -- format de la date : jj/mm/aaa ex : "30/11/2018"
jour = string.sub(dateFr, 0, 2)
mois = string.sub(dateFr, 4, 5)
annee = string.sub(dateFr, 7, 10)
t1 = os.time()
t2 = os.time{year=annee, month=mois, day=jour}
difference = round(os.difftime (t2, t1)/86400, 0)
return difference --le résultat retourné est en jour(s)
end
--------------------------------------------
-------------- Fin Fonctions ---------------
--------------------------------------------
commandArray = {}
if uservariablechanged[var_date] and script_actif == true then
voir_les_logs("=========== Date Alert (v1.0) ===========",debugging)
if (uservariables[var_date] ~= nil) then --le chauffage est allumé, calcul des DJU
jours_restants = jours2difference(uservariables[var_date])
voir_les_logs(jours_restants.." jours de différence",debugging)
if (jours_restants < rouge or jours_restants == rouge) then
voir_les_logs("alerte rouge",debugging)
if rain_alert_idx ~= nil then
commandArray[#commandArray+1] = {['UpdateDevice'] = rain_alert_idx..'|3|Alerte Rouge'}
end
elseif (jours_restants > rouge and jours_restants < orange) then
voir_les_logs("alerte orange",debugging)
if rain_alert_idx ~= nil then
commandArray[#commandArray+1] = {['UpdateDevice'] = rain_alert_idx..'|2|Alerte Orange'}
end
else
voir_les_logs("alerte verte",debugging)
if rain_alert_idx ~= nil then
commandArray[#commandArray+1] = {['UpdateDevice'] = rain_alert_idx..'|1|Alerte verte'}
end
end
end
voir_les_logs("=========== Date Alert (v1.0) ===========",debugging)
end
return commandArray
Re: Variable utilisateur et capteur "alert"
Merci, je teste