?
一、NTP通信概述
很多場(chǎng)景中,由于業(yè)務(wù)需要,模塊需要保持正確的系統(tǒng)時(shí)鐘,才能正常工作。但是模塊上電后的初試時(shí)間戳是946713600(即2000/01/01,16:00:00),所以同步時(shí)鐘成為了開(kāi)發(fā)者要解決的重要問(wèn)題。對(duì)于Cat.1模塊,移動(dòng)/電信卡,通常會(huì)下發(fā)基站時(shí)間,那么sntp就不是必要的,而聯(lián)通卡通常不會(huì)下發(fā),就需要sntp了。
NTP(NetworkTimeProtocol,網(wǎng)絡(luò)時(shí)間協(xié)議) 是用于同步系統(tǒng)時(shí)間的協(xié)議。它通過(guò)網(wǎng)絡(luò)連接多個(gè)設(shè)備,確保這些設(shè)備的系統(tǒng)時(shí)鐘保持一致。
本例程展示了如何使用SNTP授時(shí)服務(wù)來(lái)同步時(shí)間。
NTP和簡(jiǎn)化版的SNTP主要區(qū)別在于精確度和復(fù)雜性。
SNTP(SimpleNetworkTimeProtocol)通常用于不需要高精度同步的設(shè)備,如嵌入式系統(tǒng)。而NTP則用于要求較高時(shí)間精度的場(chǎng)景。
二、演示功能概述
本demo將連接NTP服務(wù)器進(jìn)行時(shí)間同步。
三、準(zhǔn)備硬件環(huán)境
3.1 Air780E開(kāi)發(fā)板一套
3.2 PC電腦
WINDOWS系統(tǒng)。
3.3 SIM卡
請(qǐng)準(zhǔn)備一張可正常上網(wǎng)的SIM卡,該卡可以是物聯(lián)網(wǎng)卡或您的個(gè)人手機(jī)卡。
特別提醒:請(qǐng)確保SIM卡未欠費(fèi)且網(wǎng)絡(luò)功能正常,以便順利進(jìn)行后續(xù)操作。
3.4 數(shù)據(jù)通信線
typec接口USB數(shù)據(jù)線即可。
四、軟件環(huán)境
4.1 下載調(diào)試工具
使用說(shuō)明參考Luatools下載和詳細(xì)使用
五、獲取NTP授時(shí)軟硬件資料
5.1 文檔和工具
- 780E模塊使用固件:SDK&Demo-合宙文檔中心,本demo使用的固件版本是:
LuatOS-SoC_V1112_EC618_FULL.soc - 本教程使用的demo:
https://gitee.com/openLuat/LuatOS-Air780E/tree/master/demo/sntp - 將固件和腳本燒錄到模塊中:Luatools下載和使用教程-合宙模組資料中心
- 源碼和固件已打包,如下所示:右鍵點(diǎn)我,另存為,下載完整壓縮文件包
5.2 demo使用api介紹
socket.sntp(sntp_server)
作用:sntp時(shí)間同步
傳入值類(lèi)型 | 解釋 |
---|---|
string/table | sntp服務(wù)器地址選填 |
int | 適配器序號(hào),只能是socket.ETH0(外置以太網(wǎng)),socket.LWIP_ETH(內(nèi)置以太網(wǎng)),socket.LWIP_STA(內(nèi)置WIFI的STA),socket.LWIP_AP(內(nèi)置WIFI的AP),socket.LWIP_GP(內(nèi)置蜂窩網(wǎng)絡(luò)的GPRS),socket.USB(外置USB網(wǎng)卡), 如果不填,優(yōu)先選擇soc平臺(tái)自帶能上外網(wǎng)的適配器,若仍然沒(méi)有,選擇最后一個(gè)注冊(cè)的適配器。 |
返回值
無(wú)
os.time(mytime)
作用:時(shí)間戳函數(shù)
傳入值類(lèi)型 | 解釋 |
---|---|
table | 日期時(shí)間的table |
return | 時(shí)間戳 |
返回值
無(wú)
os.date(fmt,time)
作用:日期函數(shù)
參數(shù)
傳入值類(lèi)型 | 解釋 |
---|---|
string | 格式化字符串,可以是nil |
table | 日期時(shí)間的table |
返回值
返回值類(lèi)型 | 解釋 |
---|---|
table/string | 根據(jù)fmt的不同,返回值不同 |
json.encode(obj,t)
作用:將對(duì)象序列化為json字符串
參數(shù)
傳入值類(lèi)型 | 解釋 |
---|---|
obj | 需要序列化的對(duì)象 |
string | 浮點(diǎn)數(shù)精度和模式,這項(xiàng)不存在的時(shí)候,為默認(rèn)值”7f”,數(shù)字只支持”0~14”,模式只支持”f/g” |
返回值
返回值類(lèi)型 | 解釋 |
---|---|
string | 序列化后的json字符串,失敗的話返回nil |
string | 序列化失敗的報(bào)錯(cuò)信息 |
json.decode(str)
作用:將字符串反序列化為對(duì)象
參數(shù)
傳入值類(lèi)型 | 解釋 |
---|---|
string | 需要反序列化的json字符串 |
返回值
返回值類(lèi)型 | 解釋 |
---|---|
obj | 反序列化后的對(duì)象(通常是table),失敗的話返回nil |
result | 成功返回1,否則返回0 |
err | 反序列化失敗的報(bào)錯(cuò)信息 |
六、代碼示例
6.1 使用ntp服務(wù)器,同步時(shí)間
6.1.1 demo介紹
?
6.1.2 將程序下載到開(kāi)發(fā)板
參考:將固件和腳本燒錄到模塊中:Luatools下載和使用教程-合宙模組資料中心
七、功能驗(yàn)證
?
八、總結(jié)
本demo介紹了如何使用ntp服務(wù)器同步時(shí)間。
九、擴(kuò)展
常見(jiàn)問(wèn)題
9.1 多長(zhǎng)時(shí)間ntp同步一次?
正常使用,一小時(shí)一次,已經(jīng)足夠了,甚至1天一次也可以。
9.2 ntp同步時(shí)間后,這個(gè)clock精度高嗎,需要多久同步一次?
并不能保證任何時(shí)間任何地點(diǎn)都能百分百同步到正確的時(shí)間。所以,如果用戶項(xiàng)目中的業(yè)務(wù)邏輯嚴(yán)格依賴于時(shí)間同步功能則不要使用本功能模塊,建議使用自己的應(yīng)用服務(wù)器來(lái)同步時(shí)間。
9.3 這個(gè)函數(shù)socket.sntp()后每次在程序中調(diào)用os.time也是實(shí)時(shí)時(shí)間了嗎?
是的,只要時(shí)間同步成功了,就是實(shí)時(shí)時(shí)間了。
?審核編輯 黃宇
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2902文章
44110瀏覽量
370402 -
NTP
+關(guān)注
關(guān)注
1文章
155瀏覽量
13871 -
sntp
+關(guān)注
關(guān)注
0文章
5瀏覽量
3694
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論