Beispiel #1
0
 def loadJsonTime(self, jsonString):
     obj = json.loads(jsonString)
     hour = obj.hour
     minute = obj.minute
     second = obj.second
     now = (2017, 1, 1, hour, minute, second, 0, 1)
     rtc.datetime(now)
def get_internet_time(wlan):
    global internet_time_acquired
    ntptime.host = "0.au.pool.ntp.org"  # Find your local NTP server here: https://www.ntppool.org/en/
    print("GET TIME Connected? ", wlan.isconnected())
    rtc = RTC()

    try:
          print("Utime time before synchronization:%s" %str(utime.localtime()))
          #make sure to have internet connection
          ntptime.settime()
          print("Utime/UTC time after synchronization:%s" %str(utime.localtime()))
          current_time_date_utc = utime.localtime() # The ntptime library will set utime.localtime to the UTC time automatically.
          current_time_date_local = utime.mktime(current_time_date_utc)    # Create a new time object to store the local time.
          current_time_date_local += 11*3600 # Sydney is 11 hours ahead of UTC. One hour has 60*60 = 3600 seconds
          print("Local time:, ", utime.localtime(current_time_date_local))  # This show time at your location

          rtc.datetime(  (utime.localtime(current_time_date_local)[0],
                utime.localtime(current_time_date_local)[1],
                utime.localtime(current_time_date_local)[2],
                0,
                utime.localtime(current_time_date_local)[3],
                utime.localtime(current_time_date_local)[4],
                utime.localtime(current_time_date_local)[5],
                0))

          internet_time_acquired = True
          print("Internet time received: ", internet_time_acquired)
    except:
          print("Error syncing time")
Beispiel #3
0
 def get_hhmmss(separator=":"):
     rtc = RTC()  # real time
     # get_hhmm(separator) | separator = string: "-" / " "
     hh = add0(rtc.datetime()[4])
     mm = add0(rtc.datetime()[5])
     ss = add0(rtc.datetime()[6])
     return hh + separator + mm + separator + ss
Beispiel #4
0
def display_time(time,cl):
    rtc = RTC()
    time = time.split('\\/')
    year = int('20'+time[0])
    month = int(time[1])
    time = time[2].split(' ')
    day = int(time[0])
    time = time[1].split(':')
    hour = int(time[0])
    minute = int(time[1])
    seconds = int(time[2])
    rtc.datetime((year, month, day, 1,hour,minute,seconds,0))
    print(rtc.datetime())
    date = []
    year_month_date = ''
    hour_min_seconds = ''
    readable = 0
    while True:

        readable = select.select([cl],[],[],0.5)
        date = list(str(x) for x in rtc.datetime()[0:7])
        year_month_date = date[0] + '/' + date[1] + '/' + date[2]
        hour_min_seconds = date[4] + ':' + date[5] + ':' + date[6]
        oled.fill(0)
        oled.text(year_month_date,0,0)
        oled.text(hour_min_seconds, 0, 10)
        oled.show()
Beispiel #5
0
def set_NTP_time():
    import time
    from machine import RTC
    print("Setting time from NTP")

    t = get_NTP_time()
    if t is None:
        print("Could not set time from NTP")
        return False

    tz = 0
    with database.Database() as db:
        tz = db.get("timezone", 200)  # default to CEST

    tz_minutes = int(abs(tz) % 100) * (1 if tz >= 0 else -1)
    tz_hours = int(tz / 100)
    t += (tz_hours * 3600) + (tz_minutes * 60)

    tm = time.localtime(t)
    tm = tm[0:3] + (0, ) + tm[3:6] + (0, )

    rtc = RTC()
    rtc.init()
    rtc.datetime(tm)

    return True
Beispiel #6
0
def do_something_else():   
#The other script to be executed besides of the blocking socket
    url = "http://worldtimeapi.org/api/timezone/Europe/Rome" #http://worldtimeapi.org/timezone/Europe/Rome" # see http://worldtimeapi.org/timezones
    web_query_delay = 60000 # interval time of web JSON query
    retry_delay = 5000 # interval time of retry after a failed Web query
    rtc=RTC()
    # set timer
    update_time = utime.ticks_ms() - web_query_delay
    #settime()
    tempo=utime.localtime()
    print((str(tempo)))
    
#     oled.text(str(tempo), 10, 50)
#     oled.show()
   # while True:
        # query and get web JSON every web_query_delay ms
    if utime.ticks_ms() - update_time >= web_query_delay:
    
        # HTTP GET data
        response_tempo = urequests.get(url)
    
        if response_tempo.status_code == 200: # query success
        
            print("JSON response:\n", response_tempo.text)
            
            # parse JSON
            parsed = response_tempo.json()
            datetime_str = str(parsed["datetime"])
            year = int(datetime_str[0:4])
            month = int(datetime_str[5:7])
            day = int(datetime_str[8:10])
            hour = int(datetime_str[11:13])
            minute = int(datetime_str[14:16])
            second = int(datetime_str[17:19])
            subsecond = int(round(int(datetime_str[20:26]) / 10000))
            #if minute ==31:
                #Client_handler(LEDON0=6)
                #LED2.value(1)
                #print (("LED0 value="),LED0.value())
            # update internal RTC
            rtc.datetime((year, month, day, 0, hour, minute, second, subsecond))
            update_time = utime.ticks_ms()
            print("RTC updated\n")
   
        else: # query failed, retry retry_delay ms later
            update_time = utime.ticks_ms() - web_query_delay + retry_delay
        
    # generate formated date/time strings from internal RTC
    date_str = "Date: {2:02d}/{1:02d}/{0:4d}".format(*rtc.datetime())  
    time_str = "Time: {4:02d}:{5:02d}:{6:02d}".format(*rtc.datetime())

    # update SSD1306 OLED display
    oled.fill(0)
    oled.text("ESP32 WebClock", 0, 5)
    oled.text(date_str, 0, 25)
    oled.text(time_str, 0, 45)
    oled.show()
    
    utime.sleep(0.1)
def setlocal(h=2):
    import utime
    from machine import RTC
    rtc = RTC()
    localtime = utime.time() + h * 3600
    (year, month, mday, hour, minute, second, weekday,
     yearday) = utime.localtime(localtime)
    rtc.datetime((year, month, mday, 0, hour, minute, second, 0))
Beispiel #8
0
def update_time():
      ntptime.host='ntp1.aliyun.com'
      ntptime.settime()
      list=time.localtime(time.time()+8*60*60)
      rtc = RTC()
      #rtc.datetime((year, month, mday, 0, hour, minute, second, 0))
      rtc.datetime((list[0], list[1], list[2] ,None,list[3], list[4], list[5] ,0)) 
      print (rtc.datetime()) # get date and time
Beispiel #9
0
def sync_time():
    import urequests
    from machine import RTC
    rtc = RTC()
    print('before sync: ', rtc.datetime())
    time = urequests.get('http://www.1zlab.com/api/get-time/').json()
    # print(time)
    rtc.init(tuple(time['rtc']))
    print('after sync: ', rtc.datetime())
Beispiel #10
0
def settime():
    (hour_offset, minute_offset) = get_offset_from_api()
    log.info("fetching time from ntp")
    ntptime.settime()

    # add offset
    rtc = RTC()
    (year, month, day, _, hour, minute, second, subsecond) = rtc.datetime()
    rtc.datetime((year, month, day, 0, hour + hour_offset,
                  minute + minute_offset, second, subsecond))
Beispiel #11
0
class SetTime:
    def __init__(self, pool='us.pool.ntp.org'):
        self.pool = pool
        self.rtc = RTC()

    def setTime(self):
        # synchronize with ntp
        # need to be connected to wifi
        ntptime.host = self.pool
        ntptime.settime()  # set the rtc datetime from the remote server
        self.rtc.datetime()  # get the date and time in UTC
Beispiel #12
0
def localRTC():
    global rtc
    rtc = RTC()
    try:
        ticks = myntptime.time(
        ) + 28800  #網路Timer取得格林威治時間+8Hours時差=28800Seconds
        dt = time.localtime(ticks)
        rtc.datetime(dt[0:3] + (0, ) + dt[3:6] + (0, ))  #將取得時間轉入更新RTC 時間
        return rtc
    except OSError:
        pass
Beispiel #13
0
def initTime():
    print('initTime()....')
    rtc = RTC()
    rtc.datetime((2017, 8, 23, 1, 12, 48, 0, 0)) # set a specific date and time
    print('Time   : ', rtc.datetime()) # get date and time

    # synchronize with ntp
    # need to be connected to wifi
    ntptime.settime() # set the rtc datetime from the remote server
    print('Time(UTC): ', rtc.datetime())    # get the date and time in UTC
    #print('rtc.now():', rtc.now())
    print('Time:', utime.gmtime())
Beispiel #14
0
def update_time_http():
    URL="http://quan.suning.com/getSysTime.do"
    try:
      res=urequests.get(URL).text
      j=ujson.loads(res)
      list=j['sysTime1']
      rtc = RTC()
      #rtc.datetime((year, month, mday, 0, hour, minute, second, 0))
      rtc.datetime((int(list[0:4]), int(list[4:6]), int(list[6:8]) ,8,int(list[8:10]), int(list[10:12]), int(list[12:14] ),0)) 
      print (rtc.datetime()) # get date and time
    except OSError as e:
      print ("upgrde failed!")
Beispiel #15
0
def record_dist(prefix='NAME',
                interval_ms=100,
                record_time=10,
                trigger_pin_num=12,
                echo_pin_num=14,
                sound_speed=343,
                write_file=1):
    rtc = RTC()
    sensor = HCSR04(trigger_pin=trigger_pin_num,
                    echo_pin=echo_pin_num,
                    c=sound_speed)
    print('\nUsing sampling interval ', interval_ms, ' milliseconds...')
    print('Recording data for ', record_time, ' seconds...\n')
    ID = hexlify(unique_id()).decode(
        'utf-8')  # Unique ID of the microprocessor
    tmp_file = 'tmp.txt'  # A temporary filename; we will write partial data to this file, and rename only if sampling
    datafile = open(tmp_file, 'w')
    print('\n\n****Beginning Recording ****\n\n')

    timestamp = str(utime.mktime(rtc.datetime()))
    if write_file == 1:
        filename = prefix + '_' + ID + '_' + timestamp + '.txt'
        print('\nCreating data file: ', filename)
    sample_num = (record_time * 1000) / 100

    for sample in range(sample_num + 1):
        t_onboard = rtc.datetime()
        dist = sensor.distance()
        data_str = ''
        print(dist)
        if write_file == 1:
            for t in [sample,t_onboard[0],t_onboard[1],t_onboard[2],t_onboard[4],t_onboard[5], \
                  t_onboard[6],t_onboard[7], dist]:
                data_str += '{} '.format(t)
            if sample == 0:
                datafile = open(tmp_file, 'w')
            else:  # If the first sample, overwrite old tmp_file if it exists
                df = datafile.write(
                    "%s\n" % data_str
                )  # df contains the "result" of the write statement (success or failure)

        else:
            print(sample,t_onboard[0],t_onboard[1],t_onboard[2],t_onboard[3],t_onboard[4],t_onboard[5], \
                 t_onboard[6],t_onboard[7], dist)
        if sample < sample_num:  # Sleep only if another sample is to be taken
            utime.sleep_ms(interval_ms)

        #---------------------------------------
        # Done with the comparison loop; change the temporary filename to the permanent one, now that sampling is complete
    if write_file == 1:  #---------------------------------------
        datafile.close()
        rename(tmp_file, filename)
Beispiel #16
0
def update_time():

    ntptime.host = 'ntp1.aliyun.com'
    try:
        ntptime.settime()
    except:
        print("TIME UPGRADE FAILED")
        return
    list = time.localtime(time.time() + 8 * 60 * 60)
    rtc = RTC()
    rtc.datetime(
        (list[0], list[1], list[2], None, list[3], list[4], list[5], 0))
    print(rtc.datetime())
Beispiel #17
0
def SetTime(aTZone):
    from machine import RTC
    from ntptime import settime

    try:
        settime()
        Time = time.time() + (aTZone * 3600)
        (year, month, day, hour, minute, second, weekday,
         yearday) = time.localtime(Time)
        rtc = RTC()
        rtc.datetime((year, month, day, 0, hour, minute, second, 0))
    except:
        pass
Beispiel #18
0
def main():
    # ESP8266 Pin assignment
    i2c = I2C(-1, scl=Pin(5), sda=Pin(4))

    oled_width = 128
    oled_height = 32

    oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)

    oled.fill(0)

    rtc = RTC()
    initial_time = (2014, 5, 1, 4, 13, 0, 0, 0)
    rtc.datetime(initial_time)  #initial_time) #year, month, day

    while True:
        cur_time = rtc.datetime()
        year = str(cur_time[0])
        month = str(cur_time[1])
        day = str(cur_time[2])
        hour = str(cur_time[4])
        minute = str(cur_time[5])
        second = str(cur_time[6])

        first_line = month + " " + day + ", " + year
        second_line = hour + ":" + minute + ":" + second
        oled.text(first_line, 0, 0)
        oled.text(second_line, 0, 10)
        oled.show()
        oled.fill(0)

        oled.text(str(mode), 100, 25)
        oled.show()

        while mode != 0:  # not in regular mode
            # oled.text(str(mode), 100, 25)
            #
            # if mode == 1:  # change the year
            #     oled.fill(0)
            #     oled.text('Year: ' + year, 0, 0)
            #     oled.show()
            # elif mode == 2:  # change the month
            #     oled.fill(0)
            #     oled.text('Month: ' + month, 0, 0)
            #     oled.show()
            # else:
            #     oled.fill(1)
            #     oled.show()

            oled.fill(1)
            oled.show()
Beispiel #19
0
class Clock(): 
	def __init__(self, message):
		#parse time recieved from the broker 
		date_time = message.split(" ")
		date = date_time[0].split('-')
		time = date_time[1].split(":")
		#use rtc to keep track of time on board
		self.__rtc = RTC()
		self.__rtc.datetime((int(date[0]), int(date[1]), int(date[2]), 0, int(time[0]), int(time[1]), int(time[2][0:2]), 0)) 
		
	def get_time(self):
		#return time as string
		time = self.__rtc.datetime() 
		return ("%s-%s-%s %s:%s:%s") % (str(time[0]), str(time[1]), str(time[2]), str(time[4]), str(time[5]), str(time[6]))
Beispiel #20
0
def rtcSetUserTime():
    global currentTime

    while True:
        print(
            "Please enter the time in the following format: yyyy mm dd hh mm ss: ",
            end="")
        currentTimeInput = input()
        if parse(currentTimeInput):
            rtc = RTC()
            print("Setting time: ", currentTime)
            rtc.datetime(currentTime)
            print("Input ok")
            break
Beispiel #21
0
async def set_rtc():
    rtc = RTC()
    while True:
        t = -1
        while t < 0:
            try:
                t = ntptime.time()
            except OSError:
                print('ntp timeout')
                await asyncio.sleep(5)

        s = gbtime(t)  # Convert UTC to local (GB) time
        t0 = time.time()
        rtc.datetime(s[0:3] + (0, ) + s[3:6] + (0, ))
        print('RTC was set, delta =', time.time() - t0)
        await asyncio.sleep(600)
Beispiel #22
0
def getTime():
    rtc = RTC()
    t = rtc.datetime()
    day = (t[0:3])
    week = (t[3])
    tm = (t[4:6])
    return day,week,tm
Beispiel #23
0
class clock:
    def __init__(self):
        self.ntp()
        self.dp()
        self.se=0
        self.rtc=RTC()
    def net(self):
        wlan = network.WLAN(network.STA_IF) 
        wlan.active(True) 
        if not wlan.isconnected(): 
            wlan.connect('wifiname','password')
    def dp(self):
        hspi = SPI(1, baudrate=10000000, polarity=0, phase=0)
        self.display = max7219.Matrix8x8(hspi,Pin(5),4)
    def ntp(self):
        self.net()
        ntptime.host="ntp1.aliyun.com"
        ntptime.NTP_DELTA = 3155644800
        try:
            ntptime.settime()
        except Exception as e:
            pass
    def show_time(self):
        date=self.rtc.datetime()
        self.m=date[5]
        self.h=date[4]
        self.display.fill(0)
        self.display.text(str(self.h) if len(str(self.h))==2 else ' '+str(self.h) ,0,0,1)
        self.display.pixel(16,2,self.se)        
        self.display.pixel(16,4,self.se)        
        self.display.text(str(self.m) if len(str(self.m))==2 else '0'+str(self.m) ,17,0,1)
        self.se=0 if self.se==1 else 1
        self.display.show()
def draw_dynamic_screen(temp="N/A",humi="N/A",press="N/A",display=None):
    local_time = "N/A"
    local_date = "N/A"
    print("Internet time acquired", internet_time_acquired)
    if (internet_time_acquired == True):
        rtc = RTC()
        date_time = rtc.datetime()
        print(date_time) # print date and time
        print("Current date (year, month, day, day of week): ",  date_time[0],
                                                              "/",
                                                              date_time[1],
                                                              "/",
                                                              date_time[2],
                                                              " | ",
                                                              date_time[3])
        print("Current time (hour:minute:second): ",   date_time[4],
                                                  ":",
                                                  date_time[5],
                                                  ":",
                                                  date_time[6])

        local_time = str(date_time[4]) + ":" + str(date_time[5]) + ":" + str(date_time[6])
        local_date = str(date_time[0]) + "/" + str(date_time[1]) + "/" + str(date_time[2])

    print(local_time)

    display.text(temp, 45, 5, 1)
    display.text(humi, 45, 15, 1)
    display.text(press, 45, 25, 1)
    display.text(local_time, 45, 35, 1)
    display.text(local_date, 45, 45, 1)
    print("iftt_notification_sent: ", iftt_notification_sent)
    print("iftt_notification_counter: ", iftt_notification_counter)
    display.text('IFTTT in', 5, 55, 1)
    display.text(str(iftt_notification_interval_sec-iftt_notification_counter) + "s",80,55,1) # This will show a countdown.
Beispiel #25
0
def set_NTP_time():
    import time
    from machine import RTC
    print("Setting time from NTP")

    t = get_NTP_time()
    if t is None:
        print("Could not set time from NTP")
        return False

    tm = time.localtime(t)
    tm = tm[0:3] + (0, ) + tm[3:6] + (0, )

    rtc = RTC()
    rtc.init()
    rtc.datetime(tm)

    return True
Beispiel #26
0
def logprint(msg):
    rtc = RTC()
    t = rtc.datetime()
    #(2020, 4, 22, 2, 8, 43, 38, 88387)
    # yyyy, m, dd, ?, h, mm, ss, ms
    timestamp = str(t[2]) + "-" + str(t[1]) + "-" + str(t[0]) + " " + str(
        t[4]) + ":" + str(t[5]) + ":" + str(t[6]) + "." + str(t[7])
    result = str(timestamp) + " -> " + str(msg)
    print(result)
Beispiel #27
0
    def run(self):
        self.stop()

        alarm = config.get(self.path)['alarm']

        alarm_year = alarm['year']
        alarm_mon = alarm['mon']
        alarm_day = alarm['day']

        alarm_hour = alarm['hour']

        alarm_min = alarm['min']
        alarm_sec = alarm['sec']

        alarm_on_off = alarm['on_off']
        if alarm_on_off == 'on':
            rtc = RTC()

            dt = rtc.datetime()

            year = dt[0]
            mon = dt[1]
            day = dt[2]
            hour = dt[4]
            min = dt[5]
            sec = dt[6]

            if hour == alarm_hour and min == alarm_min and sec == alarm_sec and self.beep_start == False:
                self.beeper = PWM(Pin(self.BEEP_PIN, Pin.OUT),
                                  freq=589,
                                  duty=512)
                self.beep_start = True

            if self.beep_start and self.n >= 0:
                self.n -= 1
                self.beeper.freq(589)
                time.sleep_ms(100)

                self.beeper.freq(0)
                time.sleep_ms(50)

                self.beeper.freq(589)
                time.sleep_ms(100)

                self.beeper.freq(0)
                time.sleep_ms(650)

            if (self.beep_start
                    and self.n <= 0) or (self.key.read() == self.key.HOME_PRESS
                                         and self.beep_start):
                self.cnt = 0
                self.freq0_on = False
                self.freq589_on = False
                self.beep_start = False
                self.beeper.deinit()
        self.start()
Beispiel #28
0
def settime(ntpservers):
    def asctime():  # get human readable version
        x = utime.localtime()
        return '%02d/%02d/%04d %02d:%02d' % (x[1], x[2], x[0], x[3], x[4])
        # like 12/13/2017 14:31

    for server in ntpservers:
        t = _getntptime(server)
        if t != 0:
            break
    if t != 0:
        tm = utime.localtime(t)  # format number into dmy ms etc
        tm = tm[0:3] + (0, ) + tm[3:6] + (0, )  # reformat to suit rtc
        rtc = RTC()
        rtc.datetime(tm)  # write into rtc
        print("Time sync: %s UTC" % asctime())
    else:
        print("Time sync fail")
    return (t != 0)
Beispiel #29
0
def run(owner):
    from utime import sleep
    sleep(0.1)
    from gc import collect
    from machine import I2C, Pin, RTC
    bus = I2C(-1, Pin(4), Pin(5))
    from urtc import DS3231
    rtc = RTC()
    dl = [x for x in DS3231(bus).datetime() if x]
    rtc.datetime(dl + [0 for x in range(0, 8 - len(dl))])
    del I2C, Pin, DS3231, rtc, dl
    collect()
    sleep(0.2)
    from gc import collect
    from states import init
    init_state = init()
    owner.core.load()
    collect()
    init_state.on_enter(owner)
async def test2_square(pin, scl, sda):
    i2c = I2C(-1, scl=scl, sda=sda)
    oled = ssd1306.SSD1306_I2C(128, 64, i2c)
    rtc = RTC()

    while True:
        if sys.platform == 'esp32':
            # We want maximum precision, so we let await get us within 2ms,
            # then use a blocking utime.sleep_us() to strike. Every now and
            # the something will interfere ... meh.
            delay = (1000000 - rtc.datetime()[7]) // 1000
            if delay > 4:
                await asyncio.sleep_ms(delay - 2)
            delay = (1000000 - rtc.datetime()[7])
            if delay > 0:
                utime.sleep_us(delay)
        elif sys.platform == 'esp8266':
            # ESP8266 only has milliseconds, so no point in the above.
            delay = (1000 - rtc.datetime()[7])
            if delay > 0:
                await asyncio.sleep_ms(delay)
        else:
            raise RuntimeError("unsupported platform '{}'".format(
                sys.platform))

        # Turn the pin on and print the current time on REPL
        pin.value(1)
        oled.fill(0)
        now = utime.localtime()
        oled.text("{0:04d}-{1:02d}-{2:02d}".format(*now), 0, 0)
        oled.text("  {3:02d}:{4:02d}:{5:02d}".format(*now), 0, 8)
        oled.show()

        # Wait for 100ms
        if sys.platform == 'esp32':
            delay = (100000 - rtc.datetime()[7]) // 1000
        elif sys.platform == 'esp8266':
            delay = (100 - rtc.datetime()[7])
        if delay > 0:
            await asyncio.sleep_ms(delay)

        # Turn the pin off
        pin.value(0)