def check_alarm_time(alarm_time, rtc, isStart): print('check alarm time') #def datetime_tuple(year=None, month=None, day=None, weekday=None, hour=None, minute=None, second=None, millisecond=None) currtime = rtc.datetime() #(year, month, day, weekday, hours, minutes, seconds, subseconds) timarray = alarm_time.split(":") my_time = urtc.datetime_tuple(int(currtime[0]), int(currtime[1]), int(currtime[2]), int(currtime[3]), int(timarray[0]), int(timarray[1]), int(timarray[2]), 0) alarm_end_time = urtc.datetime_tuple(int(currtime[0]), int(currtime[1]), int(currtime[2]), int(currtime[3]), int(timarray[0]), int(timarray[1]), int(timarray[2]) + 30, 0) hour = my_time[4] ampm = "AM" if (hour > 12): hour = hour - 12 if (hour == 0): hour = 12 ampm = "PM" timdata = ("%d:%02d:%02d " + ampm) % ( hour, my_time[5], my_time[6]) + "-" + "%d/%d/%d" % (my_time[1], my_time[2], my_time[0]) #print(my_time) if currtime > my_time and currtime < alarm_end_time: print('before execute alrm') excecute_alarm(isStart)
def equal_to_today(date): dt = datetime() today = urtc.datetime_tuple(dt.year, dt.month, dt.day, 0, 0, 0, 0, 0) secs = urtc.tuple2seconds(today) year, month, day = date.split('-') curr = urtc.datetime_tuple(int(year), int(month), int(day), 0, 0, 0, 0, 0) curr_sec = urtc.tuple2seconds(curr) return curr_sec == secs
def settimeDS3231(sclPin=5, sdaPin=4): """Code to set a DS3231 external Real Time Clock from an NTP server """ from ntptime import time # use the ntp method in firmware import urtc from machine import I2C, Pin import utime t_ntp = time() # get time from the NTP server tm_ntp = utime.localtime(t_ntp) # convert time format # initialize I2C interface & create I2C device for clock i2c = I2C(scl=Pin(sclPin), sda=Pin(sdaPin)) rtc_ds3231 = urtc.DS3231(i2c) # get time from the DS3231 datetime_ds3231 = rtc_ds3231.datetime() print('Before resetting: rtc_ds3231.datetime() = ', datetime_ds3231) new_datetime = urtc.datetime_tuple(year=tm[0], month=tm[1], day=tm[2], hour=tm[3], minute=tm[4], second=tm[5]) print('setting DS3231 datetime from NTP to: ', new_datetime) rtc_ds3231.datetime(new_datetime) # Set new ds3231 time # confirm new time was set on ds3231 datetime_ds3231 = rtc_ds3231.datetime() print('After resetting: rtc_ds3231.datetime() = ', datetime_ds3231)
def greater_than_tommorow(date): secs = urtc.tuple2seconds(datetime()) + _SECS_IN_DAY year, month, day = date.split('-') curr = urtc.datetime_tuple(int(year), int(month), int(day), 0, 0, 0, 0, 0) curr_sec = urtc.tuple2seconds(curr) return curr_sec > secs
def countdown(now, at): schedule = urtc.datetime_tuple(year=now.year, month=now.month, day=now.day, weekday=now.weekday, hour=at[0], minute=at[1], second=0) return urtc.tuple2seconds(now) - urtc.tuple2seconds(schedule)
# NZDT, 13 hours ahead HOURS_DIFF_FROM_GMT = 13 # Resistor Divider properties (Ohms) R1 = 10070000 R2 = 3329000 # External resister divider (ohms) RESISTOR_RATIO = (R1 + R2) / R2 # ADC fudge factor - required to get correct battery voltage ADC_FACTOR = 1.08 # System wakeup time Properties # 5AM GMT RTC_ALARM = urtc.datetime_tuple(None, None, None, None, 5, 0, None, None) # Every hour # RTC_ALARM = urtc.datetime_tuple(None, None, None, None, None, 0, None, None) # Time to sleep between attempts to connect to WiFi SLEEP_ONE_MINUTE = \ urtc.datetime_tuple(None, None, None, None, None, None, 0, None) SCL_PIN = Pin(17) SDA_PIN = Pin(5) WAKEUP_PIN = Pin(4, Pin.IN, Pin.PULL_UP) WATER_ON_PIN = Pin(33, Pin.OUT, Pin.PULL_DOWN, value=0) WATER_OFF_PIN = Pin(32, Pin.OUT, Pin.PULL_DOWN, value=0) NO_SLEEP_PIN = Pin(26, Pin.IN, Pin.PULL_DOWN, value=0) BATTERY_PIN = Pin(34) # ADC # Number of ADC reads to take average of
def create_alarmtime(alarm_time, currtime): timarray = alarm_time.split(":") my_time = urtc.datetime_tuple(int(currtime[0]), int(currtime[1]), int(currtime[2]), int(currtime[3]), int(timarray[0]), int(timarray[1]), int(timarray[2]), 0)
def future(minutes): """Get a date time in the future by the specified minutes.""" dt = datetime() return urtc.datetime_tuple(None, None, None, None, None, dt.minute + minutes, None, None)