[LUA] Sortir les poubelles
Publié : 14 avr. 2016, 18:43
Salut,
juste un petit script pour m'avertir de sortir la poubelle et la bonne
http://easydomoticz.com/une-plateforme- ... omoticz-2/
juste un petit script pour m'avertir de sortir la poubelle et la bonne
- semaine impair = poubelle grise
- semaine pair = poubelle jaune
Code : Tout sélectionner
--[[
name : script_time_poubelles.lua
ce script à pour but de déterminer si nous sommes en semaine pair ou impair
et fonction de cela, le jeudi en fin d'après midi,
de nous alerter par SMS de sortir la poubelle concernée.
--]]
-- Get day of a week at year beginning
--(tm can be any date and will be forced to 1st of january same year)
-- return 1=mon 7=sun
function getYearBeginDayOfWeek(tm)
yearBegin = os.time{year=os.date("*t",tm).year,month=1,day=1}
yearBeginDayOfWeek = tonumber(os.date("%w",yearBegin))
-- sunday correct from 0 -> 7
if(yearBeginDayOfWeek == 0) then yearBeginDayOfWeek = 7 end
return yearBeginDayOfWeek
end
-- tm: date (as retruned from os.time)
-- returns basic correction to be add for counting number of week
-- weekNum = math.floor((dayOfYear + returnedNumber) / 7) + 1
-- (does not consider correctin at begin and end of year)
function getDayAdd(tm)
yearBeginDayOfWeek = getYearBeginDayOfWeek(tm)
if(yearBeginDayOfWeek < 5 ) then
-- first day is week 1
dayAdd = (yearBeginDayOfWeek - 2)
else
-- first day is week 52 or 53
dayAdd = (yearBeginDayOfWeek - 9)
end
return dayAdd
end
-- tm is date as returned from os.time()
-- return week number in year based on ISO8601
-- (week with 1st thursday since Jan 1st (including) is considered as Week 1)
-- (if Jan 1st is Fri,Sat,Sun then it is part of week number from last year -> 52 or 53)
function getWeekNumberOfYear(tm)
dayOfYear = os.date("%j",tm)
dayAdd = getDayAdd(tm)
dayOfYearCorrected = dayOfYear + dayAdd
if(dayOfYearCorrected < 0) then
-- week of last year - decide if 52 or 53
lastYearBegin = os.time{year=os.date("*t",tm).year-1,month=1,day=1}
lastYearEnd = os.time{year=os.date("*t",tm).year-1,month=12,day=31}
dayAdd = getDayAdd(lastYearBegin)
dayOfYear = dayOfYear + os.date("%j",lastYearEnd)
dayOfYearCorrected = dayOfYear + dayAdd
end
weekNum = math.floor((dayOfYearCorrected) / 7) + 1
if( (dayOfYearCorrected > 0) and weekNum == 53) then
-- check if it is not considered as part of week 1 of next year
nextYearBegin = os.time{year=os.date("*t",tm).year+1,month=1,day=1}
yearBeginDayOfWeek = getYearBeginDayOfWeek(nextYearBegin)
if(yearBeginDayOfWeek < 5 ) then
weekNum = 1
end
end
return weekNum
end
function url_encode(str)
if (str) then
str = string.gsub (str, "\n", "\r\n")
str = string.gsub (str, "([^%w %-%_%.%~])",
function (c) return string.format ("%%%02X", string.byte(c)) end)
str = string.gsub (str, " ", "+")
end
return str
end
----------------------------------------------------------------------
commandArray = {}
local time = string.sub(os.date("%X"), 1, 5)
local day = os.date("%A")
-- le jeudi soir à 18h30 et 20h30
if ( day == "Thursday" and (time == "18:30" or time == "20:30") ) then
-- récupérer numéro de la semaine actuelle
useDate = os.time() -- os.time{year=2015,month=9,day=30} -- il est possible de préciser la date
weekNum = getWeekNumberOfYear(useDate)
-- semaine pair ou impair
pair = weekNum%2 == 0
--print(os.date("%A %d/%m/%Y",useDate)..": week number:"..tostring(weekNum))
if pair then
-- poubelle jaune
msg = "n\'oublie pas de sortir la poubelle jaune"
else
-- poubelle grise
msg = "n\'oublie pas de sortir la poubelle grise"
end
-- olivier
commandArray[1]={['OpenURL']='http://192.168.22.70:41047/send.html?smsto=+33612345678&smsbody='..url_encode(msg)..'&smstype=sms'}
-- delphine
commandArray[2]={['OpenURL']='http://192.168.22.70:41047/send.html?smsto=+33687654321&smsbody='..url_encode(msg)..'&smstype=sms'}
print(msg)
end
return commandArray