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 <\>.
commandArray = {}
-- Retourne le jour de Pâques au format epoch
-- annee : année (Integer) dont on désire connaître le jour de Pâques (ex : 2014)
-- La fonction n'effectue le calcul que si l'année a changée depuis son dernier appel
GetJourPaquesAnnee=0 -- Variable globale (année du dernier calcul) pour ne pas recalculer le jour de Pâques à chaque appel
GetJourPaquesEpochPaque=0 -- Variable globale (jour de Pâques au format epoch) pour ne pas recalculer le jour de Pâques à chaque appel
time = os.date("*t")
if((time.min == 5) and (time.hour == 0)) then
function GetJourPaques(annee)
if(GetJourPaquesAnnee~=annee or GetJourPaquesEpochPaque==0) then
local a=math.floor(annee/100) -- donne 20 pour 2015
local b=math.fmod(annee,100) -- donne 15 pour 2015
local c=math.floor((3*(a+25))/4) -- donne 33 pour 20
local d=math.fmod((3*(a+25)),4) -- donne 3 pour 20
local e=math.floor((8*(a+11))/25)
local f=math.fmod((5*a+b),19)
local g=math.fmod((19*f+c-e),30)
local h=math.floor((f+11*g)/319)
local j=math.floor((60*(5-d)+b)/4)
local k=math.fmod((60*(5-d)+b),4)
local m=math.fmod((2*j-k-g+h),7)
local n=math.floor((g-h+m+114)/31)
local p=math.fmod((g-h+m+114),31)
local jour=p+1
local mois=n
GetJourPaquesAnnee=annee
GetJourPaquesEpochPaque=os.time{year=annee,month=mois,day=jour,hour=12,min=0}
end
return GetJourPaquesEpochPaque
end
-- Retourne true si le jour courant est un jour férié
-- Le calcul des jours férié n'est fait qu'un fois par an (ou si la Vera reboot)
JourFerieAnnee=0 -- Variable globale (année du dernier calcul) pour ne pas recalculer le tableau à chaque appel
JourFerieTab = {} -- Variable globale (tableau des jours fériés) pour ne pas recalculer le tableau à chaque appel
function JourFerie()
local today=os.date("%m-%d")
local annee=tonumber(os.date("%Y"))
if(annee~=JourFerieAnnee) then
JourFerieAnnee=annee
-- Dates fixes
JourFerieTab["01-01"] = true -- 1er janvier
JourFerieTab["05-01"] = true -- Fête du travail
JourFerieTab["05-08"] = true -- Victoire des alliés
JourFerieTab["07-14"] = true -- Fête nationale
JourFerieTab["08-15"] = true -- Assomption
JourFerieTab["11-01"] = true -- Toussaint
JourFerieTab["11-11"] = true -- Armistice
JourFerieTab["12-25"] = true -- Noël
-- Dates variables
local epochPaques=GetJourPaques(annee)
JourFerieTab[os.date("%m-%d",epochPaques)] = true -- Pâques
JourFerieTab[os.date("%m-%d",epochPaques+24*60*60)] = true -- Lundi de Pâques = Pâques + 1 jour
JourFerieTab[os.date("%m-%d",epochPaques+24*60*60*39)] = true -- Ascension = Pâques + 39 jours
JourFerieTab[os.date("%m-%d",epochPaques+24*60*60*49)] = true -- Pentecôte = Ascension + 49 jours
end
return JourFerieTab[today] -- (nldr : Both nil and false make a condition false)
end
-- print(JourFerie())
-- jf=(JourFerie())
-- print (jf)
if JourFerie() == true
then
commandArray['Variable:jf'] = 'true'
else
commandArray['Variable:jf'] = 'false'
end
end
return commandArray