Page 1 sur 1

Variable utilisateur et capteur "alert"

Publié : 21 nov. 2018, 08:34
par georges54
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

Re: Variable utilisateur et capteur "alert"

Publié : 21 nov. 2018, 23:28
par papoo

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"

Publié : 22 nov. 2018, 17:32
par georges54
Merci, je teste