Welcome to the Pycom forum Forum
    • \[\[global:header.categories\]\]
    • \[\[global:header.recent\]\]
    • \[\[global:header.tags\]\]
    • \[\[global:header.popular\]\]
    • Login

    Explore Pybytes | Official Documentation | Report a Firmware Bug/Issue | GitHub

    Set RTC from PC datetime (no network connection)

    Scheduled Pinned Locked Moved Discussion
    rtc
    4 Posts 2 Posters 558 Views 2 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • A Offline
      alexpul
      last edited by alexpul

      I would like to set the RTC of a WiPy with the exact datetime on the computer it is connected to via USB. I know that rtc.ntp_sync() can be used to sync the RTC with a network but I will need to sync these devices in remote locations that don't have access to a wifi network (also no LoRa or LTE connection). Is there a way to query the datetime of the computer and set the WiPy RTC to that date time?

      1 Reply Last reply Reply Quote 0
      • P Offline
        Paul Thornton
        last edited by

        Given you can init the RTC with anytime you want:

        # for 2nd of February 2017 at 10:30am (TZ 0)
        rtc.init((2017, 2, 28, 10, 30, 0, 0, 0))
        

        I see no reasons you could not use the serial connection between a pc and the WiPy to sync time.

        That said you'd need to write an application to run on said PC to write its current time out over serial.
        And adjust your wipy code to read that time out of the serial and init the RTC clock.

        1 Reply Last reply Reply Quote 0
        • A Offline
          alexpul
          last edited by

          Here is a small script I wrote that sets the WiPy RTC from the PC datetime. The script is run through python on the computer and the device is connected via USB. (Note that it requires serial connection of UART0 to have a duplicated terminal - see uos.dupterm() in the pycom documentation for more details).

          import serial
          from datetime import datetime
          
          ## Get PC datetime
          pc_RTC = datetime.now()				#get datetime of PC
          pc_datetime = pc_RTC.timetuple()	#convert datetime to tuple
          
          datetime_tuple = pc_datetime[0:6] 	#get datetime entries in same format as WiPy RTC
          print(datetime_tuple)
          
          
          ## Set datetime over serial connection 
          ser = serial.Serial(port='COM1', baudrate=9600, writeTimeout=1, timeout=1) # initialize serial connection
          
          input = 'from machine import RTC\r\nintRTC = RTC()\r\nintRTC.init(' + str(datetime_tuple) + ')\r\n' #WiPy commands to set RTC datetime
          ser.write(input) #send commands over USB serial connection
          P 1 Reply Last reply Reply Quote 0
          • P Offline
            Paul Thornton @alexpul
            last edited by

            @alexpul Neat work around, Good job!

            1 Reply Last reply Reply Quote 0

            Hello! It looks like you're interested in this conversation, but you don't have an account yet.

            Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

            With your input, this post could be even better 💗

            Register Login
            • 1 / 1
            • First post
              Last post

            Pycom on Twitter

            Pycom