摘要:在機智雲自助開發平台開發一款智能設備有很多在線工具快速實現,若需要獲取時間,依靠MCU本身自帶的時鍾比較麻煩,是否可以直接使用函數調用外界時間呢?機智雲有什么API可以用來獲取網絡時間呢?
答案是有這么一個函數gizwitsGetNTP( )可以獲取網絡時間,我們機友用這個函數實現了水墨畫定時控制系統、節點的時間同步、采集地震的波形時進行每個節點的數據同步。
[ 什么是NTP網絡協議]
網絡時間同步現在有2種同步協議NTP和PTP,NTP與PTP不同在於時間戳的產生位置。NTP是通過軟件來記錄協議相關網絡包的發出和到達時刻,受操作系統影響很大(系統約忙,延時越大)。同步精度優於10ms。
什么是NTP網絡協議
- 用於同步它所有客戶端時鍾的服務。NTP服務器將本地系統的時鍾與一個公共的NTP服務器同步然后作為時間主機提供服務,使本地網絡的所有客戶端能同步時鍾。
NTP時間服務器是一個簡單的常用的服務器,工作中我們只要做到會用就行,能搭建起來就可以了,不用太去深入研究ntp時間服務器的原理。
為什么需要NTP服務,主要原因有兩個
- 網絡上的各台計算機上的時間不同步:不同步的原因有很多,比如手動修改了操作系統的時間,比如CMOS電池重置導致的時間復位等等。
- 網絡上的各台計算機時間不精確:我們所使用的鍾表,精度有一定的誤差,一般較高的精度平均每年也會達到一分鍾左右的誤差,雖然對日常使用基本不造成影響,但是在計算機的世界這已經會造成問題。
實際業務需求中由於兩台server的時間不一致。導致漏數據。損失巨大,被user批的不行不行的。還好IT有一台 server 專門用來校時,使用機智雲平台開發物聯網設備時,通常使用使用gizwtisGetNTP函數來實現。
什么是准確的
- 目前最為准確的裝備是什么呢?
- 原子鍾是目前世界上最准確的計時工具,它在20世紀50年代出現,利用院子袖手或釋放能量是發射出的電磁波來計時,非常穩定,再加上一些列精密儀器的控制,可以達到2000萬年才誤差1秒,這個精確度基本能夠實現目前所有的需求。
為什么不能直接使用格林威治時間
- 格林威治時間是以地球自轉為基礎的,而由於地球自轉本身就不規則,而且在緩慢加速。因為格林威治時間計時的基礎都存在偏差,所以格林威治時間已經不再作為標准時間使用。
什么是新的標准時間
- 縮寫為UTC(Universal Time Coordinated)的世界協調時是准確的標准時間,UTC正式使用原子鍾進行報時的國際標准時間。
獲取的方式
- 而獲取的方式也多種,可以通過衛星,比如GPS或者北斗。也可以直接從網絡上的NTP服務器進行獲取。
[ gizwitsGetNTP函數 ]
基於機智雲的物聯網設備開發如何進行獲取NTP網絡時間,參考方式有兩種
1)視頻教學操作版:https://b23.tv/av61558323
特點:此方法通俗易懂,代碼添加原理、修改位置均知道
准備材料:機智雲自助開發平台賬號、開發版、機智雲APP
作用:節點的時間同步、采集地震的波形時進行每個節點的數據同步,調用gizwisGetNTP函數即可實現。
第一步:需要配網成功才能獲取精確時間 (配網成功返回一個值,添加一個標志位和變量,記住當前是否聯網的狀態)。
第二步:調用gizwitsGetNTP函數時不能一直調用,所以我們這里設置兩個定時器,(定時器初始化和一秒鍾的時間值)。
第三步:在中斷函數中編寫相關代碼(聯網成功時請求獲取時間、以及打印時間的函數)。
第四步:將程序編譯,無問題,則將程序下載到開發版中。
第四步:打開機智雲APP,進行配網,配網成功后,可以在XCOM中查看打印出的時間。
2)水墨畫定時控制系統之Gokit時間獲取及其分析:http://club.gizwits.com/thread-8037-1-1.html
3)MCU請求網絡時間例程:http://club.gizwits.com/thread-4088-1-1.html
4)Arduino獲取網絡時間:http://club.gizwits.com/thread-165362-1-1.html