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