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
ace(7)							 Miscellaneous Information Manual						    ace(7)

NAME
ace - Serial communications interface SYNOPSIS
controller ace0 at * slot ? vector aceintr DESCRIPTION
The ace serial line controller provides a serial communications interface on DEC 2000, AlphaStation, and AlphaServer platforms. The serial communications ports that are controlled by ace adhere to the RS-232 standard and can operate at rates from 50 to 115200 baud (see tty(7)). These communications ports support serial-line printers, modems, and terminals. In alternate console configurations (that is, no graphics head), the terminal to be the system console must be connected to the port that is mapped to /dev/tty00. (See ports(7) for information about mapping AlphaStation and AlphaServer port labels to device pathnames.) Cur- rently, some processors that use the ace driver limit the serial console port to 9600 baud, 8-bit, no parity and no modem support. However, some processor consoles do support baud rates other than 9600 baud and allow the use of modems as console devices. Consult your hardware documentation to determine the type of console support your system provides. The driver for the ace interface supports hardware flow control using the Request to Send (RTS) and Clear to Send (CTS) signals. When hardware flow control is enabled, the flow of input data is controlled by the RTS signal and the flow of output data is controlled by the CTS signal. If the CTS signal is off, the driver suspends output to that line until the CTS lead is reasserted. Likewise the driver turns off the RTS lead to tell the device connected to the line to stop sending data as a result of congestion on the host side. When the condi- tion clears, the driver turns on the RTS lead to tell the device to resume sending data. The DCD (carrier detect) timer value defaults to 2 seconds. This value may be changed if your modem hardware requires a different value. the change can be made in the /etc/sysconfigtab file as follows: ace: dcd_timer=n where n is the time interval in seconds, and can be set to 0 (no timeout), 1, or 2 seconds. Alternatively, you can use the sysconfig com- mand to set the same time interval option as follows: # sysconfig -r ace dcd_timer=[n] If you use the sysconfig command, the value will not be preserved when the system is rebooted. To preserve the setting, put the entry in the /etc/sysconfigtab file NOTES
If you are using the alternate system console to perform kernel debugging, you must change the kdebug entry in the /etc/remote file to use /dev/tty01; when the kernel is running in debugging mode, no other application can use the port. See Kernel Debugging for information on setting up your system for kernel debugging. RESTRICTIONS
Unless alternative specifications are stated in your system hardware documentation, data communications equipment attached to the console serial port in alternate console configurations must be set to 9600 baud, 8-bits, no parity. If a serial console is being used, /dev/tty00 cannot be opened by another process. The ace driver enforces this restriction. Baud rates greater than 38400 are not supported on the two primary serial ports on the DEC 2000 system. However, if you use an ISA serial or modem card that is capable of communicating at the higher rates, the higher rates are supported. FILES
console terminal local terminal local terminal RELATED INFORMATION
MAKEDEV(8), console(7), devio(7), modem(7), ports(7), tty(7) Kernel Debugging System Administration delim off ace(7)
All times are GMT -4. The time now is 08:02 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy