-- Set turn on time if sun has not rised sunRiseOn = {} sunRiseOn['Monday'] = "05:30" sunRiseOn['Tuesday'] = "05:30" sunRiseOn['Wednesday'] = "05:30" sunRiseOn['Thursday'] = "05:30" sunRiseOn['Friday'] = "05:30" sunRiseOn['Saturday'] = "06:30" sunRiseOn['Sunday'] = "06:30" -- Set turn off time if sun has not set sunSetOff = {}; sunSetOff['Monday'] = "23:00" sunSetOff['Tuesday'] = "23:00" sunSetOff['Wednesday'] = "23:00" sunSetOff['Thursday'] = "23:00" sunSetOff['Friday'] = "23:00" sunSetOff['Saturday'] = "23:00" sunSetOff['Sunday'] = "23:00" -- helper variable weekDays = {} weekDays [1] = 'Sunday' weekDays [2] = 'Monday' weekDays [3] = 'Tuesday' weekDays [4] = 'Wednesday' weekDays [5] = 'Thursday' weekDays [6] = 'Friday' weekDays [7] = 'Saturday' temp = os.date("*t", os.time()) -- Calculate timestamp for this day mid night today = os.time{year=temp['year'], month=temp['month'], day=temp['day'], hour=0, min=0} -- Calculate current time in minutes since mid night currMin = (os.time() - today) / 60 -- Calculate sunrise switch on time in minutes since mid night sunRiseOnToday = sunRiseOn[weekDays[temp['wday']]] sunROn = (os.time{year=temp['year'], month=temp['month'], day=temp['day'], hour=string.sub(sunRiseOnToday, 1, 2), min=string.sub(sunRiseOnToday, 4, 5)} - today) / 60 -- Calculate sunset switch off time in minutes since mid night sunSetOffToday = sunSetOff[weekDays[temp['wday']]] sunSOff = (os.time{year=temp['year'], month=temp['month'], day=temp['day'], hour=string.sub(sunSetOffToday, 1, 2), min=string.sub(sunSetOffToday, 4, 5)} - today) / 60 commandArray = {} -- Sunrise: turn on if sunrise is at least 30 minutes after on time if ((currMin == sunROn) and ((currMin + 30) < timeofday['SunriseInMinutes'])) then commandArray['Group:Bordslampor'] = 'On' end -- Sunrise: turn off 45 minutes after sunrise if (currMin == (timeofday['SunriseInMinutes'] + 45)) then commandArray['Group:Bordslampor'] = 'Off' end -- Sunset: turn on if sunset is at least 30 minutes before off time if ((currMin == (timeofday['SunsetInMinutes'] - 30)) and ((currMin + 30) < sunSOff)) then commandArray['Group:Bordslampor'] = 'On' end -- Sunset: turn off if (currMin == sunSOff) then commandArray['Group:Bordslampor'] = 'Off' end return commandArray