?合宙嵌入式操作系統(tǒng)LuatOS——在蜂窩物聯(lián)網(wǎng)模組上推出開(kāi)源二次開(kāi)發(fā)框架,功能齊全性能穩(wěn)定,可大幅度降低用戶的研發(fā)成本和研發(fā)周期。
在LuatOS中,獲取時(shí)間函數(shù)用得最多的就是os.time()函數(shù)了。 接下來(lái),我會(huì)講一些與這個(gè)函數(shù)以及其他時(shí)間函數(shù)相關(guān)的知識(shí)。
一、時(shí)間戳相關(guān)
os.time()這個(gè)函數(shù),只能獲取當(dāng)前時(shí)間戳;如果客戶希望獲取的是當(dāng)前時(shí)間,即相應(yīng)的年月日時(shí)分秒,可以使用os.date()函數(shù)。
參考下面的示例**:**
?
關(guān)于位數(shù):
比較遺憾的是,Lua只有秒級(jí)時(shí)間戳,沒(méi)有毫秒以及微秒級(jí)時(shí)間戳,暫時(shí)沒(méi)有什么好的辦法解決該問(wèn)題。
二、時(shí)間同步
理論上4G模塊在駐網(wǎng)(鏈接基站成功)以后,基站會(huì)發(fā)送當(dāng)前時(shí)間給4G模塊(此過(guò)程被稱為 基站授時(shí) )。也就是說(shuō),只要模塊駐網(wǎng)成功,內(nèi)部時(shí)間是沒(méi)有問(wèn)題的,
但是,通過(guò)大量的事實(shí)驗(yàn)證下來(lái),某運(yùn)營(yíng)商部分卡無(wú)法與基站進(jìn)行授時(shí)操作,部分基站同步給4G模塊的時(shí)間也有極小概率出錯(cuò)。
所以,除了基站授時(shí),預(yù)備情況下,還準(zhǔn)備了NTP授時(shí)服務(wù)器對(duì)模塊進(jìn)行授時(shí)操作。 此處專網(wǎng)卡客戶需要注意 —— 如果時(shí)間參數(shù)對(duì)你比較重要,需要將NTP授時(shí)服務(wù)器的域名加入運(yùn)營(yíng)商白名單中。
2.1 基站時(shí)間同步:
除上述某運(yùn)營(yíng)商的部分卡以外,多數(shù)情況下,只要駐網(wǎng)成功內(nèi)部就會(huì)更新時(shí)間。
如果駐網(wǎng)不成功,那么4G模塊會(huì)從2000年00時(shí)00分00秒進(jìn)行計(jì)時(shí)。所以用戶需要獲取時(shí)間的應(yīng)用場(chǎng)景下,盡量等到聯(lián)網(wǎng)成功,有時(shí)間同步信息發(fā)出來(lái)再進(jìn)行。
LuatOS版****本示例:
?
AT版本:
可以查看開(kāi)機(jī)的打印,開(kāi)機(jī)打印如下。
?
注:此處時(shí)間為格林尼治時(shí)間,需要+8才是中國(guó)區(qū)時(shí)間。
2.2 NTP服務(wù)器授時(shí):
如果用戶對(duì)基站授時(shí)的準(zhǔn)確性有疑慮(之前也出現(xiàn)過(guò)基站授時(shí)比實(shí)際時(shí)間差了16天的情況),可以關(guān)閉基站授時(shí),轉(zhuǎn)而使用NTP授時(shí)服務(wù)器去給模塊進(jìn)行授時(shí)。
現(xiàn)在有一些免費(fèi)公開(kāi)的NTP授時(shí)服務(wù)器,如阿里云、騰訊云。
當(dāng)然,如果對(duì)授時(shí)要求比較高,需要穩(wěn)定可靠的時(shí)間同步機(jī)制——建議自建NTP授時(shí)服務(wù)器。
LuatOS版本示例:
?
三、基礎(chǔ)應(yīng)用
定時(shí)休眠定時(shí)喚醒:
在一些對(duì)功耗要求比較嚴(yán)格,但是只需要定時(shí)數(shù)傳的場(chǎng)景下,時(shí)間應(yīng)用的重要性就出來(lái)了。
用戶可以使用合宙自研低功耗模式,定時(shí)喚醒模塊進(jìn)行數(shù)傳,數(shù)傳后又進(jìn)入休眠模式。具體實(shí)現(xiàn)可以參考下方鏈接。
**四、進(jìn)階應(yīng)用 **
獲取當(dāng)前時(shí)間的后一天凌晨零點(diǎn)到一點(diǎn)隨機(jī)時(shí)間戳:
多數(shù)情況下,需要對(duì)系統(tǒng)留有OTA的余地。為了讓用戶無(wú)感升級(jí), 需要對(duì)OTA的時(shí)間進(jìn)行限制,比如凌晨0點(diǎn)。 但是如果所有設(shè)備都在凌晨0點(diǎn)對(duì)設(shè)備進(jìn)行升級(jí),升級(jí)服務(wù)器無(wú)法處理高并發(fā),可能會(huì)導(dǎo)致各種異常出現(xiàn)。
所以就需要在用戶指定的一個(gè)時(shí)間段內(nèi)進(jìn)行升級(jí),最為穩(wěn)妥。
接下來(lái)的LuatOS腳本,就獲取到了當(dāng)前時(shí)間的后一天凌晨零點(diǎn)到凌晨一點(diǎn)的隨機(jī)時(shí)間戳,并與當(dāng)前時(shí)間戳進(jìn)行計(jì)算,好給休眠模式下的OTA應(yīng)用做出一個(gè)具體的休眠時(shí)間(秒數(shù))設(shè)置。
LuatOS版本示例:
?
今天就分享到這里了~如果你對(duì)時(shí)間應(yīng)用有其他疑問(wèn),歡迎來(lái)找合宙,咱們一起學(xué)習(xí)一起進(jìn)步。
?
審核編輯 黃宇
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2902文章
44122瀏覽量
370427 -
OTA
+關(guān)注
關(guān)注
7文章
566瀏覽量
35107 -
LuatOS
+關(guān)注
關(guān)注
0文章
59瀏覽量
1919
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論