Sponsored Content
Top Forums Programming Arduino UNIX Time - Syncing Computer UNIX Time to Arduino Time with Python Post 303042410 by Neo on Tuesday 24th of December 2019 12:20:18 AM
Old 12-24-2019
Here is the Python 2.7.16 code I quickly put together to send unix time to the Arduino UNO.

I assume it also works on Python3, but I have not tested it because I have not completely upgrade python on my mac pro yet, sorry about that.

Code:
# -----------------------------------------------------------
# Sync Unix Time with Arduino Initial Draft 0.1
# Written on macOS, tested with Python 2.7.16
# Neo, December 2019
# This code needs refinement to be more general
# I will improve this code later when I need to use it in an Arduino project
# For now, it works "OK" and serves it purpose
# Feel free to improve, modify as you like.
# -----------------------------------------------------------
import serial
import time

ser = serial.Serial(
    port='/dev/cu.usbserial-40',  #change this for your device
    baudrate=9600,
    parity=serial.PARITY_NONE,
    stopbits=serial.STOPBITS_ONE,
    bytesize=serial.EIGHTBITS,
    timeout=0)

print("connected to: " + ser.portstr)

# this will store the line
line = []
ux = 0
a = False
debugScript = False
offset = 2 .  #adjust this time offset (in seconds) to account for various time delays in script and transferring via the serial port, etc. to insure the Arduino is in closer sync to the computer
time_int = 1000  # this can be any number greater than zero and less than recent unix time
count = 0
while True:
    if debugScript:
        print(str(int(time.time())))
    for c in ser.read():
        if not a:
            if ux < time_int:
                ser.write("T")
                ux = int(time.time())+offset
                ser.write(str(ux))
                ser.write("\n")
                ser.flush()
                if debugScript:
                    print("unixtime: " + str(ux))
        line.append(c)
        count += 1
        if c == '\n':
            print("Line("+str(count)+"): " + ''.join(line))
            x = int(time.time())+offset
            print("time("+str(count)+"): " + str(x) + "\n")
            line = []
            a = True
            break
ser.close()

 

9 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Help me!First time use UNIX.

I am assigned a programming work.It is my first time to use unix. The task is writing a shell script to interrogate the university Unix operating system to determine the number of "Runnable" processes at any given time.Then append the result,along with a time-stamp,on a log file. Also there are... (1 Reply)
Discussion started by: zhshqzyc
1 Replies

2. UNIX for Advanced & Expert Users

How To Provide Time Sync Using Nts-150 Time Server On Unix Network?

can anybody tel lme,how to instal NTS -150 on a unix network,it needs some patch to fetch time frm serve,,?? (2 Replies)
Discussion started by: pesty
2 Replies

3. Shell Programming and Scripting

Convert Unix Time to Standard Time

I have a list of interfaces and time the interface was last active. I can't figure out how to convert the time in the second column, Fa1/14 0 Se0/0/0 0 Fa1/11 0 Fa1/9 0 Fa1/0 0 Se0/0/1 1240401408 Gi1/0 0 Fa0/0 1240401408 Fa1/3 0 Fa1/8 0 Fa1/15 0 Fa1/13 0 Fa1/10 0 Fa1/1 0 Fa1/12... (7 Replies)
Discussion started by: mrlayance
7 Replies

4. Shell Programming and Scripting

Unix time

how do i convert unix time to show normal eg i have unix time 1297702242 and i want it converted to normal time. how do i do that (2 Replies)
Discussion started by: blackzinga80
2 Replies

5. Shell Programming and Scripting

How to get time duration between two human readable time stamp in Unix?

Here is two time I have: Jul 12 16:02:01 Jul 13 01:02:01 and how can I do a simple match to get difference between two time which is 09:00:00 Thanks in advance. (3 Replies)
Discussion started by: ford99
3 Replies

6. UNIX for Dummies Questions & Answers

Converting string date time to unix time in AWK

I'd like to convert a date string in the form of sun aug 19 09:03:10 EDT 2012, to unixtime timestamp using awk. I tried This is how each line of the file looks like, different date and time in this format Sun Aug 19 08:33:45 EDT 2012, user1(108.6.217.236) all: test on the 17th ... (2 Replies)
Discussion started by: bkkid
2 Replies

7. Shell Programming and Scripting

Adding time to date time in UNIX shell scipting

I needed some help in adding a duration (in seconds) to a start time (in hhmmss format) and a start date (in mmddyy format) in order to get an end date and end time. The concept of a leap year is also to be considered while incrementing the day. The code/ function that I have formed so far is as... (3 Replies)
Discussion started by: codehelp04
3 Replies

8. Shell Programming and Scripting

Convert UTC time into current UNIX sever time zone

Hi guys thanks for the help for my previous posts.Now i have a requirement that i download a XMl file which has UTC time stamp.I need to convert UTC time into Unix server timezone. For ex if the time zone of unix server is CDT then i need to convert into CDT.whatever may be the system time... (5 Replies)
Discussion started by: mohanalakshmi
5 Replies

9. Programming

Arduino-cli - Uploading to Unknown Chinese Arduino Boards using the Arduino Command Line Interface

In my further exploration of Arduino, today I decided to install the arduino-cli on my mac today. https://github.com/arduino/arduino-cli I followed the instructions for macOS but when I got to this part: arduino-cli board list I got the dreaded "Unknown" Fully Qualified Board Name... (1 Reply)
Discussion started by: Neo
1 Replies
REMOTE(5)						      BSD File Formats Manual							 REMOTE(5)

NAME
remote -- remote host description file DESCRIPTION
The systems known by tip(1) and their attributes are stored in an ASCII file which is structured somewhat like the termcap(5) file. Each line in the file provides a description for a single system. Fields are separated by a colon (``:''). Lines ending in a character with an immediately following newline are continued on the next line. The first entry is the name(s) of the host system. If there is more than one name for a system, the names are separated by vertical bars. After the name of the system comes the fields of the description. A field name followed by an `=' sign indicates a string value. A field name followed by a `#' sign indicates a numeric value. Entries named ``tip*'' and ``cu*'' are used as default entries by tip(1), and the cu(1) interface to tip, as follows. When tip is invoked with only a phone number, it looks for an entry of the form ``tip300'', where 300 is the data rate with which the connection is to be made. When the cu interface is used, entries of the form ``cu300'' are used. CAPABILITIES
Capabilities are either strings (str), numbers (num), or boolean flags (bool). A string capability is specified by capability=value; for example, ``dv=/dev/harris''. A numeric capability is specified by capability#value; for example, ``xa#99''. A boolean capability is speci- fied by simply listing the capability. at (str) Auto call unit type. br (num) The data rate (bits per second) used for communications on the serial port. When a modem is used, the data rate used to commu- nicate with the remote modem may be different than this rate. This is a decimal number. The default rate is 9600 bits per second. cm (str) An initial connection message to be sent to the remote host. For example, if a host is reached through a port selector, this might be set to the appropriate sequence required to switch to the host. cu (str) Call unit if making a phone call. Default is the same as the `dv' field. di (str) Disconnect message sent to the host when a disconnect is requested by the user. du (bool) This host is on a dial-up line. dv (str) UNIX device(s) to open to establish a connection. If this file refers to a terminal line, tip(1) attempts to perform an exclu- sive open on the device to ensure only one user at a time has access to the port. el (str) Characters marking an end-of-line. The default is NULL. `~' escapes are only recognized by tip after one of the characters in `el', or after a carriage-return. fs (str) Frame size for transfers. The default frame size is equal to BUFSIZ. hd (bool) The host uses half-duplex communication, local echo should be performed. ie (str) Input end-of-file marks. The default is NULL. oe (str) Output end-of-file string. The default is NULL. When tip is transferring a file, this string is sent at end-of-file. pa (str) The type of parity to use when sending data to the host. This may be one of ``even'', ``odd'', ``none'', ``zero'' (always set bit 8 to zero), ``one'' (always set bit 8 to 1). The default is even parity. pn (str) Telephone number(s) for this host. If the telephone number field contains an @ sign, tip searches the file /etc/phones file for a list of telephone numbers (see phones(5)). tc (str) Indicates that the list of capabilities is continued in the named description. This is used primarily to share common capabil- ity information. FILES
/etc/remote The remote host description file resides in /etc. EXAMPLES
Here is a short example showing the use of the capability continuation feature. It defines a 56k modem connection on the first serial port at 115200 bits per second, no parity using the Hayes command set with standard line editing and end of file characters. The arpavax entry includes everything in the UNIX-57600 entry plus the phone number for arpavax (in this case an @ character so that it is retrieved from the environment). UNIX-57600: :dv=/dev/cuau0:el=^D^U^C^S^Q^O@:oe=^D:du:at=hayes:br#115200:pa=none: arpavax|ax: :pn=@:tc=UNIX-57600 SEE ALSO
cu(1), tip(1), phones(5) HISTORY
The remote file format appeared in 4.2BSD. BUGS
The tip(1) utility uses its own notion of the serial ports data rate rather than the system default for a serial port. BSD
October 20, 2003 BSD
All times are GMT -4. The time now is 10:44 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy