import time def WioClock_v01o33_2023DApr03_i(): #This version is fully functional #by D@CC on 2023DApr03 (tested by D@CC) #Purpose: to display the (UNIX) clock on the WioTerminal #Final Name: main.py #Comment: This is my first useful program for the Wio Terminal #Versioned Name: WioClock_v01o^^_2023DApr03.py #Versioned Name occurs: 4 times top, def, #def end, invocation #Requirements: ArduPy_wio_terminal_lastest.uf2 (MicroPython) #Issues: 1. should sense device to work on the RPi # 2. should use wifi on the RPi # 3. should show HH:M1 in large block letters # 4. should allow the user to adjust the time # 5. should allow the user to specify screen dimensions # 6. #Description: 1. prints progname & minicom cmd # 2. requests current UnixTime (deprecated)) # 3. Doesn't use device but uses Unix Time from disk # 4. CLS then displays updated clock every 5 seconds # 5. Version WioClock_v01o32_2023DApr03 works # 6. It starts up with Unix Time from the Flash Drive # media/rtc/previousUnixTimeSec with contents: # PreviousUnixTime 1680564200 2023DApr03 23:23 EST # 7. A future version will let the user adjust the time # using buttons on the WioTerminal. For now, the # user needs to adjust the time on the Flash Drive # # WioClock_v01o^^_2023DApr03.py for WioTerminal # display date/time clock # This versioned program is improvised as a function ..._i(): # it is called by an unchanging stub at the end of this code # # I had a problem because "import time" was in the versionned code # and it was not available to a function that needed it. Moved it up. print();print() progName="WioClock_v01o33_2023DApr03.py" print("progName:",progName) print("v4 actually uses time.time and time.localtime(a)") # read in a previous Unix Time from the last time wioBuild ran to flash WioTerminal f=open("media/rtc/previousUnixTimeSec","r") # open previousUnixTimeSec=f.readline() # read print("previousUnixTimeSec:",previousUnixTimeSec) # display only (don't use f.close() # close print("full record:",previousUnixTimeSec) # displayfull record temp=previousUnixTimeSec[0:16] # grep name print("temp:",temp) temp2=previousUnixTimeSec[1:16] # grep name print("temp2:",temp2) prevUnixTimeFromDisk= previousUnixTimeSec[17:27] # prevUnixTime (in seconds) print("prevUnixTimeFromDisk:",prevUnixTimeFromDisk,":") minicom="minicom -o -D /dev/ttyACM0" print("minicom:",minicom) #import time x=dir(time) print("x:",x) a=time.time() print("a:",a) try: if False : a=time.localtime(a) print("a:",a) print("after try:") b=time.localtime(1046684836) #+ ~10% print("b:",b) #= 946684836 c= 946684836+94668483 # + 10% # c was too big for localtime(c) #print("c:",c) c= 946684836+94668483+94668483+94668483 # + 30% print("c:",c) c=time.localtime(c) print("c:",c) d= 946684836+94668483+94668483+94668483 # + 30% d= d+94668483+94668483+94668483 # + 60% print("d:",d) d=time.localtime(d) print("d:",d) d= 946684836+94668483+94668483+94668483 d= d+94668483+94668483+94668483 # + 60% e= d+94668483+94668483 # + 20% = +80% print("e:",e) e=time.localtime(e) print("e:",e) f= 1688254620 print("f:",f) f=time.localtime(f) print("f:",f) #if end #try end except: print("after except:") #c=time.localtime(a) c="abc" print("c:",c) b=c finally: b="b" print("after finally:") print("b:",b) #try end print() print("progName:",progName) device="WioTerminal" print("device:",device) g=time.time() print("g:",g) timeRTC_UnixSeconds=g print("timeRTC_UnixSeconds:",timeRTC_UnixSeconds) if device=="WioTerminal": dateTimeRTC=time.localtime(timeRTC_UnixSeconds) #convert time.time to date & time else: dateTimeRTC=time.ctime(timeRTC_UnixSeconds) #convert time.time to date & time #if end #dateTimeRTC=1680402493.0272472 print("localClock (without correction):",dateTimeRTC) #print it out # INPUT #timeNow_UnixSeconds=int(input("Enter localTime (in Pythix seconds)~1688254620 ? ")) #next line deprecated #timeNow_UnixSecondsStr=input("Enter localTime (in Unix seconds)~1680422400 ? ") if True: # always use the Unix Time read from disk if prevUnixTimeFromDisk=="": timeNow_UnixSeconds = 168042240 # a valid time Apr 4, 2023 else: timeNow_UnixSeconds = int(prevUnixTimeFromDisk) # time from last wioBuild #if end else: # old deprecated code if timeNow_UnixSecondsStr=="": timeNow_UnixSeconds = int(prevUnixTimeFromDisk) else: timeNow_UnixSeconds = int(timeNow_UnixSecondsStr) #if end #if end # if device=="WioTerminal": dateTimeEntered=time.localtime(timeNow_UnixSeconds) #convert time.time to date & time else: dateTimeEntered=time.ctime(timeNow_UnixSeconds) #convert time.time to date & time #if end print("dateTimeEntered:",dateTimeEntered) #print it out #print("d") #timeCorrection_UnixSeconds = timeNow_UnixSeconds - timeRTC_UnixSeconds #print("timeCorrection_UnixSeconds wo function:",timeCorrection_UnixSeconds) #print("e") timeCorrection_UnixSeconds=setLocalDateTimeCorrectionForCurrentLocalTime(timeNow_UnixSeconds,device) #print("timeCorrection_UnixSeconds w function:",timeCorrection_UnixSeconds) #progName="WioClock_v01o28_2023DApr03.py" while 1: t=time.time()+ timeCorrection_UnixSeconds #print("t:",t) print("progName:",progName) #at top of LCD print("minicom cmd:","minicom -o -D/dev/ttyACM0 |") for z in range(13):print() clockNow=localDateTime(timeCorrection_UnixSeconds,device) #at bottom of LCD #print("****************************") bottomrightcorner=" _" print("clockNow:",clockNow," Unix time:",t,bottomrightcorner,end="") # the end="" above suppresses the CRLF. #print(" _|") #print("timeCorrection(UnixSeconds):",timeCorrection_UnixSeconds) time.sleep(5) #5 seconds #while end # version WioClock_v01o19.py worked pretty well # Renamed to main.py # Copied to Ardupy top folder on 2023DApr02 00:16 #main.py output: #b: struct_time(tm_year=2003, tm_mon=3, tm_mday=3, tm_hour=9, tm_min=47, tm_sec=16, tm_wday=0, tm_y #day=62, tm_isdst=-1) #g: 946689854 return #def end #end WioClock_v01o33_2023DApr03_i def setLocalDateTimeCorrectionForCurrentLocalTime(currentLocalTime_UnixSeconds,device): #print("in setLocalDateTime....") #print("currentLocalTime_UnixSeconds entered was:",currentLocalTime_UnixSeconds) #print("Date Time Now:",time.localtime(currentLocalTime_UnixSeconds)) #print("Date Time Now entered:",time.ctime(currentLocalTime_UnixSeconds)) timeRTC_UnixSeconds = time.time() #print("timeRTC_UnixSeconds:",timeRTC_UnixSeconds) if device=="WioTerminal": print("timeRTC_DateTime:",time.localtime(timeRTC_UnixSeconds)) else : print("timeRTC_DateTime:",time.ctime(timeRTC_UnixSeconds)) #if end timeCorrection_UnixSeconds = currentLocalTime_UnixSeconds - timeRTC_UnixSeconds #if end #print("timeCorrection_UnixSeconds:",timeCorrection_UnixSeconds) return timeCorrection_UnixSeconds #def end def localDateTime(timeCorrection_UnixSeconds,device): #print("in localDateTime") localTime_UnixSeconds= time.time()+ timeCorrection_UnixSeconds #print("localTime_UnixSeconds+:",localtime_UnixSeconds) #localTime_UnixSeconds= time.time()- timeCorrection_UnixSeconds #print("localTime_UnixSeconds-:",localtime_UnixSeconds) if device=="WioTerminal": localDateTime = time.localtime(localTime_UnixSeconds) else: localDateTime = time.ctime(localTime_UnixSeconds) #if end #print("localDateTime:",localDateTime) return localDateTime #def end # #invoke the program as a function Doh=WioClock_v01o33_2023DApr03_i() # WioClock_v01o^^_2023DApr03 #/ WioClock_v01o^^_2023DApr03.py