# Author: krambriw
# 2007-08-28

# The idea behind this EG script is that you might have
# outdoor and indoor lights that needs to be controlled
# automatically depending on sunrise/sunset and daylight savings

# You might need to turn lights ON at sunset and then turn them OFF
# later in the evening or following night at a specified time,
# as example at 23.00 during weekdays but 01.00 during weekends

# You might also wish to turn the outdoor lights ON in the morning
# at a specified time, let's say at 06.00 during weekdays (provided
# it is still before the sunrise) and then turn everything OFF again
# when sunrise comes.

# Another usage could be for indoor lamps in windows or in living room
# etc. Even when you are away, lamps would be turned on and welcome
# you home
# Besides, it could help to prevent intrusion while you are away.

# Normally it gets darker indoor a bit earlier during sunset and the
# darkness also stays longer during sunrise. To compensate for this,
# it's possible to  define offset settings for those lamps where this is
# needed. 
 
##############################################################################
# Revision history:
#
# 2007-09-14  Bug fix in routine for daylight savings calculation adjustment
#             Improved handling of global timezones (should be OK now)
# 2007-09-02  Slight modification of the synchronization routine
# 2007-08-28  First version
##############################################################################

##############################################################################
# Your area below for personalized settings
##############################################################################

# Specify your geographical position
myLongitude = 18.0051
myLatitude = 59.4286

# Once a year you need to check these settings and adjust them for those
# holidays that changes from year to year
# Use the format "mmdd" and adjust the days according to the actual
# situation in your region
fixedHolidays = "0101,0501,0606,1224,1225,1226,1231"
variableHolidays = "0106,0321,0324,0620"

# Select if status for daylight savings shall be calculated (EU-rules) or 
# taken from os
iDST_From_OS = 1

# Define if you prefer that synchronization is done regularly also during
# run-time (1=do synch, 0=do not synch)
iDoSynchLights = 1

# Define the synchronisation interval (in minutes, min value is 6 minutes)
iSynchInterval = 6

# Define the minimum on-period left required to turn the control on 
# (value in minutes, 0-60). It makes no sense to turn on lights if there
# is only a short period left before they will be turned off again
iMinOnPeriod = 10

# Define the delay between commands send to your device. Some devices can't
# transmitt to fast so they need a delay between transmissions
# Set the value in seconds (0.0 - x.x) 
iCmdDelay = 1.0

# Define the number of transmissions to send for each command (burst)
iNbrOfBursts = 1

# Define the EG event names below that shall be used
eg_A1_ON = "A1_ON"
eg_A1_OFF = "A1_OFF"
eg_A2_ON = "A2_ON"
eg_A2_OFF = "A2_OFF"
eg_A3_ON = "A3_ON"
eg_A3_OFF = "A3_OFF"

eg_B1_ON = ""
eg_B1_OFF = ""
eg_B2_ON = ""
eg_B2_OFF = ""
eg_B3_ON = ""
eg_B3_OFF = ""

eg_C1_ON = ""
eg_C1_OFF = ""
eg_C2_ON = ""
eg_C2_OFF = ""
eg_C3_ON = ""
eg_C3_OFF = ""

eg_D1_ON = ""
eg_D1_OFF = ""
eg_D2_ON = ""
eg_D2_OFF = ""
eg_D3_ON = ""
eg_D3_OFF = ""


# Below you have settings for all on/off control commands for the different
# module addresses. Configure the settings according to your needs
# 
# Be aware of the following if you have a control that shall activate on 
# one day and deactivate the following. This could be as example outdoor
# lights on your house or in your garden that is turned on at sunset and is
# turned off next night (for those late arrivals,, kids coming home 
# too late...)
# 
# As example, you like the lights to be turned on at sunset Friday evening 
# and turned off Saturday morning at 02.00. In this case you only need to 
# configure the off-time for the control module, in this case C1. Configure
# "saNight_OFF_C1 = 0200" and you are done

# OFF-time settings (hhmm) for night control Monday
moNight_OFF_A1 = ""
moNight_OFF_A2 = ""
moNight_OFF_A3 = ""
moNight_OFF_B1 = ""
moNight_OFF_B2 = ""
moNight_OFF_B3 = ""
moNight_OFF_C1 = ""
moNight_OFF_C2 = ""
moNight_OFF_C3 = ""
moNight_OFF_D1 = ""
moNight_OFF_D2 = ""
moNight_OFF_D3 = ""

# ON-time settings (hhmm) for morning control Monday
moMorning_ON_A1 = ""
moMorning_ON_A2 = "0600"
moMorning_ON_A3 = "0600"
moMorning_ON_B1 = ""
moMorning_ON_B2 = ""
moMorning_ON_B3 = ""
moMorning_ON_C1 = ""
moMorning_ON_C2 = ""
moMorning_ON_C3 = ""
moMorning_ON_D1 = ""
moMorning_ON_D2 = ""
moMorning_ON_D3 = ""

# OFF-time settings (hhmm) for evening control Monday
moEvening_OFF_A1 = ""
moEvening_OFF_A2 = "2300"
moEvening_OFF_A3 = "2300"
moEvening_OFF_B1 = ""
moEvening_OFF_B2 = ""
moEvening_OFF_B3 = ""
moEvening_OFF_C1 = ""
moEvening_OFF_C2 = ""
moEvening_OFF_C3 = ""
moEvening_OFF_D1 = ""
moEvening_OFF_D2 = ""
moEvening_OFF_D3 = ""

# OFF-time settings (hhmm) for night control Tuesday
tuNight_OFF_A1 = ""
tuNight_OFF_A2 = ""
tuNight_OFF_A3 = ""
tuNight_OFF_B1 = ""
tuNight_OFF_B2 = ""
tuNight_OFF_B3 = ""
tuNight_OFF_C1 = ""
tuNight_OFF_C2 = ""
tuNight_OFF_C3 = ""
tuNight_OFF_D1 = ""
tuNight_OFF_D2 = ""
tuNight_OFF_D3 = ""

# ON-time settings (hhmm) for morning control Tuesday
tuMorning_ON_A1 = ""
tuMorning_ON_A2 = "0600"
tuMorning_ON_A3 = "0600"
tuMorning_ON_B1 = ""
tuMorning_ON_B2 = ""
tuMorning_ON_B3 = ""
tuMorning_ON_C1 = ""
tuMorning_ON_C2 = ""
tuMorning_ON_C3 = ""
tuMorning_ON_D1 = ""
tuMorning_ON_D2 = ""
tuMorning_ON_D3 = ""

# OFF-time settings (hhmm) for evening control Tuesday
tuEvening_OFF_A1 = ""
tuEvening_OFF_A2 = "2300"
tuEvening_OFF_A3 = "2300"
tuEvening_OFF_B1 = ""
tuEvening_OFF_B2 = ""
tuEvening_OFF_B3 = ""
tuEvening_OFF_C1 = ""
tuEvening_OFF_C2 = ""
tuEvening_OFF_C3 = ""
tuEvening_OFF_D1 = ""
tuEvening_OFF_D2 = ""
tuEvening_OFF_D3 = ""

# OFF-time settings (hhmm) for night control Wednesday
weNight_OFF_A1 = ""
weNight_OFF_A2 = ""
weNight_OFF_A3 = ""
weNight_OFF_B1 = ""
weNight_OFF_B2 = ""
weNight_OFF_B3 = ""
weNight_OFF_C1 = ""
weNight_OFF_C2 = ""
weNight_OFF_C3 = ""
weNight_OFF_D1 = ""
weNight_OFF_D2 = ""
weNight_OFF_D3 = ""

# ON-time settings (hhmm) for morning control Wednesday
weMorning_ON_A1 = ""
weMorning_ON_A2 = "0600"
weMorning_ON_A3 = "0600"
weMorning_ON_B1 = ""
weMorning_ON_B2 = ""
weMorning_ON_B3 = ""
weMorning_ON_C1 = ""
weMorning_ON_C2 = ""
weMorning_ON_C3 = ""
weMorning_ON_D1 = ""
weMorning_ON_D2 = ""
weMorning_ON_D3 = ""

# OFF-time settings (hhmm) for evening control Wednesday
weEvening_OFF_A1 = ""
weEvening_OFF_A2 = "2300"
weEvening_OFF_A3 = "2300"
weEvening_OFF_B1 = ""
weEvening_OFF_B2 = ""
weEvening_OFF_B3 = ""
weEvening_OFF_C1 = ""
weEvening_OFF_C2 = ""
weEvening_OFF_C3 = ""
weEvening_OFF_D1 = ""
weEvening_OFF_D2 = ""
weEvening_OFF_D3 = ""

# OFF-time settings (hhmm) for night control Thursday
thNight_OFF_A1 = ""
thNight_OFF_A2 = ""
thNight_OFF_A3 = ""
thNight_OFF_B1 = ""
thNight_OFF_B2 = ""
thNight_OFF_B3 = ""
thNight_OFF_C1 = ""
thNight_OFF_C2 = ""
thNight_OFF_C3 = ""
thNight_OFF_D1 = ""
thNight_OFF_D2 = ""
thNight_OFF_D3 = ""

# ON-time settings (hhmm) for morning control Thursday
thMorning_ON_A1 = ""
thMorning_ON_A2 = "0600"
thMorning_ON_A3 = "0600"
thMorning_ON_B1 = ""
thMorning_ON_B2 = ""
thMorning_ON_B3 = ""
thMorning_ON_C1 = ""
thMorning_ON_C2 = ""
thMorning_ON_C3 = ""
thMorning_ON_D1 = ""
thMorning_ON_D2 = ""
thMorning_ON_D3 = ""

# OFF-time settings (hhmm) for evening control Thursday
thEvening_OFF_A1 = ""
thEvening_OFF_A2 = "2300"
thEvening_OFF_A3 = "2300"
thEvening_OFF_B1 = ""
thEvening_OFF_B2 = ""
thEvening_OFF_B3 = ""
thEvening_OFF_C1 = ""
thEvening_OFF_C2 = ""
thEvening_OFF_C3 = ""
thEvening_OFF_D1 = ""
thEvening_OFF_D2 = ""
thEvening_OFF_D3 = ""

# OFF-time settings (hhmm) for night control Friday
frNight_OFF_A1 = ""
frNight_OFF_A2 = ""
frNight_OFF_A3 = ""
frNight_OFF_B1 = ""
frNight_OFF_B2 = ""
frNight_OFF_B3 = ""
frNight_OFF_C1 = ""
frNight_OFF_C2 = ""
frNight_OFF_C3 = ""
frNight_OFF_D1 = ""
frNight_OFF_D2 = ""
frNight_OFF_D3 = ""

# ON-time settings (hhmm) for morning control Friday
frMorning_ON_A1 = ""
frMorning_ON_A2 = "0600"
frMorning_ON_A3 = "0600"
frMorning_ON_B1 = ""
frMorning_ON_B2 = ""
frMorning_ON_B3 = ""
frMorning_ON_C1 = ""
frMorning_ON_C2 = ""
frMorning_ON_C3 = ""
frMorning_ON_D1 = ""
frMorning_ON_D2 = ""
frMorning_ON_D3 = ""

# OFF-time settings (hhmm) for evening control Friday
frEvening_OFF_A1 = ""
frEvening_OFF_A2 = ""
frEvening_OFF_A3 = ""
frEvening_OFF_B1 = ""
frEvening_OFF_B2 = ""
frEvening_OFF_B3 = ""
frEvening_OFF_C1 = ""
frEvening_OFF_C2 = ""
frEvening_OFF_C3 = ""
frEvening_OFF_D1 = ""
frEvening_OFF_D2 = ""
frEvening_OFF_D3 = ""

# OFF-time settings (hhmm) for night control Saturday
saNight_OFF_A1 = ""
saNight_OFF_A2 = "0100"
saNight_OFF_A3 = "0100"
saNight_OFF_B1 = ""
saNight_OFF_B2 = ""
saNight_OFF_B3 = ""
saNight_OFF_C1 = ""
saNight_OFF_C2 = ""
saNight_OFF_C3 = ""
saNight_OFF_D1 = ""
saNight_OFF_D2 = ""
saNight_OFF_D3 = ""

# ON-time settings (hhmm) for morning control Saturday
saMorning_ON_A1 = ""
saMorning_ON_A2 = "0900"
saMorning_ON_A3 = "0900"
saMorning_ON_B1 = ""
saMorning_ON_B2 = ""
saMorning_ON_B3 = ""
saMorning_ON_C1 = ""
saMorning_ON_C2 = ""
saMorning_ON_C3 = ""
saMorning_ON_D1 = ""
saMorning_ON_D2 = ""
saMorning_ON_D3 = ""

# OFF-time settings (hhmm) for evening control Saturday
saEvening_OFF_A1 = ""
saEvening_OFF_A2 = ""
saEvening_OFF_A3 = ""
saEvening_OFF_B1 = ""
saEvening_OFF_B2 = ""
saEvening_OFF_B3 = ""
saEvening_OFF_C1 = ""
saEvening_OFF_C2 = ""
saEvening_OFF_C3 = ""
saEvening_OFF_D1 = ""
saEvening_OFF_D2 = ""
saEvening_OFF_D3 = ""

# OFF-time settings (hhmm) for night control Sunday
suNight_OFF_A1 = ""
suNight_OFF_A2 = "0100"
suNight_OFF_A3 = "0100"
suNight_OFF_B1 = ""
suNight_OFF_B2 = ""
suNight_OFF_B3 = ""
suNight_OFF_C1 = ""
suNight_OFF_C2 = ""
suNight_OFF_C3 = ""
suNight_OFF_D1 = ""
suNight_OFF_D2 = ""
suNight_OFF_D3 = ""

# ON-time settings (hhmm) for morning control Sunday
suMorning_ON_A1 = ""
suMorning_ON_A2 = "0900"
suMorning_ON_A3 = "0900"
suMorning_ON_B1 = ""
suMorning_ON_B2 = ""
suMorning_ON_B3 = ""
suMorning_ON_C1 = ""
suMorning_ON_C2 = ""
suMorning_ON_C3 = ""
suMorning_ON_D1 = ""
suMorning_ON_D2 = ""
suMorning_ON_D3 = ""

# OFF-time settings (hhmm) for evening control Sunday
suEvening_OFF_A1 = ""
suEvening_OFF_A2 = "2300"
suEvening_OFF_A3 = "2300"
suEvening_OFF_B1 = ""
suEvening_OFF_B2 = ""
suEvening_OFF_B3 = ""
suEvening_OFF_C1 = ""
suEvening_OFF_C2 = ""
suEvening_OFF_C3 = ""
suEvening_OFF_D1 = ""
suEvening_OFF_D2 = ""
suEvening_OFF_D3 = ""

# Specify a control offset in minutes for on/off commands for each
# module address
# A negative offset, as example -45, results in that the activation
# command is sent the specified number of minutes (in this example
# 45 minutes) BEFORE the actual sunset happens
# Deactivation will occur the same amount of minutes AFTER the
# actual sunrise
# This function is much appreciated when you like to control
# indoor lights since it's normally a bit darker inside
#
# A positive offset works the reverse way. It activates the command
# specified number of minutes AFTER the actual sunset
# Deactivation will occur the same amount of minutes BEFORE the 
# actual sunrise
# This function can be used in cases where you think that there is
# still enough light from the sun also a period of time after the
# actual sunset and before sunrise
#
# Set the values in minutes, mm, max values are +/- 120
# As example, offset_C2 = 55 or offset_B2 = -30

iOffset_A1 = 0
iOffset_A2 = 0
iOffset_A3 = 0
iOffset_B1 = 0
iOffset_B2 = 0
iOffset_B3 = 0
iOffset_C1 = 0
iOffset_C2 = 0
iOffset_C3 = 0
iOffset_D1 = 0
iOffset_D2 = 0
iOffset_D3 = 0


##############################################################################


def Check_for_daylight_saving():
    iDLS = 0
    # Get settings from OS
    if iDST_From_OS == 1:
        iDLS = int(time.daylight)
    else:
    # Calculation according to EU-rules
        year = int(time.strftime("%Y", time.localtime()))
        month = int(time.strftime("%m", time.localtime()))
        date = int(time.strftime("%d", time.localtime()))
        hr = int(time.strftime("%H", time.localtime()))
        mn = int(time.strftime("%M", time.localtime()))
        tmp = int(math.floor(year*5/4))
        marchDateEU = int((31 - (tmp+4)%7))
        octDateEU = int((31 - (tmp + 1)%7))

        if month > 3 and month < 10:
            iDLS = 1
        else:
            if month == 3:
                if date > marchDateEU:
                    iDLS = 1
                if (
                    date == marchDateEU 
                    and hr >= 2
                ):
                    iDLS = 1
            if month == 10:
                if date < octDateEU:
                    iDLS = 1
                if (
                    date == octDateEU 
                    and hr <= 2 
                    and mn <= 59
                ):
                    if (
                        hr == 2 
                        and mn == 59 
                        and ad == False
                    ):
                        ad = True
                    iDLS = 1
                if (
                    date == octDateEU
                    and hr == 3
                    and ad == True
                ):
                    ad = False
                
    if iDLS == 1:
        if eg.globals.initsynch == 1:
            msg = "Daylight saving is TRUE"
            LogToFile(msg)
            print msg
            msg = time.strftime(("%Z - Timezone"),time.localtime())
            LogToFile(msg)
            print msg
    else:
        if eg.globals.initsynch == 1:
            msg = "Daylight saving is FALSE"
            LogToFile(msg)
            print msg
            msg = time.strftime(("%Z - Timezone"),time.localtime())
            LogToFile(msg)
            print msg
    return(iDLS)


def Check_for_holidays():
    currDate = time.strftime("%m/%d/%Y", time.localtime())
    date = time.strftime("%m%d", time.localtime())
    dateTmw = time.strftime("%m%d", time.localtime(time.time() + 60*60*24))
    dw = GetDayOfWeek(currDate)
    if dw < 6:
        dwt = dw + 1
    else:
        dwt = 0
    nDw = dw
    
    if (
        fixedHolidays.find(date) != -1
        or variableHolidays.find(date) != -1
    ):
        nDw = 5
        if dwt < 5:
            nDw = 6
        if (
            fixedHolidays.find(dateTmw) != -1 
            or variableHolidays.find(dateTmw) != -1
        ):
            nDw = 5
    if (
        fixedHolidays.find(dateTmw) != -1
        or variableHolidays.find(dateTmw) != -1
    ):
        nDw = 4
    str = nDw
    return(str)


def GetDayOfWeek(dateString):
    # day of week (monday = 0) of a given month/day/year
    t1 = time.strptime(dateString,"%m/%d/%Y")
    # year in time_struct t1 can not go below 1970 (start of epoch)!
    t2 = time.mktime(t1)
    return(time.localtime(t2)[6])


def GetOffsetTimeSR(iO):
    if iO > 120:
        iO = 120
    if iO < -120:
        iO = -120
    iHour = int(time.strftime("%H", time.localtime()))
    iMin = int(time.strftime("%M", time.localtime()))
    iTotMin = iHour*60 + iMin
    if iO<0:
        iTotMin = iTotMin - abs(iO)
    else:
        iTotMin = iTotMin + iO   
    iHour = abs(iTotMin/60)
    iMin = iTotMin - iHour*60
    if iHour > 23:
        iHour = 24 - iHour
    sHour = str(iHour)
    if iHour<10:
        sHour = "0" + sHour
    sMin = str(iMin)
    if iMin<10:
        sMin = "0" + sMin
    s = sHour + sMin
    return(s)


def GetOffsetTimeSS(iO):
    if iO > 120:
        iO = 120
    if iO < -120:
        iO = -120
    iHour = int(time.strftime("%H", time.localtime()))
    iMin = int(time.strftime("%M", time.localtime()))
    iTotMin = iHour*60 + iMin
    if iO<0:
        iTotMin = iTotMin + abs(iO)
    else:
        iTotMin = iTotMin + iO   
    iHour = abs(iTotMin/60)
    iMin = iTotMin - iHour*60
    if iHour > 23:
        iHour = 24 - iHour
    sHour = str(iHour)
    if iHour<10:
        sHour = "0" + sHour
    sMin = str(iMin)
    if iMin<10:
        sMin = "0" + sMin
    s = sHour + sMin
    return(s)


def CalcNbrOfMinutes(s):
    iHour = int(s[0:2])
    iMin = int(s[2:4])
    iTotMin = iHour*60 + iMin
    return(iTotMin)


def NightLightON(
    night_OFF, 
    trigTimeSR,
    trigTime, 
    csSR,
    light,
    lightON
):
    if (
        night_OFF != ""
        and (
            lightON == False
            or eg.globals.iSynchLight == int(iSynchInterval)
            or eg.globals.initsynch == 1
        )
    ):
        if (
            int(trigTime) < int(night_OFF)
            and int(csSR) >= int(night_OFF)
            and int(trigTime) < 0600
            and int(trigTimeSR) < int(csSR)
        ):
            light = 1;
            if iMinOnPeriod > 0:
                if (
                    CalcNbrOfMinutes(csSR) -
                    CalcNbrOfMinutes(trigTimeSR) < iMinOnPeriod
                ):
                    light = 10;
                if (
                    CalcNbrOfMinutes(night_OFF) -
                    CalcNbrOfMinutes(trigTime) < iMinOnPeriod
                ):
                    light = 10;
    return(light)


def NightLightOFF( 
    night_OFF,
    evening_OFF,
    morning_ON, 
    trigTime,
    light, 
    lightON 
):
    if (
        night_OFF != ""
        and (
            lightON == True
            or eg.globals.iSynchLight == int(iSynchInterval)
            or eg.globals.initsynch == 1
        )
    ):
        if (
            int(trigTime) >= int(night_OFF)
            and int(night_OFF) < 0600
            and int(trigTime) < int(morning_ON)
        ):
            light = 0
        if (
            int(trigTime) >= int(night_OFF)
            and int(night_OFF) < 0600
            and morning_ON == ""
            and int(trigTime) < 0600
        ):
            light = 0
    if (
        night_OFF == "" 
        and evening_OFF != ""
        and (
            lightON == True
            or eg.globals.iSynchLight == int(iSynchInterval)
            or eg.globals.initsynch == 1
        )
    ):
        if (
            int(trigTime) > 0000
            and int(trigTime) < 0600
            and (
                int(trigTime) < int(morning_ON)
                or morning_ON == ""
            )
        ):
            light = 0
    return(light)


def MorningLightON( 
    morning_ON,
    trigTimeSR,
    trigTime,
    csSR,
    light,
    lightON 
):
    if (
        morning_ON != ""
        and (
            lightON == False
            or eg.globals.iSynchLight == int(iSynchInterval)
            or eg.globals.initsynch == 1
        )
    ):
        if (
            int(trigTime) >= int(morning_ON)
            and int(csSR) >= int(morning_ON)
            and int(trigTime) < 1200
            and int(trigTimeSR) < int(csSR)
        ):
            light = 1
            if iMinOnPeriod > 0:
                if (
                    CalcNbrOfMinutes(csSR) -
                    CalcNbrOfMinutes(trigTimeSR) < iMinOnPeriod
                ):
                    light = 10
    return(light)


def MorningLightOFF(
    morning_ON,
    trigTimeSR,
    trigTimeSS,
    trigTime,
    csSR,
    csSS,
    light,
    lightON
):
    if (
        morning_ON != ""
        and (
            lightON == True
            or eg.globals.iSynchLight == int(iSynchInterval)
            or eg.globals.initsynch == 1
        )
    ):
        if (
            int(trigTimeSR) >= int(trigTime)
            and int(trigTimeSR) >= int(csSR)
            and int(trigTime) < 1800
        ):
            if int(trigTimeSR) < int(csSS):
                light = 0
        if (
            int(trigTimeSR) < int(trigTime)
            and int(trigTimeSR) >= int(csSR)
            and int(trigTime) < 1800
        ):
            if int(trigTimeSS) < int(csSS):
                light = 0
    return(light)


def EveningLightON(
    morning_ON,
    evening_OFF,
    night_OFF,
    trigTimeSS,
    trigTime,
    csSS,
    light,
    lightON 
):
    if (
        evening_OFF != ""
        and (
            lightON == False
            or eg.globals.iSynchLight == int(iSynchInterval)
            or eg.globals.initsynch == 1
        )
    ):
        if (
            int(trigTimeSS) >= int(csSS)
            and int(csSS) > 1200
        ):
            if (
                int(csSS) <= int(evening_OFF)
                and int(trigTimeSS) > 1200
                and int(trigTime) > 1200
                and int(trigTime) < int(evening_OFF)
            ):
                light = 1
                if iMinOnPeriod > 0:
                    if (
                        CalcNbrOfMinutes(evening_OFF) -
                        CalcNbrOfMinutes(trigTimeSS) < iMinOnPeriod
                    ):
                        light = 10
    if (
        evening_OFF == ""
        and night_OFF != ""
        and (
            lightON == False
            or eg.globals.iSynchLight == int(iSynchInterval)
            or eg.globals.initsynch == 1
        )
    ):
        if (
            int(trigTimeSS) >= int(csSS)
            and int(csSS) > 1200
        ):
            if (
                int(csSS) <= 2359
                and int(trigTimeSS) > 1200
                and int(trigTime) > 1200
                and int(trigTime) <= 2359
            ):
                light = 1
                if iMinOnPeriod > 0:
                    # 23 hours 59 minutes == 1439 minutes
                    if (
                        (1439-CalcNbrOfMinutes(trigTimeSS) +
                        CalcNbrOfMinutes(night_OFF)) < iMinOnPeriod
                    ):
                        light = 10
    if (
        evening_OFF == ""
        and night_OFF == "" 
        and morning_ON != "" 
        and (
            lightON == False
            or eg.globals.iSynchLight == int(iSynchInterval)
            or eg.globals.initsynch == 1
        )
    ):
        if (
            int(trigTimeSS) >= int(csSS)
            and int(csSS) > 1200
        ):
            if (
                int(csSS) <= 2359
                and int(trigTimeSS) > 1200
                and int(trigTime) > 1200
                and int(trigTime) <= 2359
            ):
                light = 1
    return(light)


def EveningLightOFF( 
    morning_ON,
    evening_OFF,
    trigTimeSS, 
    trigTime, 
    csSS, 
    light, 
    lightON 
):
    if (
        evening_OFF != ""
        and (
            lightON == True
            or eg.globals.iSynchLight == int(iSynchInterval)
            or eg.globals.initsynch == 1
        )
    ):
        if (
            int(trigTime) > 1800
            and int(evening_OFF) > 1800
            and int(trigTime) >= int(evening_OFF)
        ):
            light = 0
    if (
        morning_ON != ""
        and (
            lightON == True
            or eg.globals.iSynchLight == int(iSynchInterval)
            or eg.globals.initsynch == 1
        )
    ):
        if (
            int(trigTime) > 1800
            and int(trigTimeSS) < int(csSS)
        ):
            light = 0
    return(light)


def CheckNightLightOn_adr(
    moNight_OFF_adr,
    tuNight_OFF_adr,
    weNight_OFF_adr,
    thNight_OFF_adr,
    frNight_OFF_adr,
    saNight_OFF_adr,
    suNight_OFF_adr,
    dayType,
    trigTimeSR_adr,
    trigTime,
    csSR,
    light_adr,
    lightON_adr
):
    if dayType == "0":
        light_adr = NightLightON( 
                        moNight_OFF_adr, 
                        trigTimeSR_adr,
                        trigTime,
                        csSR, 
                        light_adr,
                        lightON_adr
                    )
    if dayType == "1":
        light_adr = NightLightON( 
                        tuNight_OFF_adr,
                        trigTimeSR_adr,
                        trigTime, 
                        csSR, 
                        light_adr, 
                        lightON_adr
                    )
    if dayType == "2":
        light_adr = NightLightON(
                        weNight_OFF_adr, 
                        trigTimeSR_adr, 
                        trigTime,
                        csSR, 
                        light_adr, 
                        lightON_adr
                    )
    if dayType == "3":
        light_adr = NightLightON( 
                        thNight_OFF_adr,
                        trigTimeSR_adr, 
                        trigTime,
                        csSR,
                        light_adr, 
                        lightON_adr 
                    )
    if dayType == "4":
        light_adr = NightLightON( 
                        frNight_OFF_adr, 
                        trigTimeSR_adr,
                        trigTime, 
                        csSR, 
                        light_adr, 
                        lightON_adr
                    )
    if dayType == "5":
        light_adr = NightLightON( 
                        saNight_OFF_adr,
                        trigTimeSR_adr,
                        trigTime, 
                        csSR, 
                        light_adr,
                        lightON_adr 
                    )
    if dayType == "6":
        light_adr = NightLightON(
                        suNight_OFF_adr,
                        trigTimeSR_adr,
                        trigTime,
                        csSR, 
                        light_adr, 
                        lightON_adr
                    )
    return(int(light_adr))


def CheckNightLightOff_adr(
	moNight_OFF_adr,
	tuNight_OFF_adr,
	weNight_OFF_adr,
	thNight_OFF_adr,
	frNight_OFF_adr,
	saNight_OFF_adr,
	suNight_OFF_adr,
	moEvening_OFF_adr,
	tuEvening_OFF_adr,
	weEvening_OFF_adr,
	thEvening_OFF_adr,
	frEvening_OFF_adr,
	saEvening_OFF_adr,
	suEvening_OFF_adr,
	moMorning_ON_adr,
	tuMorning_ON_adr,
	weMorning_ON_adr,
	thMorning_ON_adr,
	frMorning_ON_adr,
	saMorning_ON_adr,
	suMorning_ON_adr,
	dayType,
	trigTime,
	light_adr,
	lightON_adr
):
    if dayType == "0":
        light_adr = NightLightOFF(
                        moNight_OFF_adr,
                        suEvening_OFF_adr, 
                        moMorning_ON_adr,
                        trigTime, 
                        light_adr, 
                        lightON_adr 
                    )
    if dayType == "1":
        light_adr = NightLightOFF( 
                        tuNight_OFF_adr, 
                        moEvening_OFF_adr, 
                        tuMorning_ON_adr, 
                        trigTime, 
                        light_adr, 
                        lightON_adr 
                    )
    if dayType == "2":
        light_adr = NightLightOFF(
                        weNight_OFF_adr, 
                        tuEvening_OFF_adr, 
                        weMorning_ON_adr,
                        trigTime, 
                        light_adr, 
                        lightON_adr
                    )
    if dayType == "3":
        light_adr = NightLightOFF(
                        thNight_OFF_adr, 
                        weEvening_OFF_adr,
                        thMorning_ON_adr, 
                        trigTime, 
                        light_adr,
                        lightON_adr 
                    )
    if dayType == "4":
        light_adr = NightLightOFF( 
                        frNight_OFF_adr, 
                        thEvening_OFF_adr, 
                        frMorning_ON_adr, 
                        trigTime, 
                        light_adr, 
                        lightON_adr 
                    )
    if dayType == "5":
        light_adr = NightLightOFF( 
                        saNight_OFF_adr,
                        frEvening_OFF_adr, 
                        saMorning_ON_adr, 
                        trigTime,
                        light_adr,
                        lightON_adr
                    )
    if dayType == "6":
        light_adr = NightLightOFF( 
                        suNight_OFF_adr, 
                        saEvening_OFF_adr,
                        suMorning_ON_adr,
                        trigTime, 
                        light_adr, 
                        lightON_adr 
                    )
    return(int(light_adr))


def CheckMorningLightOn_adr(
	moMorning_ON_adr,
	tuMorning_ON_adr,
	weMorning_ON_adr,
	thMorning_ON_adr,
	frMorning_ON_adr,
	saMorning_ON_adr,
	suMorning_ON_adr,
	dayType,
	trigTimeSR_adr,
	trigTime,
	csSR,
	light_adr,
	lightON_adr
):
    if dayType == "0":
        light_adr = MorningLightON(
                        moMorning_ON_adr, 
                        trigTimeSR_adr, 
                        trigTime,
                        csSR, 
                        light_adr, 
                        lightON_adr
                    )
    if dayType == "1":
        light_adr = MorningLightON( 
                        tuMorning_ON_adr,
                        trigTimeSR_adr,
                        trigTime,
                        csSR, 
                        light_adr, 
                        lightON_adr 
                    )
    if dayType == "2":
        light_adr = MorningLightON( 
                        weMorning_ON_adr,
                        trigTimeSR_adr, 
                        trigTime, 
                        csSR, 
                        light_adr, 
                        lightON_adr
                    )
    if dayType == "3":
        light_adr = MorningLightON( 
                        thMorning_ON_adr, 
                        trigTimeSR_adr, 
                        trigTime,
                        csSR, 
                        light_adr,
                        lightON_adr
                    )
    if dayType == "4":
        light_adr = MorningLightON( 
                        frMorning_ON_adr,
                        trigTimeSR_adr,
                        trigTime, 
                        csSR,
                        light_adr,
                        lightON_adr
                    )
    if dayType == "5":
        light_adr = MorningLightON( 
                        saMorning_ON_adr, 
                        trigTimeSR_adr, 
                        trigTime, 
                        csSR, 
                        light_adr,
                        lightON_adr 
                    )
    if dayType == "6":
        light_adr = MorningLightON( 
                        suMorning_ON_adr, 
                        trigTimeSR_adr, 
                        trigTime,
                        csSR, 
                        light_adr,
                        lightON_adr 
                    )
    return(int(light_adr))


def CheckMorningLightOff_adr(
	moMorning_ON_adr,
	tuMorning_ON_adr,
	weMorning_ON_adr,
	thMorning_ON_adr,
	frMorning_ON_adr,
	saMorning_ON_adr,
	suMorning_ON_adr,
	dayType,
	trigTimeSR_adr,
	trigTimeSS_adr,
	trigTime,
	csSR,
	csSS,
	light_adr,
	lightON_adr
):
    if dayType == "0":
        light_adr = MorningLightOFF( 
                        moMorning_ON_adr,
                        trigTimeSR_adr, 
                        trigTimeSS_adr, 
                        trigTime, csSR, 
                        csSS, light_adr, 
                        lightON_adr 
                    )
    if dayType == "1":
        light_adr = MorningLightOFF( 
                        tuMorning_ON_adr,
                        trigTimeSR_adr, 
                        trigTimeSS_adr, 
                        trigTime,
                        csSR,
                        csSS, 
                        light_adr, 
                        lightON_adr
                    )
    if dayType == "2":
        light_adr = MorningLightOFF(
                        weMorning_ON_adr,
                        trigTimeSR_adr,
                        trigTimeSS_adr,
                        trigTime, csSR, 
                        csSS, light_adr, 
                        lightON_adr 
                    )
    if dayType == "3":
        light_adr = MorningLightOFF( 
                        thMorning_ON_adr,
                        trigTimeSR_adr, 
                        trigTimeSS_adr,
                        trigTime,
                        csSR,
                        csSS,
                        light_adr,
                        lightON_adr
                    )
    if dayType == "4":
        light_adr = MorningLightOFF(
                        frMorning_ON_adr,
                        trigTimeSR_adr,
                        trigTimeSS_adr,
                        trigTime,
                        csSR,
                        csSS, 
                        light_adr,
                        lightON_adr
                    )
    if dayType == "5":
        light_adr = MorningLightOFF(
                        saMorning_ON_adr, 
                        trigTimeSR_adr,
                        trigTimeSS_adr, 
                        trigTime,
                        csSR,
                        csSS, 
                        light_adr, 
                        lightON_adr 
                    )
    if dayType == "6":
        light_adr = MorningLightOFF( 
                        suMorning_ON_adr,
                        trigTimeSR_adr,
                        trigTimeSS_adr, 
                        trigTime, 
                        csSR,
                        csSS, 
                        light_adr,
                        lightON_adr 
                    )
    return(int(light_adr))


def CheckEveningLightOn_adr(
	moMorning_ON_adr,
	tuMorning_ON_adr,
	weMorning_ON_adr,
	thMorning_ON_adr,
	frMorning_ON_adr,
	saMorning_ON_adr,
	suMorning_ON_adr,
	moEvening_OFF_adr,
	tuEvening_OFF_adr,
	weEvening_OFF_adr,
	thEvening_OFF_adr,
	frEvening_OFF_adr,
	saEvening_OFF_adr,
	suEvening_OFF_adr,
	moNight_OFF_adr,
	tuNight_OFF_adr,
	weNight_OFF_adr,
	thNight_OFF_adr,
	frNight_OFF_adr,
	saNight_OFF_adr,
	suNight_OFF_adr,
	dayType,
	trigTimeSS_adr,
	trigTime,
	csSS,
	light_adr,
	lightON_adr
):
    if dayType == "0":
        light_adr = EveningLightON( 
                        moMorning_ON_adr,
                        moEvening_OFF_adr,
                        tuNight_OFF_adr, 
                        trigTimeSS_adr, 
                        trigTime, 
                        csSS, 
                        light_adr, 
                        lightON_adr
                    )
    if dayType == "1":
        light_adr = EveningLightON( 
                        tuMorning_ON_adr, 
                        tuEvening_OFF_adr,
                        weNight_OFF_adr,
                        trigTimeSS_adr,
                        trigTime, 
                        csSS,
                        light_adr, 
                        lightON_adr
                    )
    if dayType == "2":
        light_adr = EveningLightON( 
                        weMorning_ON_adr, 
                        weEvening_OFF_adr, 
                        thNight_OFF_adr,
                        trigTimeSS_adr, 
                        trigTime, 
                        csSS,
                        light_adr, 
                        lightON_adr
                    )
    if dayType == "3":
        light_adr = EveningLightON( 
                        thMorning_ON_adr, 
                        thEvening_OFF_adr,
                        frNight_OFF_adr,
                        trigTimeSS_adr, 
                        trigTime,
                        csSS, 
                        light_adr,
                        lightON_adr 
                    )
    if dayType == "4":
        light_adr = EveningLightON( 
                        frMorning_ON_adr, 
                        frEvening_OFF_adr,
                        saNight_OFF_adr, 
                        trigTimeSS_adr, 
                        trigTime, 
                        csSS, 
                        light_adr, 
                        lightON_adr 
                    )
    if dayType == "5":
        light_adr = EveningLightON(
                        saMorning_ON_adr, 
                        saEvening_OFF_adr, 
                        suNight_OFF_adr,
                        trigTimeSS_adr, 
                        trigTime, 
                        csSS, 
                        light_adr,
                        lightON_adr 
                    )
    if dayType == "6":
        light_adr = EveningLightON( 
                        suMorning_ON_adr, 
                        suEvening_OFF_adr, 
                        moNight_OFF_adr,
                        trigTimeSS_adr,
                        trigTime,
                        csSS, 
                        light_adr, 
                        lightON_adr
                    )
    return(int(light_adr))


def CheckEveningLightOff_adr(
	moMorning_ON_adr,
	tuMorning_ON_adr,
	weMorning_ON_adr,
	thMorning_ON_adr,
	frMorning_ON_adr,
	saMorning_ON_adr,
	suMorning_ON_adr,
	moEvening_OFF_adr,
	tuEvening_OFF_adr,
	weEvening_OFF_adr,
	thEvening_OFF_adr,
	frEvening_OFF_adr,
	saEvening_OFF_adr,
	suEvening_OFF_adr,
	dayType,
	trigTimeSS_adr,
	trigTime,
	csSS,
	light_adr,
	lightON_adr
):
    if dayType == "0":
        light_adr = EveningLightOFF(
                        moMorning_ON_adr,
                        moEvening_OFF_adr, 
                        trigTimeSS_adr, 
                        trigTime,
                        csSS, 
                        light_adr, 
                        lightON_adr 
                    )
    if dayType == "1":
        light_adr = EveningLightOFF(
                        tuMorning_ON_adr, 
                        tuEvening_OFF_adr,
                        trigTimeSS_adr, 
                        trigTime, 
                        csSS, 
                        light_adr, 
                        lightON_adr
                    )
    if dayType == "2":
        light_adr = EveningLightOFF( 
                        weMorning_ON_adr,
                        weEvening_OFF_adr,
                        trigTimeSS_adr,
                        trigTime, 
                        csSS,
                        light_adr, 
                        lightON_adr
                    )
    if dayType == "3":
        light_adr = EveningLightOFF( 
                        thMorning_ON_adr,
                        thEvening_OFF_adr,
                        trigTimeSS_adr, 
                        trigTime,
                        csSS,
                        light_adr, 
                        lightON_adr
                    )
    if dayType == "4":
        light_adr = EveningLightOFF( 
                        frMorning_ON_adr,
                        frEvening_OFF_adr,
                        trigTimeSS_adr, 
                        trigTime, 
                        csSS, 
                        light_adr,
                        lightON_adr
                    )
    if dayType == "5":
        light_adr = EveningLightOFF( 
                        saMorning_ON_adr,
                        saEvening_OFF_adr,
                        trigTimeSS_adr, 
                        trigTime, 
                        csSS, 
                        light_adr,
                        lightON_adr 
                    )
    if dayType == "6":
        light_adr = EveningLightOFF( 
                        suMorning_ON_adr,
                        suEvening_OFF_adr,
                        trigTimeSS_adr, 
                        trigTime,
                        csSS, 
                        light_adr, 
                        lightON_adr 
                    )
    return(int(light_adr))


def GetNameOfDay(dt):
    nd = ""
    if dt == "0":
        nd = "Monday"
    if dt =="1":
        nd = "Tuesday"
    if dt == "2":
        nd = "Wednesday"
    if dt == "3":
        nd = "Thursday"
    if dt == "4":
        nd = "Friday"
    if dt == "5":
        nd = "Saturday"
    if dt == "6":
        nd = "Sunday"
    return(nd)


def SendToEG(egCode):
    eg.TriggerEvent(egCode)


def AddSchedule(fname, param):
    for i in range(iNbrOfBursts):
        sTime = 0.1 + eg.globals.cntr * iCmdDelay
        eg.scheduler.AddTask(sTime, fname, param)
        eg.globals.cntr += 1


def CheckIfLog(lightOld, light, iSynch, label):       
    if (
        light != lightOld
        or iSynch == 1
    ):
        LogToFile(label)


def LogToFile(s):
    timeStamp = str(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
    logStr = timeStamp+"\t"+s+"<br\n>"
    if not os.path.exists('Log') and not os.path.isdir('Log'):
        os.mkdir('Log')
    fileHandle = open ( 'Log/SunRiseSet.html', 'a' )
    fileHandle.write ( logStr )
    fileHandle.close()


def SunUpDown():
    # Adjust the sunrise/sunset trig times with defined offset for each group
    # Group A1
    trigTimeSR_A1 = GetOffsetTimeSR(iOffset_A1)
    trigTimeSS_A1 = GetOffsetTimeSS(iOffset_A1)
    # Group A2
    trigTimeSR_A2 = GetOffsetTimeSR(iOffset_A2)
    trigTimeSS_A2 = GetOffsetTimeSS(iOffset_A2)
    # Group A3
    trigTimeSR_A3 = GetOffsetTimeSR(iOffset_A3)
    trigTimeSS_A3 = GetOffsetTimeSS(iOffset_A3)
    # Group B1
    trigTimeSR_B1 = GetOffsetTimeSR(iOffset_B1)
    trigTimeSS_B1 = GetOffsetTimeSS(iOffset_B1)
    # Group B2
    trigTimeSR_B2 = GetOffsetTimeSR(iOffset_B2)
    trigTimeSS_B2 = GetOffsetTimeSS(iOffset_B2)
    # Group B3
    trigTimeSR_B3 = GetOffsetTimeSR(iOffset_B3)
    trigTimeSS_B3 = GetOffsetTimeSS(iOffset_B3)
    # Group C1
    trigTimeSR_C1 = GetOffsetTimeSR(iOffset_C1)
    trigTimeSS_C1 = GetOffsetTimeSS(iOffset_C1)
    # Group C2
    trigTimeSR_C2 = GetOffsetTimeSR(iOffset_C2)
    trigTimeSS_C2 = GetOffsetTimeSS(iOffset_C2)
    # Group C3
    trigTimeSR_C3 = GetOffsetTimeSR(iOffset_C3)
    trigTimeSS_C3 = GetOffsetTimeSS(iOffset_C3)
    # Group D1
    trigTimeSR_D1 = GetOffsetTimeSR(iOffset_D1)
    trigTimeSS_D1 = GetOffsetTimeSS(iOffset_D1)
    # Group D2
    trigTimeSR_D2 = GetOffsetTimeSR(iOffset_D2)
    trigTimeSS_D2 = GetOffsetTimeSS(iOffset_D2)
    # Group D3
    trigTimeSR_D3 = GetOffsetTimeSR(iOffset_D3)
    trigTimeSS_D3 = GetOffsetTimeSS(iOffset_D3)
    
    # Get the current date & time now, check if it has changed
    trigTime = str(time.strftime("%H%M", time.localtime()))
    currDate = str(time.strftime("%m/%d/%Y", time.localtime()))
    if currDate != eg.globals.prevDate:
        eg.globals.prevDate = 0

    # Get day of week and check for holidays
    odayType = str(GetDayOfWeek(currDate))
    dayType = str(Check_for_holidays())

    # Check if we are in daylight savings
    idLS = Check_for_daylight_saving()
    
    # Calculate Sunrise/Sunset times at your geographical position
    year = int(time.strftime("%Y", time.localtime()))
    month = int(time.strftime("%m", time.localtime()))
    day = int(time.strftime("%d", time.localtime()))
    
    # Get the sunrise/sunset times in UT and fix the format
    st = str(eg.globals.sunRiseSet(year, month, day, myLongitude, myLatitude))
    st = st.replace("(", "")
    st = st.replace(")", "")
    st = st.replace(",", "")
    
    # Split and extract the data
    data = st.split()
    t1 = data[0]
    t2 = data[1]
    dat1 = t1.split(".")
    dat2 = t2.split(".")
    
    # Adjust the times according to your timezone and daylight savings
    tZ = int(time.timezone/3600)
    
    h1 = int(int(dat1[0])+idLS-tZ)
    m1 = float("."+dat1[1])
    m1 = int(m1*60)
    if m1 < 0:
        h1 -= 1
        m1 = 60+m1
    if h1 > 23:
        h1 = abs(24-h1)
    sh1 = str(h1)
    if h1 < 10:
        sh1 = "0" + sh1
        
    sm1 = str(m1)
    if m1 < 10:
        sm1 = "0" + sm1
        
    h2 = int(int(dat2[0])+idLS-tZ)
    m2 = float("."+dat2[1])
    m2 = int(m2*60)
    if m2 < 0:
        h2 -= 1
        m2 = 60+m2
    if h2 > 23:
        h2 = abs(24-h2)
    sh2 = str(h2)
    if h2 < 10:
        sh2 = "0" + sh2
        
    sm2 = str(m2)
    if m2 < 10:
        sm2 = "0" + sm2
  
    # Finally, the time strings are composed
    csSR = sh1+sm1
    csSS = sh2+sm2
    
    # Initial logging when a new day begins
    if eg.globals.prevDate == 0:
        eg.globals.prevDate = currDate
        lg = "Today Sunrise will be at "+csSR+" and Sunset at "+csSS
        LogToFile(lg)
        print "Today:"
        print "Sunrise will be at "+csSR
        print "Sunset will be at "+csSS
        od = GetNameOfDay(odayType)
        nd = GetNameOfDay(dayType)
        if nd != od:
            lg = "The day of week is "+od
            print lg
            LogToFile(lg)
            lg = "Due to holidays, scheduling will follow your settings for "+nd
            LogToFile(lg)
            print "Due to holidays, scheduling will"
            print "follow your settings for "+nd
    
    # Restoring to initial value
    light_A1 = 10
    light_A2 = 10
    light_A3 = 10
    light_B1 = 10
    light_B2 = 10
    light_B3 = 10
    light_C1 = 10
    light_C2 = 10
    light_C3 = 10
    light_D1 = 10
    light_D2 = 10
    light_D3 = 10

    # Night Light On A1
    light_A1 = CheckNightLightOn_adr( 
                    moNight_OFF_A1,
                    tuNight_OFF_A1,
                    weNight_OFF_A1,
                    thNight_OFF_A1,
                    frNight_OFF_A1,
                    saNight_OFF_A1, 
                    suNight_OFF_A1, 
                    dayType, 
                    trigTimeSR_A1, 
                    trigTime, 
                    csSR, 
                    light_A1,
                    eg.globals.lightON_A1 
                )
    # Night Light On A2
    light_A2 = CheckNightLightOn_adr( 
                    moNight_OFF_A2, 
                    tuNight_OFF_A2, 
                    weNight_OFF_A2, 
                    thNight_OFF_A2,
                    frNight_OFF_A2, 
                    saNight_OFF_A2,
                    suNight_OFF_A2,
                    dayType, 
                    trigTimeSR_A2, 
                    trigTime, 
                    csSR, 
                    light_A2,
                    eg.globals.lightON_A2
                )
    # Night Light On A3
    light_A3 = CheckNightLightOn_adr( 
                    moNight_OFF_A3, 
                    tuNight_OFF_A3,
                    weNight_OFF_A3, 
                    thNight_OFF_A3, 
                    frNight_OFF_A3,
                    saNight_OFF_A3, 
                    suNight_OFF_A3, 
                    dayType,
                    trigTimeSR_A3,
                    trigTime, csSR,
                    light_A3,
                    eg.globals.lightON_A3 
                )
    # Night Light On B1
    light_B1 = CheckNightLightOn_adr( 
                    moNight_OFF_B1,
                    tuNight_OFF_B1,
                    weNight_OFF_B1, 
                    thNight_OFF_B1, 
                    frNight_OFF_B1,
                    saNight_OFF_B1, 
                    suNight_OFF_B1,
                    dayType, 
                    trigTimeSR_B1, 
                    trigTime, 
                    csSR,
                    light_B1,
                    eg.globals.lightON_B1
                )
    # Night Light On B2
    light_B2 = CheckNightLightOn_adr( 
                    moNight_OFF_B2, 
                    tuNight_OFF_B2,
                    weNight_OFF_B2,
                    thNight_OFF_B2,
                    frNight_OFF_B2,
                    saNight_OFF_B2, 
                    suNight_OFF_B2, 
                    dayType,
                    trigTimeSR_B2,
                    trigTime,
                    csSR, 
                    light_B2,
                    eg.globals.lightON_B2
                )
    # Night Light On B3
    light_B3 = CheckNightLightOn_adr( 
                    moNight_OFF_B3, 
                    tuNight_OFF_B3,
                    weNight_OFF_B3,
                    thNight_OFF_B3, 
                    frNight_OFF_B3, 
                    saNight_OFF_B3,
                    suNight_OFF_B3, 
                    dayType, 
                    trigTimeSR_B3, 
                    trigTime, 
                    csSR, 
                    light_B3,
                    eg.globals.lightON_B3
                )
    # Night Light On C1
    light_C1 = CheckNightLightOn_adr( 
                    moNight_OFF_C1, 
                    tuNight_OFF_C1,
                    weNight_OFF_C1,
                    thNight_OFF_C1, 
                    frNight_OFF_C1,
                    saNight_OFF_C1, 
                    suNight_OFF_C1,
                    dayType, 
                    trigTimeSR_C1,
                    trigTime,
                    csSR, 
                    light_C1,
                    eg.globals.lightON_C1
                )
    # Night Light On C2
    light_C2 = CheckNightLightOn_adr( 
                    moNight_OFF_C2,
                    tuNight_OFF_C2, 
                    weNight_OFF_C2, 
                    thNight_OFF_C2,
                    frNight_OFF_C2,
                    saNight_OFF_C2,
                    suNight_OFF_C2, 
                    dayType,
                    trigTimeSR_C2,
                    trigTime, 
                    csSR, 
                    light_C2, 
                    eg.globals.lightON_C2
                )
    # Night Light On C3
    light_C3 = CheckNightLightOn_adr( 
                    moNight_OFF_C3, 
                    tuNight_OFF_C3, 
                    weNight_OFF_C3, 
                    thNight_OFF_C3, 
                    frNight_OFF_C3,
                    saNight_OFF_C3, 
                    suNight_OFF_C3,
                    dayType,
                    trigTimeSR_C3, 
                    trigTime,
                    csSR, 
                    light_C3, 
                    eg.globals.lightON_C3
                )
    # Night Light On D1
    light_D1 = CheckNightLightOn_adr( 
                    moNight_OFF_D1, 
                    tuNight_OFF_D1,
                    weNight_OFF_D1, 
                    thNight_OFF_D1,
                    frNight_OFF_D1, 
                    saNight_OFF_D1,
                    suNight_OFF_D1,
                    dayType, 
                    trigTimeSR_D1,
                    trigTime,
                    csSR, 
                    light_D1, 
                    eg.globals.lightON_D1
                )
    # Night Light On D2
    light_D2 = CheckNightLightOn_adr( 
                    moNight_OFF_D2,
                    tuNight_OFF_D2,
                    weNight_OFF_D2,
                    thNight_OFF_D2, 
                    frNight_OFF_D2, 
                    saNight_OFF_D2,
                    suNight_OFF_D2,
                    dayType, 
                    trigTimeSR_D2, 
                    trigTime,
                    csSR, 
                    light_D2,
                    eg.globals.lightON_D2
                )
    # Night Light On D3
    light_D3 = CheckNightLightOn_adr( 
                    moNight_OFF_D3,
                    tuNight_OFF_D3,
                    weNight_OFF_D3,
                    thNight_OFF_D3,
                    frNight_OFF_D3,
                    saNight_OFF_D3,
                    suNight_OFF_D3,
                    dayType,
                    trigTimeSR_D3, 
                    trigTime, 
                    csSR, 
                    light_D3,
                    eg.globals.lightON_D3
                )
    # Night Light Off A1
    light_A1 = CheckNightLightOff_adr( 
                    moNight_OFF_A1,
                    tuNight_OFF_A1, 
                    weNight_OFF_A1, 
                    thNight_OFF_A1,
                    frNight_OFF_A1, 
                    saNight_OFF_A1,
                    suNight_OFF_A1, 
                    moEvening_OFF_A1,
                    tuEvening_OFF_A1, 
                    weEvening_OFF_A1, 
                    thEvening_OFF_A1, 
                    frEvening_OFF_A1,
                    saEvening_OFF_A1,
                    suEvening_OFF_A1,
                    moMorning_ON_A1, 
                    tuMorning_ON_A1,
                    weMorning_ON_A1,
                    thMorning_ON_A1, 
                    frMorning_ON_A1,
                    saMorning_ON_A1,
                    suMorning_ON_A1,
                    dayType, 
                    trigTime,
                    light_A1, 
                    eg.globals.lightON_A1 
                )
    # Night Light Off A2
    light_A2 = CheckNightLightOff_adr( 
                    moNight_OFF_A2, 
                    tuNight_OFF_A2,
                    weNight_OFF_A2,
                    thNight_OFF_A2,
                    frNight_OFF_A2, 
                    saNight_OFF_A2,
                    suNight_OFF_A2, 
                    moEvening_OFF_A2,
                    tuEvening_OFF_A2, 
                    weEvening_OFF_A2, 
                    thEvening_OFF_A2, 
                    frEvening_OFF_A2, 
                    saEvening_OFF_A2, 
                    suEvening_OFF_A2,
                    moMorning_ON_A2, 
                    tuMorning_ON_A2, 
                    weMorning_ON_A2, 
                    thMorning_ON_A2, 
                    frMorning_ON_A2, 
                    saMorning_ON_A2, 
                    suMorning_ON_A2, 
                    dayType, 
                    trigTime, 
                    light_A2, 
                    eg.globals.lightON_A2 
                )
    # Night Light Off A3
    light_A3 = CheckNightLightOff_adr( 
                    moNight_OFF_A3, 
                    tuNight_OFF_A3, 
                    weNight_OFF_A3,
                    thNight_OFF_A3,
                    frNight_OFF_A3, 
                    saNight_OFF_A3, 
                    suNight_OFF_A3, 
                    moEvening_OFF_A3, 
                    tuEvening_OFF_A3, 
                    weEvening_OFF_A3, 
                    thEvening_OFF_A3,
                    frEvening_OFF_A3,
                    saEvening_OFF_A3,
                    suEvening_OFF_A3,
                    moMorning_ON_A3, 
                    tuMorning_ON_A3, 
                    weMorning_ON_A3, 
                    thMorning_ON_A3,
                    frMorning_ON_A3, 
                    saMorning_ON_A3,
                    suMorning_ON_A3, 
                    dayType,
                    trigTime, 
                    light_A3,
                    eg.globals.lightON_A3 
                )
    # Night Light Off B1
    light_B1 = CheckNightLightOff_adr( 
                    moNight_OFF_B1, 
                    tuNight_OFF_B1,
                    weNight_OFF_B1, 
                    thNight_OFF_B1,
                    frNight_OFF_B1, 
                    saNight_OFF_B1, 
                    suNight_OFF_B1,
                    moEvening_OFF_B1, 
                    tuEvening_OFF_B1, 
                    weEvening_OFF_B1, 
                    thEvening_OFF_B1, 
                    frEvening_OFF_B1, 
                    saEvening_OFF_B1,
                    suEvening_OFF_B1,
                    moMorning_ON_B1, 
                    tuMorning_ON_B1, 
                    weMorning_ON_B1, 
                    thMorning_ON_B1,
                    frMorning_ON_B1,
                    saMorning_ON_B1, 
                    suMorning_ON_B1, 
                    dayType, 
                    trigTime, 
                    light_B1, 
                    eg.globals.lightON_B1 
                )
    # Night Light Off B2
    light_B2 = CheckNightLightOff_adr(
                    moNight_OFF_B2,
                    tuNight_OFF_B2,
                    weNight_OFF_B2,
                    thNight_OFF_B2,
                    frNight_OFF_B2,
                    saNight_OFF_B2,
                    suNight_OFF_B2,
                    moEvening_OFF_B2, 
                    tuEvening_OFF_B2, 
                    weEvening_OFF_B2,
                    thEvening_OFF_B2, 
                    frEvening_OFF_B2,
                    saEvening_OFF_B2,
                    suEvening_OFF_B2,
                    moMorning_ON_B2, 
                    tuMorning_ON_B2, 
                    weMorning_ON_B2, 
                    thMorning_ON_B2,
                    frMorning_ON_B2,
                    saMorning_ON_B2,
                    suMorning_ON_B2, 
                    dayType,
                    trigTime, 
                    light_B2,
                    eg.globals.lightON_B2
                )
    # Night Light Off B3
    light_B3 = CheckNightLightOff_adr( 
                    moNight_OFF_B3, 
                    tuNight_OFF_B3,
                    weNight_OFF_B3,
                    thNight_OFF_B3, 
                    frNight_OFF_B3, 
                    saNight_OFF_B3, 
                    suNight_OFF_B3,
                    moEvening_OFF_B3,
                    tuEvening_OFF_B3,
                    weEvening_OFF_B3,
                    thEvening_OFF_B3,
                    frEvening_OFF_B3,
                    saEvening_OFF_B3,
                    suEvening_OFF_B3,
                    moMorning_ON_B3, 
                    tuMorning_ON_B3, 
                    weMorning_ON_B3,
                    thMorning_ON_B3,
                    frMorning_ON_B3, 
                    saMorning_ON_B3, 
                    suMorning_ON_B3, 
                    dayType,
                    trigTime, 
                    light_B3, 
                    eg.globals.lightON_B3
                )
    # Night Light Off C1
    light_C1 = CheckNightLightOff_adr( 
                    moNight_OFF_C1,
                    tuNight_OFF_C1,
                    weNight_OFF_C1,
                    thNight_OFF_C1,
                    frNight_OFF_C1, 
                    saNight_OFF_C1, 
                    suNight_OFF_C1, 
                    moEvening_OFF_C1,
                    tuEvening_OFF_C1,
                    weEvening_OFF_C1,
                    thEvening_OFF_C1, 
                    frEvening_OFF_C1, 
                    saEvening_OFF_C1, 
                    suEvening_OFF_C1,
                    moMorning_ON_C1, 
                    tuMorning_ON_C1, 
                    weMorning_ON_C1,
                    thMorning_ON_C1, 
                    frMorning_ON_C1, 
                    saMorning_ON_C1, 
                    suMorning_ON_C1, 
                    dayType, 
                    trigTime, 
                    light_C1, 
                    eg.globals.lightON_C1
                )
    # Night Light Off C2
    light_C2 = CheckNightLightOff_adr(
                    moNight_OFF_C2, 
                    tuNight_OFF_C2, 
                    weNight_OFF_C2,
                    thNight_OFF_C2, 
                    frNight_OFF_C2, 
                    saNight_OFF_C2,
                    suNight_OFF_C2,
                    moEvening_OFF_C2,
                    tuEvening_OFF_C2,
                    weEvening_OFF_C2,
                    thEvening_OFF_C2,
                    frEvening_OFF_C2,
                    saEvening_OFF_C2, 
                    suEvening_OFF_C2,
                    moMorning_ON_C2, 
                    tuMorning_ON_C2,
                    weMorning_ON_C2, 
                    thMorning_ON_C2, 
                    frMorning_ON_C2, 
                    saMorning_ON_C2, 
                    suMorning_ON_C2,
                    dayType, 
                    trigTime, 
                    light_C2,
                    eg.globals.lightON_C2
                )
    # Night Light Off C3
    light_C3 = CheckNightLightOff_adr(
                    moNight_OFF_C3, 
                    tuNight_OFF_C3, 
                    weNight_OFF_C3,
                    thNight_OFF_C3,
                    frNight_OFF_C3,
                    saNight_OFF_C3, 
                    suNight_OFF_C3, 
                    moEvening_OFF_C3,
                    tuEvening_OFF_C3,
                    weEvening_OFF_C3, 
                    thEvening_OFF_C3,
                    frEvening_OFF_C3, 
                    saEvening_OFF_C3,
                    suEvening_OFF_C3,
                    moMorning_ON_C3, 
                    tuMorning_ON_C3, 
                    weMorning_ON_C3, 
                    thMorning_ON_C3,
                    frMorning_ON_C3, 
                    saMorning_ON_C3,
                    suMorning_ON_C3, 
                    dayType, 
                    trigTime, 
                    light_C3, 
                    eg.globals.lightON_C3 
                )
    # Night Light Off D1
    light_D1 = CheckNightLightOff_adr(
                    moNight_OFF_D1,
                    tuNight_OFF_D1, 
                    weNight_OFF_D1,
                    thNight_OFF_D1,
                    frNight_OFF_D1,
                    saNight_OFF_D1, 
                    suNight_OFF_D1,
                    moEvening_OFF_D1, 
                    tuEvening_OFF_D1, 
                    weEvening_OFF_D1, 
                    thEvening_OFF_D1, 
                    frEvening_OFF_D1, 
                    saEvening_OFF_D1, 
                    suEvening_OFF_D1, 
                    moMorning_ON_D1, 
                    tuMorning_ON_D1,
                    weMorning_ON_D1, 
                    thMorning_ON_D1, 
                    frMorning_ON_D1,
                    saMorning_ON_D1, 
                    suMorning_ON_D1, 
                    dayType,
                    trigTime, 
                    light_D1,
                    eg.globals.lightON_D1
                )
    # Night Light Off D2
    light_D2 = CheckNightLightOff_adr(
                    moNight_OFF_D2, 
                    tuNight_OFF_D2, 
                    weNight_OFF_D2, 
                    thNight_OFF_D2, 
                    frNight_OFF_D2, 
                    saNight_OFF_D2,
                    suNight_OFF_D2,
                    moEvening_OFF_D2,
                    tuEvening_OFF_D2,
                    weEvening_OFF_D2, 
                    thEvening_OFF_D2,
                    frEvening_OFF_D2,
                    saEvening_OFF_D2, 
                    suEvening_OFF_D2,
                    moMorning_ON_D2, 
                    tuMorning_ON_D2,
                    weMorning_ON_D2,
                    thMorning_ON_D2, 
                    frMorning_ON_D2,
                    saMorning_ON_D2, 
                    suMorning_ON_D2,
                    dayType,
                    trigTime, 
                    light_D2, 
                    eg.globals.lightON_D2
                )
    # Night Light Off D3
    light_D3 = CheckNightLightOff_adr( 
                    moNight_OFF_D3, 
                    tuNight_OFF_D3, 
                    weNight_OFF_D3,
                    thNight_OFF_D3, 
                    frNight_OFF_D3, 
                    saNight_OFF_D3, 
                    suNight_OFF_D3, 
                    moEvening_OFF_D3,
                    tuEvening_OFF_D3,
                    weEvening_OFF_D3,
                    thEvening_OFF_D3,
                    frEvening_OFF_D3,
                    saEvening_OFF_D3,
                    suEvening_OFF_D3,
                    moMorning_ON_D3, 
                    tuMorning_ON_D3,
                    weMorning_ON_D3,
                    thMorning_ON_D3, 
                    frMorning_ON_D3,
                    saMorning_ON_D3, 
                    suMorning_ON_D3,
                    dayType, 
                    trigTime,
                    light_D3, 
                    eg.globals.lightON_D3
                )
    # Morning Light On A1
    light_A1 = CheckMorningLightOn_adr( 
                    moMorning_ON_A1, 
                    tuMorning_ON_A1, 
                    weMorning_ON_A1, 
                    thMorning_ON_A1, 
                    frMorning_ON_A1,
                    saMorning_ON_A1, 
                    suMorning_ON_A1,
                    dayType, 
                    trigTimeSR_A1,
                    trigTime, 
                    csSR, 
                    light_A1,
                    eg.globals.lightON_A1
                )
    # Morning Light On A2
    light_A2 = CheckMorningLightOn_adr(
                    moMorning_ON_A2,
                    tuMorning_ON_A2,
                    weMorning_ON_A2,
                    thMorning_ON_A2,
                    frMorning_ON_A2, 
                    saMorning_ON_A2, 
                    suMorning_ON_A2, 
                    dayType, 
                    trigTimeSR_A2,
                    trigTime, 
                    csSR,
                    light_A2,
                    eg.globals.lightON_A2 
                )
    # Morning Light On A3
    light_A3 = CheckMorningLightOn_adr(
                    moMorning_ON_A3, 
                    tuMorning_ON_A3,
                    weMorning_ON_A3,
                    thMorning_ON_A3,
                    frMorning_ON_A3,
                    saMorning_ON_A3,
                    suMorning_ON_A3,
                    dayType, 
                    trigTimeSR_A3, 
                    trigTime, 
                    csSR,
                    light_A3, 
                    eg.globals.lightON_A3
                )
    # Morning Light On B1
    light_B1 = CheckMorningLightOn_adr( 
                    moMorning_ON_B1, 
                    tuMorning_ON_B1, 
                    weMorning_ON_B1,
                    thMorning_ON_B1,
                    frMorning_ON_B1,
                    saMorning_ON_B1,
                    suMorning_ON_B1, 
                    dayType, 
                    trigTimeSR_B1, 
                    trigTime, 
                    csSR, 
                    light_B1, 
                    eg.globals.lightON_B1
                )
    # Morning Light On B2
    light_B2 = CheckMorningLightOn_adr( 
                    moMorning_ON_B2,
                    tuMorning_ON_B2, 
                    weMorning_ON_B2,
                    thMorning_ON_B2,
                    frMorning_ON_B2,
                    saMorning_ON_B2, 
                    suMorning_ON_B2,
                    dayType, 
                    trigTimeSR_B2,
                    trigTime, 
                    csSR,
                    light_B2,
                    eg.globals.lightON_B2 
                )
    # Morning Light On B3
    light_B3 = CheckMorningLightOn_adr( 
                    moMorning_ON_B3, 
                    tuMorning_ON_B3,
                    weMorning_ON_B3, 
                    thMorning_ON_B3,
                    frMorning_ON_B3, 
                    saMorning_ON_B3,
                    suMorning_ON_B3, 
                    dayType,
                    trigTimeSR_B3,
                    trigTime, 
                    csSR, 
                    light_B3, 
                    eg.globals.lightON_B3
                )
    # Morning Light On C1
    light_C1 = CheckMorningLightOn_adr(
                    moMorning_ON_C1, 
                    tuMorning_ON_C1, 
                    weMorning_ON_C1,
                    thMorning_ON_C1,
                    frMorning_ON_C1,
                    saMorning_ON_C1, 
                    suMorning_ON_C1,
                    dayType, 
                    trigTimeSR_C1, 
                    trigTime, 
                    csSR, 
                    light_C1, 
                    eg.globals.lightON_C1
                )
    # Morning Light On C2
    light_C2 = CheckMorningLightOn_adr( 
                    moMorning_ON_C2, 
                    tuMorning_ON_C2,
                    weMorning_ON_C2,
                    thMorning_ON_C2,
                    frMorning_ON_C2,
                    saMorning_ON_C2,
                    suMorning_ON_C2,
                    dayType,
                    trigTimeSR_C2, 
                    trigTime, 
                    csSR, 
                    light_C2, 
                    eg.globals.lightON_C2 
                )
    # Morning Light On C3
    light_C3 = CheckMorningLightOn_adr( 
                    moMorning_ON_C3, 
                    tuMorning_ON_C3, 
                    weMorning_ON_C3, 
                    thMorning_ON_C3, 
                    frMorning_ON_C3, 
                    saMorning_ON_C3, 
                    suMorning_ON_C3, 
                    dayType,
                    trigTimeSR_C3,
                    trigTime, 
                    csSR, 
                    light_C3, 
                    eg.globals.lightON_C3
                )
    # Morning Light On D1
    light_D1 = CheckMorningLightOn_adr( 
                    moMorning_ON_D1,
                    tuMorning_ON_D1, 
                    weMorning_ON_D1, 
                    thMorning_ON_D1, 
                    frMorning_ON_D1, 
                    saMorning_ON_D1, 
                    suMorning_ON_D1, 
                    dayType,
                    trigTimeSR_D1, 
                    trigTime, 
                    csSR, 
                    light_D1,
                    eg.globals.lightON_D1 
                )
    # Morning Light On D2
    light_D2 = CheckMorningLightOn_adr(
                    moMorning_ON_D2,
                    tuMorning_ON_D2,
                    weMorning_ON_D2,
                    thMorning_ON_D2,
                    frMorning_ON_D2,
                    saMorning_ON_D2, 
                    suMorning_ON_D2,
                    dayType, 
                    trigTimeSR_D2, 
                    trigTime, 
                    csSR,
                    light_D2, 
                    eg.globals.lightON_D2
                )
    # Morning Light On D3
    light_D3 = CheckMorningLightOn_adr(
                    moMorning_ON_D3, 
                    tuMorning_ON_D3, 
                    weMorning_ON_D3,
                    thMorning_ON_D3, 
                    frMorning_ON_D3, 
                    saMorning_ON_D3,
                    suMorning_ON_D3,
                    dayType,
                    trigTimeSR_D3, 
                    trigTime, 
                    csSR, 
                    light_D3,
                    eg.globals.lightON_D3 
                )
    # Morning Light Off A1
    light_A1 = CheckMorningLightOff_adr(
                    moMorning_ON_A1,
                    tuMorning_ON_A1, 
                    weMorning_ON_A1, 
                    thMorning_ON_A1, 
                    frMorning_ON_A1, 
                    saMorning_ON_A1,
                    suMorning_ON_A1,
                    dayType, 
                    trigTimeSR_A1, 
                    trigTimeSS_A1, 
                    trigTime,
                    csSR,
                    csSS, 
                    light_A1, 
                    eg.globals.lightON_A1 
                )
    # Morning Light Off A2
    light_A2 = CheckMorningLightOff_adr( 
                    moMorning_ON_A2, 
                    tuMorning_ON_A2,
                    weMorning_ON_A2, 
                    thMorning_ON_A2, 
                    frMorning_ON_A2, 
                    saMorning_ON_A2, 
                    suMorning_ON_A2,
                    dayType,
                    trigTimeSR_A2,
                    trigTimeSS_A2,
                    trigTime, 
                    csSR, 
                    csSS, 
                    light_A2,
                    eg.globals.lightON_A2 
                )
    # Morning Light Off A3
    light_A3 = CheckMorningLightOff_adr(
                    moMorning_ON_A3,
                    tuMorning_ON_A3,
                    weMorning_ON_A3,
                    thMorning_ON_A3, 
                    frMorning_ON_A3, 
                    saMorning_ON_A3, 
                    suMorning_ON_A3, 
                    dayType,
                    trigTimeSR_A3, 
                    trigTimeSS_A3,
                    trigTime, 
                    csSR, 
                    csSS, 
                    light_A3,
                    eg.globals.lightON_A3
                )
    # Morning Light Off B1
    light_B1 = CheckMorningLightOff_adr(
                    moMorning_ON_B1,
                    tuMorning_ON_B1,
                    weMorning_ON_B1, 
                    thMorning_ON_B1, 
                    frMorning_ON_B1,
                    saMorning_ON_B1,
                    suMorning_ON_B1, 
                    dayType,
                    trigTimeSR_B1,
                    trigTimeSS_B1,
                    trigTime, 
                    csSR, 
                    csSS, 
                    light_B1,
                    eg.globals.lightON_B1
                )
    # Morning Light Off B2
    light_B2 = CheckMorningLightOff_adr(
                    moMorning_ON_B2, 
                    tuMorning_ON_B2,
                    weMorning_ON_B2, 
                    thMorning_ON_B2, 
                    frMorning_ON_B2,
                    saMorning_ON_B2, 
                    suMorning_ON_B2, 
                    dayType, 
                    trigTimeSR_B2, 
                    trigTimeSS_B2, 
                    trigTime,
                    csSR, 
                    csSS, 
                    light_B2,
                    eg.globals.lightON_B2 
                )
    # Morning Light Off B3
    light_B3 = CheckMorningLightOff_adr( 
                    moMorning_ON_B3,
                    tuMorning_ON_B3,
                    weMorning_ON_B3,
                    thMorning_ON_B3, 
                    frMorning_ON_B3, 
                    saMorning_ON_B3, 
                    suMorning_ON_B3, 
                    dayType,
                    trigTimeSR_B3, 
                    trigTimeSS_B3,
                    trigTime,
                    csSR,
                    csSS, 
                    light_B3, 
                    eg.globals.lightON_B3
                )
    # Morning Light Off C1
    light_C1 = CheckMorningLightOff_adr( 
                    moMorning_ON_C1, 
                    tuMorning_ON_C1,
                    weMorning_ON_C1, 
                    thMorning_ON_C1, 
                    frMorning_ON_C1,
                    saMorning_ON_C1, 
                    suMorning_ON_C1, 
                    dayType, 
                    trigTimeSR_C1, 
                    trigTimeSS_C1, 
                    trigTime, 
                    csSR, 
                    csSS, 
                    light_C1, 
                    eg.globals.lightON_C1
                )
    # Morning Light Off C2
    light_C2 = CheckMorningLightOff_adr( 
                    moMorning_ON_C2,
                    tuMorning_ON_C2, 
                    weMorning_ON_C2,
                    thMorning_ON_C2,
                    frMorning_ON_C2, 
                    saMorning_ON_C2, 
                    suMorning_ON_C2,
                    dayType, 
                    trigTimeSR_C2,
                    trigTimeSS_C2,
                    trigTime,
                    csSR, 
                    csSS, 
                    light_C2, 
                    eg.globals.lightON_C2 
                )
    # Morning Light Off C3
    light_C3 = CheckMorningLightOff_adr(
                    moMorning_ON_C3,
                    tuMorning_ON_C3,
                    weMorning_ON_C3, 
                    thMorning_ON_C3,
                    frMorning_ON_C3, 
                    saMorning_ON_C3, 
                    suMorning_ON_C3,
                    dayType,
                    trigTimeSR_C3,
                    trigTimeSS_C3, 
                    trigTime, 
                    csSR, 
                    csSS, 
                    light_C3,
                    eg.globals.lightON_C3
                )
    # Morning Light Off D1
    light_D1 = CheckMorningLightOff_adr( 
                    moMorning_ON_D1, 
                    tuMorning_ON_D1,
                    weMorning_ON_D1,
                    thMorning_ON_D1,
                    frMorning_ON_D1,
                    saMorning_ON_D1,
                    suMorning_ON_D1, 
                    dayType,
                    trigTimeSR_D1, 
                    trigTimeSS_D1,
                    trigTime,
                    csSR, 
                    csSS,
                    light_D1,
                    eg.globals.lightON_D1
                )
    # Morning Light Off D2
    light_D2 = CheckMorningLightOff_adr( 
                    moMorning_ON_D2,
                    tuMorning_ON_D2,
                    weMorning_ON_D2,
                    thMorning_ON_D2, 
                    frMorning_ON_D2, 
                    saMorning_ON_D2, 
                    suMorning_ON_D2, 
                    dayType, 
                    trigTimeSR_D2,
                    trigTimeSS_D2,
                    trigTime, 
                    csSR, 
                    csSS,
                    light_D2, 
                    eg.globals.lightON_D2
                )
    # Morning Light Off D3
    light_D3 = CheckMorningLightOff_adr(
                    moMorning_ON_D3,
                    tuMorning_ON_D3,
                    weMorning_ON_D3,
                    thMorning_ON_D3,
                    frMorning_ON_D3, 
                    saMorning_ON_D3, 
                    suMorning_ON_D3,
                    dayType,
                    trigTimeSR_D3, 
                    trigTimeSS_D3,
                    trigTime, 
                    csSR,
                    csSS, 
                    light_D3, 
                    eg.globals.lightON_D3
                )
    # Evening Light On A1
    light_A1 = CheckEveningLightOn_adr( 
                    moMorning_ON_A1,
                    tuMorning_ON_A1, 
                    weMorning_ON_A1, 
                    thMorning_ON_A1,
                    frMorning_ON_A1,
                    saMorning_ON_A1,
                    suMorning_ON_A1,
                    moEvening_OFF_A1, 
                    tuEvening_OFF_A1,
                    weEvening_OFF_A1,
                    thEvening_OFF_A1,
                    frEvening_OFF_A1, 
                    saEvening_OFF_A1, 
                    suEvening_OFF_A1,
                    moNight_OFF_A1, 
                    tuNight_OFF_A1, 
                    weNight_OFF_A1,
                    thNight_OFF_A1,
                    frNight_OFF_A1, 
                    saNight_OFF_A1,
                    suNight_OFF_A1, 
                    dayType, 
                    trigTimeSS_A1,
                    trigTime, 
                    csSS, 
                    light_A1, 
                    eg.globals.lightON_A1 
                )
    # Evening Light On A2
    light_A2 = CheckEveningLightOn_adr( 
                    moMorning_ON_A2, 
                    tuMorning_ON_A2,
                    weMorning_ON_A2, 
                    thMorning_ON_A2,
                    frMorning_ON_A2,
                    saMorning_ON_A2,
                    suMorning_ON_A2, 
                    moEvening_OFF_A2, 
                    tuEvening_OFF_A2, 
                    weEvening_OFF_A2, 
                    thEvening_OFF_A2,
                    frEvening_OFF_A2, 
                    saEvening_OFF_A2,
                    suEvening_OFF_A2,
                    moNight_OFF_A2, 
                    tuNight_OFF_A2,
                    weNight_OFF_A2, 
                    thNight_OFF_A2, 
                    frNight_OFF_A2, 
                    saNight_OFF_A2, 
                    suNight_OFF_A2, 
                    dayType, 
                    trigTimeSS_A2, 
                    trigTime, 
                    csSS, 
                    light_A2, 
                    eg.globals.lightON_A2 
                )
    # Evening Light On A3
    light_A3 = CheckEveningLightOn_adr( 
                    moMorning_ON_A3, 
                    tuMorning_ON_A3,
                    weMorning_ON_A3,
                    thMorning_ON_A3, 
                    frMorning_ON_A3, 
                    saMorning_ON_A3, 
                    suMorning_ON_A3, 
                    moEvening_OFF_A3,
                    tuEvening_OFF_A3, 
                    weEvening_OFF_A3, 
                    thEvening_OFF_A3, 
                    frEvening_OFF_A3, 
                    saEvening_OFF_A3, 
                    suEvening_OFF_A3,
                    moNight_OFF_A3, 
                    tuNight_OFF_A3,
                    weNight_OFF_A3,
                    thNight_OFF_A3, 
                    frNight_OFF_A3,
                    saNight_OFF_A3,
                    suNight_OFF_A3, 
                    dayType, 
                    trigTimeSS_A3,
                    trigTime, 
                    csSS, 
                    light_A3,
                    eg.globals.lightON_A3
                )
    # Evening Light On B1
    light_B1 = CheckEveningLightOn_adr(
                    moMorning_ON_B1,
                    tuMorning_ON_B1,
                    weMorning_ON_B1,
                    thMorning_ON_B1, 
                    frMorning_ON_B1, 
                    saMorning_ON_B1, 
                    suMorning_ON_B1,
                    moEvening_OFF_B1,
                    tuEvening_OFF_B1,
                    weEvening_OFF_B1,
                    thEvening_OFF_B1, 
                    frEvening_OFF_B1, 
                    saEvening_OFF_B1, 
                    suEvening_OFF_B1,
                    moNight_OFF_B1, 
                    tuNight_OFF_B1, 
                    weNight_OFF_B1, 
                    thNight_OFF_B1,
                    frNight_OFF_B1,
                    saNight_OFF_B1, 
                    suNight_OFF_B1, 
                    dayType, 
                    trigTimeSS_B1, 
                    trigTime, 
                    csSS, 
                    light_B1, 
                    eg.globals.lightON_B1 
                )
    # Evening Light On B2
    light_B2 = CheckEveningLightOn_adr( 
                    moMorning_ON_B2, 
                    tuMorning_ON_B2,
                    weMorning_ON_B2, 
                    thMorning_ON_B2,
                    frMorning_ON_B2, 
                    saMorning_ON_B2, 
                    suMorning_ON_B2, 
                    moEvening_OFF_B2, 
                    tuEvening_OFF_B2, 
                    weEvening_OFF_B2,
                    thEvening_OFF_B2, 
                    frEvening_OFF_B2, 
                    saEvening_OFF_B2, 
                    suEvening_OFF_B2,
                    moNight_OFF_B2,
                    tuNight_OFF_B2, 
                    weNight_OFF_B2,
                    thNight_OFF_B2,
                    frNight_OFF_B2, 
                    saNight_OFF_B2, 
                    suNight_OFF_B2, 
                    dayType, 
                    trigTimeSS_B2,
                    trigTime, 
                    csSS, 
                    light_B2,
                    eg.globals.lightON_B2 
                )
    # Evening Light On B3
    light_B3 = CheckEveningLightOn_adr( 
                    moMorning_ON_B3, 
                    tuMorning_ON_B3, 
                    weMorning_ON_B3,
                    thMorning_ON_B3,
                    frMorning_ON_B3,
                    saMorning_ON_B3,
                    suMorning_ON_B3, 
                    moEvening_OFF_B3, 
                    tuEvening_OFF_B3,
                    weEvening_OFF_B3, 
                    thEvening_OFF_B3, 
                    frEvening_OFF_B3,
                    saEvening_OFF_B3, 
                    suEvening_OFF_B3,
                    moNight_OFF_B3, 
                    tuNight_OFF_B3,
                    weNight_OFF_B3,
                    thNight_OFF_B3,
                    frNight_OFF_B3,
                    saNight_OFF_B3, 
                    suNight_OFF_B3, 
                    dayType,
                    trigTimeSS_B3,
                    trigTime, 
                    csSS,
                    light_B3,
                    eg.globals.lightON_B3
                )
    # Evening Light On C1
    light_C1 = CheckEveningLightOn_adr(
                    moMorning_ON_C1, 
                    tuMorning_ON_C1,
                    weMorning_ON_C1, 
                    thMorning_ON_C1, 
                    frMorning_ON_C1, 
                    saMorning_ON_C1, 
                    suMorning_ON_C1, 
                    moEvening_OFF_C1, 
                    tuEvening_OFF_C1, 
                    weEvening_OFF_C1, 
                    thEvening_OFF_C1, 
                    frEvening_OFF_C1, 
                    saEvening_OFF_C1, 
                    suEvening_OFF_C1,
                    moNight_OFF_C1, 
                    tuNight_OFF_C1, 
                    weNight_OFF_C1,
                    thNight_OFF_C1, 
                    frNight_OFF_C1, 
                    saNight_OFF_C1, 
                    suNight_OFF_C1,
                    dayType, 
                    trigTimeSS_C1,
                    trigTime, 
                    csSS, 
                    light_C1, 
                    eg.globals.lightON_C1 
                )
    # Evening Light On C2
    light_C2 = CheckEveningLightOn_adr( 
                    moMorning_ON_C2, 
                    tuMorning_ON_C2, 
                    weMorning_ON_C2, 
                    thMorning_ON_C2, 
                    frMorning_ON_C2,
                    saMorning_ON_C2,
                    suMorning_ON_C2, 
                    moEvening_OFF_C2, 
                    tuEvening_OFF_C2,
                    weEvening_OFF_C2, 
                    thEvening_OFF_C2, 
                    frEvening_OFF_C2,
                    saEvening_OFF_C2,
                    suEvening_OFF_C2, 
                    moNight_OFF_C2, 
                    tuNight_OFF_C2, 
                    weNight_OFF_C2,
                    thNight_OFF_C2,
                    frNight_OFF_C2, 
                    saNight_OFF_C2,
                    suNight_OFF_C2, 
                    dayType, 
                    trigTimeSS_C2, 
                    trigTime, 
                    csSS, 
                    light_C2, 
                    eg.globals.lightON_C2 
                )
    # Evening Light On C3
    light_C3 = CheckEveningLightOn_adr( 
                    moMorning_ON_C3, 
                    tuMorning_ON_C3, 
                    weMorning_ON_C3,
                    thMorning_ON_C3, 
                    frMorning_ON_C3, 
                    saMorning_ON_C3, 
                    suMorning_ON_C3, 
                    moEvening_OFF_C3,
                    tuEvening_OFF_C3, 
                    weEvening_OFF_C3, 
                    thEvening_OFF_C3, 
                    frEvening_OFF_C3, 
                    saEvening_OFF_C3, 
                    suEvening_OFF_C3, 
                    moNight_OFF_C3, 
                    tuNight_OFF_C3, 
                    weNight_OFF_C3,
                    thNight_OFF_C3,
                    frNight_OFF_C3,
                    saNight_OFF_C3,
                    suNight_OFF_C3,
                    dayType, 
                    trigTimeSS_C3, 
                    trigTime,
                    csSS, 
                    light_C3,
                    eg.globals.lightON_C3 
                )
    # Evening Light On D1
    light_D1 = CheckEveningLightOn_adr(
                    moMorning_ON_D1, 
                    tuMorning_ON_D1, 
                    weMorning_ON_D1,
                    thMorning_ON_D1,
                    frMorning_ON_D1,
                    saMorning_ON_D1, 
                    suMorning_ON_D1,
                    moEvening_OFF_D1, 
                    tuEvening_OFF_D1,
                    weEvening_OFF_D1, 
                    thEvening_OFF_D1,
                    frEvening_OFF_D1, 
                    saEvening_OFF_D1, 
                    suEvening_OFF_D1, 
                    moNight_OFF_D1, 
                    tuNight_OFF_D1, 
                    weNight_OFF_D1, 
                    thNight_OFF_D1,
                    frNight_OFF_D1,
                    saNight_OFF_D1,
                    suNight_OFF_D1, 
                    dayType,
                    trigTimeSS_D1,
                    trigTime, 
                    csSS, 
                    light_D1,
                    eg.globals.lightON_D1
                )
    # Evening Light On D2
    light_D2 = CheckEveningLightOn_adr( 
                    moMorning_ON_D2,
                    tuMorning_ON_D2, 
                    weMorning_ON_D2, 
                    thMorning_ON_D2,
                    frMorning_ON_D2, 
                    saMorning_ON_D2,
                    suMorning_ON_D2,
                    moEvening_OFF_D2, 
                    tuEvening_OFF_D2, 
                    weEvening_OFF_D2, 
                    thEvening_OFF_D2, 
                    frEvening_OFF_D2, 
                    saEvening_OFF_D2,
                    suEvening_OFF_D2, 
                    moNight_OFF_D2, 
                    tuNight_OFF_D2,
                    weNight_OFF_D2,
                    thNight_OFF_D2,
                    frNight_OFF_D2, 
                    saNight_OFF_D2, 
                    suNight_OFF_D2,
                    dayType,
                    trigTimeSS_D2, 
                    trigTime, 
                    csSS, 
                    light_D2,
                    eg.globals.lightON_D2
                )
    # Evening Light On D3
    light_D3 = CheckEveningLightOn_adr( 
                    moMorning_ON_D3,
                    tuMorning_ON_D3,
                    weMorning_ON_D3, 
                    thMorning_ON_D3, 
                    frMorning_ON_D3,
                    saMorning_ON_D3,
                    suMorning_ON_D3,
                    moEvening_OFF_D3, 
                    tuEvening_OFF_D3, 
                    weEvening_OFF_D3, 
                    thEvening_OFF_D3,
                    frEvening_OFF_D3, 
                    saEvening_OFF_D3, 
                    suEvening_OFF_D3,
                    moNight_OFF_D3, 
                    tuNight_OFF_D3,
                    weNight_OFF_D3,
                    thNight_OFF_D3,
                    frNight_OFF_D3,
                    saNight_OFF_D3,
                    suNight_OFF_D3,
                    dayType,
                    trigTimeSS_D3,
                    trigTime,
                    csSS, 
                    light_D3,
                    eg.globals.lightON_D3
                )
    # Evening Light Off A1
    light_A1 = CheckEveningLightOff_adr( 
                    moMorning_ON_A1,
                    tuMorning_ON_A1, 
                    weMorning_ON_A1, 
                    thMorning_ON_A1,
                    frMorning_ON_A1,
                    saMorning_ON_A1,
                    suMorning_ON_A1,
                    moEvening_OFF_A1, 
                    tuEvening_OFF_A1,
                    weEvening_OFF_A1,
                    thEvening_OFF_A1,
                    frEvening_OFF_A1, 
                    saEvening_OFF_A1, 
                    suEvening_OFF_A1,
                    dayType, 
                    trigTimeSS_A1,
                    trigTime, 
                    csSS, 
                    light_A1, 
                    eg.globals.lightON_A1 
                )
    # Evening Light Off A2
    light_A2 = CheckEveningLightOff_adr( 
                    moMorning_ON_A2, 
                    tuMorning_ON_A2,
                    weMorning_ON_A2, 
                    thMorning_ON_A2,
                    frMorning_ON_A2,
                    saMorning_ON_A2,
                    suMorning_ON_A2, 
                    moEvening_OFF_A2, 
                    tuEvening_OFF_A2, 
                    weEvening_OFF_A2, 
                    thEvening_OFF_A2,
                    frEvening_OFF_A2, 
                    saEvening_OFF_A2,
                    suEvening_OFF_A2,
                    dayType, 
                    trigTimeSS_A2, 
                    trigTime, 
                    csSS, 
                    light_A2, 
                    eg.globals.lightON_A2 
                )
    # Evening Light Off A3
    light_A3 = CheckEveningLightOff_adr( 
                    moMorning_ON_A3, 
                    tuMorning_ON_A3,
                    weMorning_ON_A3,
                    thMorning_ON_A3, 
                    frMorning_ON_A3, 
                    saMorning_ON_A3, 
                    suMorning_ON_A3, 
                    moEvening_OFF_A3,
                    tuEvening_OFF_A3, 
                    weEvening_OFF_A3, 
                    thEvening_OFF_A3, 
                    frEvening_OFF_A3, 
                    saEvening_OFF_A3, 
                    suEvening_OFF_A3,
                    dayType, 
                    trigTimeSS_A3,
                    trigTime, 
                    csSS, 
                    light_A3,
                    eg.globals.lightON_A3
                )
    # Evening Light Off B1
    light_B1 = CheckEveningLightOff_adr(
                    moMorning_ON_B1,
                    tuMorning_ON_B1,
                    weMorning_ON_B1,
                    thMorning_ON_B1, 
                    frMorning_ON_B1, 
                    saMorning_ON_B1, 
                    suMorning_ON_B1,
                    moEvening_OFF_B1,
                    tuEvening_OFF_B1,
                    weEvening_OFF_B1,
                    thEvening_OFF_B1, 
                    frEvening_OFF_B1, 
                    saEvening_OFF_B1, 
                    suEvening_OFF_B1,
                    dayType, 
                    trigTimeSS_B1, 
                    trigTime, 
                    csSS, 
                    light_B1, 
                    eg.globals.lightON_B1 
                )
    # Evening Light Off B2
    light_B2 = CheckEveningLightOff_adr( 
                    moMorning_ON_B2, 
                    tuMorning_ON_B2,
                    weMorning_ON_B2, 
                    thMorning_ON_B2,
                    frMorning_ON_B2, 
                    saMorning_ON_B2, 
                    suMorning_ON_B2, 
                    moEvening_OFF_B2, 
                    tuEvening_OFF_B2, 
                    weEvening_OFF_B2,
                    thEvening_OFF_B2, 
                    frEvening_OFF_B2, 
                    saEvening_OFF_B2, 
                    suEvening_OFF_B2,
                    dayType, 
                    trigTimeSS_B2,
                    trigTime, 
                    csSS, 
                    light_B2,
                    eg.globals.lightON_B2 
                )
    # Evening Light Off B3
    light_B3 = CheckEveningLightOff_adr( 
                    moMorning_ON_B3, 
                    tuMorning_ON_B3, 
                    weMorning_ON_B3,
                    thMorning_ON_B3,
                    frMorning_ON_B3,
                    saMorning_ON_B3,
                    suMorning_ON_B3, 
                    moEvening_OFF_B3, 
                    tuEvening_OFF_B3,
                    weEvening_OFF_B3, 
                    thEvening_OFF_B3, 
                    frEvening_OFF_B3,
                    saEvening_OFF_B3, 
                    suEvening_OFF_B3,
                    dayType,
                    trigTimeSS_B3,
                    trigTime, 
                    csSS,
                    light_B3,
                    eg.globals.lightON_B3
                )
    # Evening Light Off C1
    light_C1 = CheckEveningLightOff_adr(
                    moMorning_ON_C1, 
                    tuMorning_ON_C1,
                    weMorning_ON_C1, 
                    thMorning_ON_C1, 
                    frMorning_ON_C1, 
                    saMorning_ON_C1, 
                    suMorning_ON_C1, 
                    moEvening_OFF_C1, 
                    tuEvening_OFF_C1, 
                    weEvening_OFF_C1, 
                    thEvening_OFF_C1, 
                    frEvening_OFF_C1, 
                    saEvening_OFF_C1, 
                    suEvening_OFF_C1,
                    dayType, 
                    trigTimeSS_C1,
                    trigTime, 
                    csSS, 
                    light_C1, 
                    eg.globals.lightON_C1 
                )
    # Evening Light Off C2
    light_C2 = CheckEveningLightOff_adr( 
                    moMorning_ON_C2, 
                    tuMorning_ON_C2, 
                    weMorning_ON_C2, 
                    thMorning_ON_C2, 
                    frMorning_ON_C2,
                    saMorning_ON_C2,
                    suMorning_ON_C2, 
                    moEvening_OFF_C2, 
                    tuEvening_OFF_C2,
                    weEvening_OFF_C2, 
                    thEvening_OFF_C2, 
                    frEvening_OFF_C2,
                    saEvening_OFF_C2,
                    suEvening_OFF_C2, 
                    dayType, 
                    trigTimeSS_C2, 
                    trigTime, 
                    csSS, 
                    light_C2, 
                    eg.globals.lightON_C2 
                )
    # Evening Light Off C3
    light_C3 = CheckEveningLightOff_adr( 
                    moMorning_ON_C3, 
                    tuMorning_ON_C3, 
                    weMorning_ON_C3,
                    thMorning_ON_C3, 
                    frMorning_ON_C3, 
                    saMorning_ON_C3, 
                    suMorning_ON_C3, 
                    moEvening_OFF_C3,
                    tuEvening_OFF_C3, 
                    weEvening_OFF_C3, 
                    thEvening_OFF_C3, 
                    frEvening_OFF_C3, 
                    saEvening_OFF_C3, 
                    suEvening_OFF_C3, 
                    dayType, 
                    trigTimeSS_C3, 
                    trigTime,
                    csSS, 
                    light_C3,
                    eg.globals.lightON_C3 
                )
    # Evening Light Off D1
    light_D1 = CheckEveningLightOff_adr(
                    moMorning_ON_D1, 
                    tuMorning_ON_D1, 
                    weMorning_ON_D1,
                    thMorning_ON_D1,
                    frMorning_ON_D1,
                    saMorning_ON_D1, 
                    suMorning_ON_D1,
                    moEvening_OFF_D1, 
                    tuEvening_OFF_D1,
                    weEvening_OFF_D1, 
                    thEvening_OFF_D1,
                    frEvening_OFF_D1, 
                    saEvening_OFF_D1, 
                    suEvening_OFF_D1, 
                    dayType,
                    trigTimeSS_D1,
                    trigTime, 
                    csSS, 
                    light_D1,
                    eg.globals.lightON_D1
                )
    # Evening Light Off D2
    light_D2 = CheckEveningLightOff_adr( 
                    moMorning_ON_D2,
                    tuMorning_ON_D2, 
                    weMorning_ON_D2, 
                    thMorning_ON_D2,
                    frMorning_ON_D2, 
                    saMorning_ON_D2,
                    suMorning_ON_D2,
                    moEvening_OFF_D2, 
                    tuEvening_OFF_D2, 
                    weEvening_OFF_D2, 
                    thEvening_OFF_D2, 
                    frEvening_OFF_D2, 
                    saEvening_OFF_D2,
                    suEvening_OFF_D2, 
                    dayType,
                    trigTimeSS_D2, 
                    trigTime, 
                    csSS, 
                    light_D2,
                    eg.globals.lightON_D2
                )
    # Evening Light Off D3
    light_D3 = CheckEveningLightOff_adr( 
                    moMorning_ON_D3,
                    tuMorning_ON_D3,
                    weMorning_ON_D3, 
                    thMorning_ON_D3, 
                    frMorning_ON_D3,
                    saMorning_ON_D3,
                    suMorning_ON_D3,
                    moEvening_OFF_D3, 
                    tuEvening_OFF_D3, 
                    weEvening_OFF_D3, 
                    thEvening_OFF_D3,
                    frEvening_OFF_D3, 
                    saEvening_OFF_D3, 
                    suEvening_OFF_D3,
                    dayType,
                    trigTimeSS_D3,
                    trigTime,
                    csSS, 
                    light_D3,
                    eg.globals.lightON_D3
                )

    # Activating the modules/devices
    eg.globals.cntr = 0
    
    # ON
    if light_A1 == 1:
        lightOldON_A1 = eg.globals.lightON_A1
        eg.globals.lightON_A1 = True
        CheckIfLog(
            lightOldON_A1,
            eg.globals.lightON_A1,
            eg.globals.initsynch,
            eg_A1_ON
        )
        AddSchedule(SendToEG, eg_A1_ON) 

    if light_A2 == 1:
        lightOldON_A2 = eg.globals.lightON_A2
        eg.globals.lightON_A2 = True
        CheckIfLog(
            lightOldON_A2,
            eg.globals.lightON_A2,
            eg.globals.initsynch,
            eg_A2_ON
        ) 
        AddSchedule(SendToEG, eg_A2_ON) 

    if light_A3 == 1:
        lightOldON_A3 = eg.globals.lightON_A3
        eg.globals.lightON_A3 = True
        CheckIfLog(
            lightOldON_A3,
            eg.globals.lightON_A3,
            eg.globals.initsynch,
            eg_A3_ON
        ) 
        AddSchedule(SendToEG, eg_A3_ON) 

    if light_B1 == 1:
        lightOldON_B1 = eg.globals.lightON_B1
        eg.globals.lightON_B1 = True
        CheckIfLog(
            lightOldON_B1,
            eg.globals.lightON_B1,
            eg.globals.initsynch,
            eg_B1_ON
        ) 
        AddSchedule(SendToEG, eg_B1_ON) 
 
    if light_B2 == 1:
        lightOldON_B2 = eg.globals.lightON_B2
        eg.globals.lightON_B2 = True
        CheckIfLog(
            lightOldON_B2,
            eg.globals.lightON_B2,
            eg.globals.initsynch,
            eg_B2_ON
        ) 
        AddSchedule(SendToEG, eg_B2_ON) 
 
    if light_B3 == 1:
        lightOldON_B3 = eg.globals.lightON_B3
        eg.globals.lightON_B3 = True
        CheckIfLog(
            lightOldON_B3,
            eg.globals.lightON_B3,
            eg.globals.initsynch,
            eg_B3_ON
        ) 
        AddSchedule(SendToEG, eg_B3_ON) 
 
    if light_C1 == 1:
        lightOldON_C1 = eg.globals.lightON_C1
        eg.globals.lightON_C1 = True
        CheckIfLog(
            lightOldON_C1,
            eg.globals.lightON_C1,
            eg.globals.initsynch,
            eg_C1_ON
        ) 
        AddSchedule(SendToEG, eg_C1_ON) 
 
    if light_C2 == 1:
        lightOldON_C2 = eg.globals.lightON_C2
        eg.globals.lightON_C2 = True
        CheckIfLog(
            lightOldON_C2,
            eg.globals.lightON_C2,
            eg.globals.initsynch,
            eg_C2_ON
        ) 
        AddSchedule(SendToEG, eg_C2_ON) 
 
    if light_C3 == 1:
        lightOldON_C3 = eg.globals.lightON_C3
        eg.globals.lightON_C3 = True
        CheckIfLog(
            lightOldON_C3,
            eg.globals.lightON_C3,
            eg.globals.initsynch,
            eg_C3_ON
        ) 
        AddSchedule(SendToEG, eg_C3_ON) 
 
    if light_D1 == 1:
        lightOldON_D1 = eg.globals.lightON_D1
        eg.globals.lightON_D1 = True
        CheckIfLog(
            lightOldON_D1,
            eg.globals.lightON_D1,
            eg.globals.initsynch,
            eg_D1_ON
        ) 
        AddSchedule(SendToEG, eg_D1_ON) 
 
    if light_D2 == 1:
        lightOldON_D2 = eg.globals.lightON_D2
        eg.globals.lightON_D2 = True
        CheckIfLog(
            lightOldON_D2,
            eg.globals.lightON_D2,
            eg.globals.initsynch,
            eg_D2_ON
        ) 
        AddSchedule(SendToEG, eg_D2_ON) 
 
    if light_D3 == 1:
        lightOldON_D3 = eg.globals.lightON_D3
        eg.globals.lightON_D3 = True
        CheckIfLog(
            lightOldON_D3,
            eg.globals.lightON_D3,
            eg.globals.initsynch,
            eg_D3_ON
        ) 
        AddSchedule(SendToEG, eg_D3_ON) 
 
    # OFF
    if light_A1 == 0:
        lightOldON_A1 = eg.globals.lightON_A1
        eg.globals.lightON_A1 = False
        CheckIfLog(
            lightOldON_A1,
            eg.globals.lightON_A1,
            eg.globals.initsynch,
            eg_A1_OFF
        ) 
        AddSchedule(SendToEG, eg_A1_OFF) 
 
    if light_A2 == 0:
        lightOldON_A2 = eg.globals.lightON_A2
        eg.globals.lightON_A2 = False
        CheckIfLog(
            lightOldON_A2,
            eg.globals.lightON_A2,
            eg.globals.initsynch,
            eg_A2_OFF
        ) 
        AddSchedule(SendToEG, eg_A2_OFF) 
 
    if light_A3 == 0:
        lightOldON_A3 = eg.globals.lightON_A3
        eg.globals.lightON_A3 = False
        CheckIfLog(
            lightOldON_A3,
            eg.globals.lightON_A3,
            eg.globals.initsynch,
            eg_A3_OFF
        ) 
        AddSchedule(SendToEG, eg_A3_OFF) 
 
    if light_B1 == 0:
        lightOldON_B1 = eg.globals.lightON_B1
        eg.globals.lightON_B1 = False
        CheckIfLog(
            lightOldON_B1,
            eg.globals.lightON_B1,
            eg.globals.initsynch,
            eg_B1_OFF
        ) 
        AddSchedule(SendToEG, eg_B1_OFF) 
 
    if light_B2 == 0:
        lightOldON_B2 = eg.globals.lightON_B2
        eg.globals.lightON_B2 = False
        CheckIfLog(
            lightOldON_B2,
            eg.globals.lightON_B2,
            eg.globals.initsynch,
            eg_B2_OFF
        ) 
        AddSchedule(SendToEG, eg_B2_OFF) 
 
    if light_B3 == 0:
        lightOldON_B3 = eg.globals.lightON_B3
        eg.globals.lightON_B3 = False
        CheckIfLog(
            lightOldON_B3,
            eg.globals.lightON_B3,
            eg.globals.initsynch,
            eg_B3_OFF
        ) 
        AddSchedule(SendToEG, eg_B3_OFF) 
 
    if light_C1 == 0:
        lightOldON_C1 = eg.globals.lightON_C1
        eg.globals.lightON_C1 = False
        CheckIfLog(
            lightOldON_C1,
            eg.globals.lightON_C1,
            eg.globals.initsynch,
            eg_C1_OFF
        ) 
        AddSchedule(SendToEG, eg_C1_OFF) 
 
    if light_C2 == 0:
        lightOldON_C2 = eg.globals.lightON_C2
        eg.globals.lightON_C2 = False
        CheckIfLog(
            lightOldON_C2,
            eg.globals.lightON_C2,
            eg.globals.initsynch,
            eg_C2_OFF
        ) 
        AddSchedule(SendToEG, eg_C2_OFF) 
 
    if light_C3 == 0:
        lightOldON_C3 = eg.globals.lightON_C3
        eg.globals.lightON_C3 = False
        CheckIfLog(
            lightOldON_C3,
            eg.globals.lightON_C3,
            eg.globals.initsynch,
            eg_C3_OFF
        ) 
        AddSchedule(SendToEG, eg_C3_OFF) 
 
    if light_D1 == 0:
        lightOldON_D1 = eg.globals.lightON_D1
        eg.globals.lightON_D1 = False
        CheckIfLog(
            lightOldON_D1,
            eg.globals.lightON_D1,
            eg.globals.initsynch,
            eg_D1_OFF
        ) 
        AddSchedule(SendToEG, eg_D1_OFF) 

    if light_D2 == 0:
        lightOldON_D2 = eg.globals.lightON_D2
        eg.globals.lightON_D2 = False
        CheckIfLog(
            lightOldON_D2,
            eg.globals.lightON_D2,
            eg.globals.initsynch,
            eg_D2_OFF
        ) 
        AddSchedule(SendToEG, eg_D2_OFF) 
 
    if light_D3 == 0:
        lightOldON_D3 = eg.globals.lightON_D3
        eg.globals.lightON_D3 = False
        CheckIfLog(
            lightOldON_D3,
            eg.globals.lightON_D3,
            eg.globals.initsynch,
            eg_D3_OFF
        ) 
        AddSchedule(SendToEG, eg_D3_OFF) 


##############################################################################
# The Main
##############################################################################
import time, math, string, sys, os

# Initialization...
try:
    dummy
except NameError:
    dummy = 0
    eg.globals.end = False
    eg.globals.iSynchLight = 1
    eg.globals.initsynch = 1
    eg.globals.cntr = 0
    eg.globals.prevDate = 0
    eg.globals.lightON_A1 = False
    eg.globals.lightON_A2 = False
    eg.globals.lightON_A3 = False
    eg.globals.lightON_B1 = False
    eg.globals.lightON_B2 = False
    eg.globals.lightON_B3 = False
    eg.globals.lightON_C1 = False
    eg.globals.lightON_C2 = False
    eg.globals.lightON_C3 = False
    eg.globals.lightON_D1 = False
    eg.globals.lightON_D2 = False
    eg.globals.lightON_D3 = False

# Some startup control...
if iSynchInterval < 6:
    iSynchInterval = 6
if iMinOnPeriod > 60:
    iMinOnPeriod = 60
if iMinOnPeriod < 0:
    iMinOnPeriod = 0

# Here we go...
def TheTask():
    SunUpDown()
    eg.globals.initsynch = 0
    if iDoSynchLights == 1:
        if eg.globals.iSynchLight >= int(iSynchInterval):
            eg.globals.iSynchLight = 1
        else:
            eg.globals.iSynchLight += 1
    #print eg.globals.iSynchLight
    remain = 61 - int(time.strftime("%S", time.localtime()))
    #print remain
    #print "Synchlight = " + str(eg.globals.iSynchLight)
    if eg.globals.end == True:
        print "Shutting down SunRiseSet script..."
        eg.globals.end = False
        print "Script is stopped"
    else:
        print "Next execution will start in "+str(remain)+" seconds"
        eg.scheduler.AddTask(remain, TheTask)
        print "Script finished"

TheTask()

