Variable utilisateur et capteur "alert"

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
georges54
Messages : 105
Inscription : 01 févr. 2018, 18:10

Variable utilisateur et capteur "alert"

Message 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
papoo
Messages : 2029
Inscription : 10 janv. 2016, 11:29
Localisation : Limoges (87)
Contact :

Re: Variable utilisateur et capteur "alert"

Message 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


domoticz beta/RaspBerry PI3 stretch
https://pon.fr github
georges54
Messages : 105
Inscription : 01 févr. 2018, 18:10

Re: Variable utilisateur et capteur "alert"

Message par georges54 »

Merci, je teste
Répondre