树莓派3b添加python时间同步脚本
树莓派没有电池,因此断电后系统时间会停止,直到你开机后又继续计时,所以会造成系统时间和实际时间有很大的误差。
因为项目需要用到本地时间,精度要求不高不想折腾(如果需要高精度,需要安装ntp),所以考虑用python脚本同步百度的时间,精度误差很小在0.5-1秒之内,需要网络支持。
1、创建python程序
sudo nano date.py
2、写入python代码
# -*- coding: UTF-8 -*- import os import time import httplib #获取远程服务器时间并同步本地 def get_webservertime(host): conn=httplib.HTTPConnection(host) conn.request("GET", "/") r=conn.getresponse() ts= r.getheader('date') #获取http头date部分 ltime= time.strptime(ts[5:25], "%d %b %Y %H:%M:%S") #将GMT时间转换成北京时间 ttime=time.localtime(time.mktime(ltime)+8*60*60) #时区+8小时 currenttime="%u-%02u-%02u %02u:%02u:%02u"%(ttime.tm_year,ttime.tm_mon,ttime.tm_mday,ttime.tm_hour,ttime.tm_min,ttime.tm_sec) os.system('sudo date -s "' + currenttime + '"') time.sleep(20) get_webservertime("www.baidu.com") while 1: time.sleep(120) get_webservertime("www.baidu.com")
3、给予权限
sudo chmod 777 date.py
4、测试程序
先将系统时间改为过期时间
sudo date -s '2016-02-03 10:00:00'
查看系统时间是否修改成功
sudo date
执行编写好的python程序,20秒后使用date命令查看系统时间是否同步成功!
sudo python date.py
5、将python程序加入开机自启
编辑系统启动文件
sudo nano /etc/rc.local
在 exit 0 之前加入脚本(注意程序路径)
/usr/bin/python /home/pi/date.py > /home/pi/GetDate.log
6、重启树莓派,20秒后查看系统时间是否同步成功
sudo reboot