Tid-av-använda luftkonditionering med en styrenhet för Vera Smart Home (5 / 10 steg)
Steg 5: Vera scen - hitta politik-funktionen
Nu här är en funktion som tar aktuellt datum/tid plus Lua tabeller för semester och perioder och finner den match, eller "OffPeak" om ingen finner. Jag kodade detta som en funktion eftersom framtida förlängningar (kommer snart!) kommer att kalla detta från flera platser:
funktion tou_find_policy (dt, semester, perioder)
--Helgdagar efter månad/datum
hol i ipairs(holidays) gör för ihol,
om (dt.month == hol.m) och (dt.day == hol.d) sedan
återgå tou_holiday
slutet
slutet
--Perioder av time-of-year/time-of-week/time-of-day
leksak i ipairs(periods) gör för itoy,
om (dt.month > = toy.fmonth) och (dt.month < = toy.lmonth) sedan
bogsera i ipairs(toy) gör för itow,
om (dt.wday > = tow.fwday) och (dt.wday < = tow.lwday) sedan
tod i ipairs(tow) gör för itod,
om (dt.hour > = tod.b) och (dt.hour < tod.e) sedan
återgå tod.p
slutet
slutet
slutet
slutet
slutet
slutet
återgå tou_offpeak
slutet