Page 6 sur 6

Re: [LUA] Script Jour férié

Publié : 24 mai 2021, 11:53
par Neutrino
Techniquement, la Pentecôte est bien 49 jours après Pâques, c'est le Lundi de pentecôte qui est 50 plus tard 😅

Re: [LUA] Script Jour férié

Publié : 16 nov. 2021, 17:25
par jeje
Bonjour,j'utilise ce script depuis peu et je tient a remercier l'ensemble du forum en même temps j'aurais juste une petite question: sur la période autre vacances j'ai rentré une date comme celle d'aujourd'hui et qui finirai dans 3 jours par exemple ,j'ai une erreur dans les logs du type [string "--[[..."]:106: attempt to compare string with nil :roll:
j'ai rater quelque choses ou il y a quelque chose d'autre a faire d'avance merci.

Re: [LUA] Script Jour férié

Publié : 17 nov. 2021, 05:56
par denis_brasseur
Bonjour jeje
la variable jour n'est pas défini dans la fonction JourVacancesAutres()
j'ajouterais

Code : Tout sélectionner

local jour = aujourdhui
afin d'obtenir

Code : Tout sélectionner

function JourVacancesAutres()
	local jour = aujourdhui
	local vacautre = false
	if jour >= string.sub(autre,1, 10) and jour <= string.sub(autre,12, 21) then
		vacautre = true
		return vacautre
	end
end

Re: [LUA] Script Jour férié

Publié : 17 nov. 2021, 18:56
par jeje
Bonjour Denis , merci du tuyau j'ai essayer pour l'instant je n'ai plus d'erreur je verrai a 0:15 si c'est bien pris en compte a priori oui par rapport au log . Un grand merci en tout cas c’était si simple que je n'y même pas penser :lol: en même temps je suis novice aussi donc ça s'explique surement.

Re: [LUA] Script Jour férié

Publié : 07 févr. 2022, 19:12
par TG76
Bonsoir,

j'ai une erreur à la ligne 115, visiblement je suis le seul et je sais pas comment m'en sortir.

Code : Tout sélectionner

lua: script_device_Jf.lua:115: attempt to index global 'devicechanged' (a nil value)
stack traceback:
	script_device_Jf.lua:115: in main chunk
	[C]: ?
si quelqu'un peut me venir en aide, j'aimerais pouvoir programmer l'allumage de l'aquarium de mon fils en fonction des vacances et des week-end pour pas qu'il ne se reveille trop tot.

Cordialement

TG76

Re: [LUA] Script Jour férié

Publié : 07 févr. 2022, 20:33
par Keros
Tu peux nous remettre ton script stp ? J'ai regardé celui du premier sujet et il n'a que 75 lignes donc ça ne doit pas être celui-là :mrgreen:

Re: [LUA] Script Jour férié

Publié : 07 févr. 2022, 20:47
par denis_brasseur
TG76 a écrit : 07 févr. 2022, 19:12

Code : Tout sélectionner

lua: script_device_Jf.lua:115: attempt to index global 'devicechanged' (a nil value)
Ca ressemble bien à l'utilisation de devicechanged dans un script de type time

Re: [LUA] Script Jour férié

Publié : 07 févr. 2022, 22:02
par TG76
Keros a écrit : 07 févr. 2022, 20:33 Tu peux nous remettre ton script stp ? J'ai regardé celui du premier sujet et il n'a que 75 lignes donc ça ne doit pas être celui-là :mrgreen:
j'ai repris celui en p4 du present post

Code : Tout sélectionner

--[[
   Script de type "Device" : Renseigne une variable globale si le jour est travaillé ou chômé.
   Vrai --> le jour est chômé, Faux --> le jour est travaillé.
   Prérequis: Une variable de type String valeur : "Faux"
              Un "Dummy" de type  On/Off
	lmet [v :0.8] : correction function JoursFeries() et JourVacancesScolaires()
	lmet [v :0.7] : version initiale
]]

---------------------------------------- VARIABLES: VALEURS A EDITER ---------------------------------------

local intervirt     = '551'                      -- Nom de l'interrupteur virtuel.
local varglobale    = 'jf'                      -- Nom de la variable globale à renseigner.
local calcscol      = true                    -- false ne recherche pas les jours fériés scolaires.
local congehebdo    = "Sa-Di"                 -- Jours de congés en général les samedis et dimanches.
local hiver         = "12-02-2022 28-02-2022" -- Vacances d'hiver.
local paques        = "16-04-2022 02-05-2022" -- Vacances de Pâques.
local ete           = "07-07-2022 01-09-2022" -- Vacances d'été.
local toussaint     = "23-10-2021 08-11-2021" -- Vacances de la toussaint.
local noel          = "18-12-2021 03-01-2022" -- Vacances de Noël.
local autre         = "00-00-0000 00-00-0000" -- Autre période de congés.
local vendredisaint = false                   -- Jour férié Alsace/Moselle.
local saintetienne  = false                   -- Jour férié Alsace/Moselle.
local log           = true                  -- Si true --> Affiche quelques infos dans les log

--------------------------------------- FIN VARIABLES: VALEURS A EDITER -------------------------------------

function we()
	weekend = false
	local jsem   = "Di-Lu-Ma-Me-Je-Ve-Sa"
	congehebdo = string.gsub(congehebdo, "-", "")
	local nbjour =  tonumber(string.len(congehebdo) /2)
	for i = 0,nbjour-1 do
		rech = string.sub(congehebdo,i*2+1,i*2+2)
		rech = string.find (jsem,rech)
		rech = (rech -1)/3
		if tonumber(os.date("%w")) == tonumber(rech) then
			weekend = true
			break
		end
	end
	return weekend
end
function GetJourPaques()
	local annee = os.date("%Y")
	local a=math.floor(annee/100)   
	local b=math.fmod(annee,100)   
	local c=math.floor((3*(a+25))/4) 
	local d=math.fmod((3*(a+25)),4)   
	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 i=math.floor((60*(5-d)+b)/4)
	local j=math.fmod((60*(5-d)+b),4)
	local k=math.fmod((2*i-j-g+h),7)
	local l=math.floor((g-h+k+114)/31)
	local m=math.fmod((g-h+k+114),31)
	local jour=m+1
	local mois=l
	GetJourPaquesEpoch = os.time{year=annee,month=mois,day=jour,hour=12,min=0}
	return GetJourPaquesEpoch
end

function JoursFeries()
	local epochPaques=GetJourPaques(os.date("%Y"))
	local aujourdhui    = os.date("%d-%m")
	local vsaint        = os.date("%d-%m",epochPaques-172800)
	local paques        = os.date("%d-%m",epochPaques+86400)
	local ascension     = os.date("%d-%m",epochPaques+3369600)
	local pentecote     = os.date("%d-%m",epochPaques+4233600)
	local joursferies   = {"01-01",vsaint,paques,"01-05","08-05",ascension,pentecote,"14-07","15-08","01-11","11-11","25-12","26-12"}
	jourferie = false
	for i = 1 , 13 do
		if aujourdhui == joursferies[i] then
			if (vendredisaint == false and aujourdhui == vsaint) or (saintetienne == false and aujourdhui == "26-12") then
				break
			else
				jourferie = true
				break
			end
		end
	end
	return jourferie
end

function JourVacancesScolaires()
	local jour = aujourdhui      
	vacscol = false
	periodes = {hiver,paques,ete,toussaint,noel}
	for i,v in ipairs(periodes) do
		if dateEN(jour) >= dateEN(string.sub(v,1, 10)) and dateEN(jour)<= dateEN(string.sub(v,12, 21)) then
			vacscol = true
			break
		end
	end
	return vacscol
end

function JourVacancesAutres()
	local vacautre = false
	if jour >= string.sub(autre,1, 10) and jour <= string.sub(autre,12, 21) then
		vacautre = true
		return vacautre
	end
end   

function dateEN(date)
	local eng = string.sub(date,7,10) .. "-" .. string.sub(date,4,5) .. "-" .. string.sub(date,1,2)
	return eng
end

commandArray = {}    
	
	if (devicechanged [intervirt]) == 'On' then    
        aujourdhui = os.date("%d-%m-%y")
		weekend = we()
        if calcscol == true then
            vacscol = JourVacancesScolaires()
        else
            vacscol = false
        end
        
        jourferie  = JoursFeries()
        
        if string.sub(autre,1, 2) ~= "00" then
            vacautre = JourVacancesAutres()
        else
            vacautre = false
        end
        
        if weekend == false and jourferie == false and vacscol == false and vacautre == false then
            if log == true then print ("Log de Conges_0.8 : Nous sommes le " .. aujourdhui .. " jour travaillé") end
            print ( tostring(weekend) .. tostring(jourferie) .. tostring(vacscol) .. tostring(vacautre))
            commandArray['Variable:' .. varglobale] = "Faux"
        else
            if log == true then print ("Log de Conges_0.8 : Nous sommes le " .. aujourdhui .. " jour chômé") end
            print ( tostring(weekend) .. tostring(jourferie) .. tostring(vacscol) .. tostring(vacautre))
            commandArray['Variable:' .. varglobale] = "Vrai"
        end
        
        commandArray [intervirt] = 'Off'
    end
return commandArray

Re: [LUA] Script Jour férié

Publié : 10 févr. 2022, 13:29
par garycooper
Bonjour, je pense que tu as mis le n° d'IDX pour la valeur "intervirt" au lieu de mettre le nom de ton interrupteur virtuel.