?在LuatOS中,獲取時(shí)間函數(shù)用得最多的就是os.time()函數(shù)。
應(yīng)很多同學(xué)要求,今天,我會(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í)間戳,沒有毫秒以及微秒級(jí)時(shí)間戳,暫時(shí)沒有什么好的辦法解決該問題。
二、時(shí)間同步
理論上4G模塊在駐網(wǎng)(鏈接基站成功)以后,基站會(huì)發(fā)送當(dāng)前時(shí)間給4G模塊(此過程被稱為 基站授時(shí) )。也就是說,只要模塊駐網(wǎng)成功,內(nèi)部時(shí)間是沒有問題的,
但是,通過大量的事實(shí)驗(yàn)證下來,某運(yùn)營(yíng)商部分卡無法與基站進(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ā)出來再進(jìn)行。
LuatOS版****本示例:
?
AT版本:
可以查看開機(jī)的打印,開機(jī)打印如下。
?
注:此處時(shí)間為格林尼治時(shí)間,需要+8才是中國(guó)區(qū)時(shí)間。
2.2 NTP服務(wù)器授時(shí):
如果用戶對(duì)基站授時(shí)的準(zhǔn)確性有疑慮(之前也出現(xiàn)過基站授時(shí)比實(shí)際時(shí)間差了16天的情況),可以關(guān)閉基站授時(shí),轉(zhuǎn)而使用NTP授時(shí)服務(wù)器去給模塊進(jìn)行授時(shí)。
現(xiàn)在有一些免費(fè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)用的重要性就出來了。
用戶可以使用合宙自研低功耗模式,定時(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的余地。為了讓用戶無感升級(jí), 需要對(duì)OTA的時(shí)間進(jìn)行限制,比如凌晨0點(diǎn)。 但是如果所有設(shè)備都在凌晨0點(diǎn)對(duì)設(shè)備進(jìn)行升級(jí),升級(jí)服務(wù)器無法處理高并發(fā),可能會(huì)導(dǎo)致各種異常出現(xiàn)。
所以就需要在用戶指定的一個(gè)時(shí)間段內(nèi)進(jìn)行升級(jí),最為穩(wěn)妥。
接下來的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)用有其他疑問,歡迎來找合宙,咱們一起學(xué)習(xí)一起進(jìn)步。
審核編輯 黃宇
?
-
服務(wù)器
+關(guān)注
關(guān)注
12文章
9123瀏覽量
85322 -
NTP
+關(guān)注
關(guān)注
1文章
169瀏覽量
13890 -
時(shí)間函數(shù)
+關(guān)注
關(guān)注
0文章
2瀏覽量
5618
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論