本發(fā)明涉及物聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其涉及一種基于設(shè)備快照的物聯(lián)網(wǎng)智能設(shè)備狀態(tài)同步方法及系統(tǒng)。
背景技術(shù):
物聯(lián)網(wǎng)平臺(tái)指的是將無處不在的末端設(shè)備和設(shè)施,包括具備物聯(lián)網(wǎng)技術(shù)“內(nèi)在智能”的傳感器、移動(dòng)終端、工業(yè)系統(tǒng)、數(shù)控系統(tǒng)、家庭智能設(shè)施、視頻監(jiān)控系統(tǒng)等,如貼上rfid的各種資產(chǎn)、攜帶無線終端的個(gè)人與車輛等等“智能化物件”,通過各種無線或有線的長距離或短距離通訊網(wǎng)絡(luò)實(shí)現(xiàn)互聯(lián)互通(m2m)、應(yīng)用大集成、以及基于云計(jì)算的saas營運(yùn)等模式,在內(nèi)網(wǎng)、專網(wǎng)、互聯(lián)網(wǎng)環(huán)境下,采用適當(dāng)?shù)男畔踩U蠙C(jī)制,提供安全可控乃至個(gè)性化的實(shí)時(shí)在線監(jiān)測、定位追溯、報(bào)警聯(lián)動(dòng)、調(diào)度指揮、預(yù)案管理、遠(yuǎn)程控制、安全防范、遠(yuǎn)程維保、在線升級、統(tǒng)計(jì)報(bào)表、決策支持等管理和服務(wù)功能,實(shí)現(xiàn)對“萬物”的“高效、節(jié)能、安全、環(huán)保”的“管、控、營”一體化的平臺(tái)。
物聯(lián)網(wǎng)技術(shù)中,由于會(huì)同時(shí)控制多個(gè)智能設(shè)備,因此對智能設(shè)備的狀態(tài)監(jiān)控及同步尤為重要。
如申請?zhí)枮閏n201310581025.0的專利文獻(xiàn)公開的“設(shè)備狀態(tài)同步控制方法和家電設(shè)備”,該發(fā)明提供了一種設(shè)備狀態(tài)同步控制方法和一種家電設(shè)備,其中設(shè)備狀態(tài)同步控制方法包括:記錄多個(gè)與家電設(shè)備建立通信連接的控制終端的在線信息;在家電設(shè)備的狀態(tài)信息被更新時(shí),根據(jù)記錄的在線信息,將家電設(shè)備的最新狀態(tài)信息通知每一控制終端,供每一控制終端顯示。
又如申請?zhí)枮閏n201410706098.2的專利文獻(xiàn)公開的“一種調(diào)整智能家居設(shè)備運(yùn)行狀態(tài)的方法及裝置”,該發(fā)明是關(guān)于一種調(diào)整智能家居設(shè)備運(yùn)行狀態(tài)的方法及裝置,用以提高用戶調(diào)整智能家居設(shè)備運(yùn)行狀態(tài)的便利性。所述方法包括:監(jiān)聽所述移動(dòng)終端上的用于控制所述智能家居設(shè)備的應(yīng)用上的設(shè)備列表;在監(jiān)聽到用戶在所述設(shè)備列表中選定的智能家居設(shè)備的創(chuàng)建快捷方式的第一按鍵消息時(shí),在所述移動(dòng)終端的桌面上創(chuàng)建用于控制所述智能家居設(shè)備的所述快捷按鍵;通過控制所述快捷按鍵調(diào)整所述智能家居設(shè)備的當(dāng)前狀態(tài)。
實(shí)際應(yīng)用中,智能設(shè)備的狀態(tài)信息需要同步到手機(jī)app,比如空調(diào)上的室內(nèi)溫度,比如門鎖的開關(guān)狀態(tài),或者是sd卡格式化的進(jìn)度等等。
如果利用現(xiàn)有技術(shù),直接讓智能設(shè)備發(fā)送消息給手機(jī)app同步信息,會(huì)存在以下問題:
(1)一臺(tái)智能設(shè)備可能會(huì)有多個(gè)綁定者,狀態(tài)的同步是不能只同步給一個(gè)綁定者的,所以用發(fā)消息的方案會(huì)需要知道所有綁定者,然后需要挨個(gè)發(fā)送一遍。
(2)狀態(tài)的變更有可能是頻繁的,很多情況下最后一次的狀態(tài)才是最重要的,而消息通道往往是以可靠不丟消息為設(shè)計(jì)目標(biāo)的,這就意味著用戶可能在早晨起床喚起手機(jī)app后收到上千條狀態(tài)消息。
技術(shù)實(shí)現(xiàn)要素:
針對上述現(xiàn)有技術(shù)的現(xiàn)狀,本發(fā)明目的在于提供一種基于設(shè)備快照的物聯(lián)網(wǎng)智能設(shè)備狀態(tài)同步方法及系統(tǒng),可解決過多的設(shè)備狀態(tài)消息發(fā)送給用戶的問題以及多個(gè)用戶不能同時(shí)收到設(shè)備狀態(tài)消息的問題。
本發(fā)明解決上述技術(shù)問題所采用的技術(shù)方案為:
一種基于設(shè)備快照的物聯(lián)網(wǎng)智能設(shè)備狀態(tài)同步方法,包括步驟:
s1.獲取智能設(shè)備當(dāng)前狀態(tài)信息;
s2.獲取狀態(tài)偏差信息,所述狀態(tài)偏差信息包括:智能設(shè)備狀態(tài)改變請求、智能設(shè)備狀態(tài)改變控制命令;
s3.接收并通過所述智能設(shè)備狀態(tài)改變請求,根據(jù)所述智能設(shè)備狀態(tài)改變控制命令更改所述智能設(shè)備狀態(tài)。
進(jìn)一步地,步驟s1具體為:
a1.智能設(shè)備基于mqtt協(xié)議建立與云端的通信連接;
a2.智能設(shè)備發(fā)送當(dāng)前狀態(tài)信息至云端設(shè)備快照;
a3.云端設(shè)備快照接收智能設(shè)備發(fā)送的當(dāng)前狀態(tài)信息,并將所述當(dāng)前狀態(tài)信息保存至云端數(shù)據(jù)庫內(nèi)。
進(jìn)一步地,步驟a1具體為:
a11.智能設(shè)備使用控制臺(tái)申請的密鑰進(jìn)行簽名請求授權(quán);
a12.云端服務(wù)器驗(yàn)證簽名是否合法,若合法,則返回pubkey證書;
a13.智能設(shè)備使用pubkey證書tls協(xié)議連接mqtt。
進(jìn)一步地,步驟s2具體為:
b1.應(yīng)用程序向云端設(shè)備快照請求獲取所述智能設(shè)備的當(dāng)前狀態(tài)信息;
b2.云端設(shè)備快照接收請求后,從云端數(shù)據(jù)庫內(nèi)獲取所述智能設(shè)備的當(dāng)前狀態(tài)信息,并發(fā)送所述當(dāng)前狀態(tài)信息至應(yīng)用程序;
b3.應(yīng)用程序接收所述智能設(shè)備當(dāng)前狀態(tài)信息后,將所述當(dāng)前狀態(tài)信息與預(yù)期狀態(tài)信息比對,獲取狀態(tài)偏差信息,并將所述狀態(tài)偏差信息發(fā)送至云端設(shè)備快照。
進(jìn)一步地,步驟s3具體為:
c1.云端設(shè)備快照接收并通過所述應(yīng)用程序發(fā)送的智能設(shè)備狀態(tài)改變請求;
c2.若所述智能設(shè)備為在線狀態(tài),則云端設(shè)備快照發(fā)送所述智能設(shè)備狀態(tài)改變控制命令至所述智能設(shè)備;
c3.智能設(shè)備接收所述智能設(shè)備狀態(tài)改變控制命令,并做對應(yīng)狀態(tài)改變。
進(jìn)一步地,步驟c2還包括:
若所述智能設(shè)備為離線狀態(tài),則云端設(shè)備快照保存所述智能設(shè)備狀態(tài)改變控制命令。
進(jìn)一步地,當(dāng)智能設(shè)備上線后,判斷所述智能設(shè)備是否存在狀態(tài)改變:
若不存在,則云端設(shè)備快照將所述保存的智能設(shè)備狀態(tài)改變控制命令發(fā)送至所述智能設(shè)備;
若存在,則云端設(shè)備快照獲取所述智能設(shè)備的新的當(dāng)前狀態(tài)信息,發(fā)送所述新的當(dāng)前狀態(tài)信息至應(yīng)用程序,并返回步驟b3。
一種基于設(shè)備快照的物聯(lián)網(wǎng)智能設(shè)備狀態(tài)同步系統(tǒng),包括云端設(shè)備快照模塊、智能設(shè)備sdk模塊、移動(dòng)終端應(yīng)用程序sdk模塊;
所述云端設(shè)備快照模塊包括:
第一獲取單元,用于獲取智能設(shè)備當(dāng)前狀態(tài)信息;
第二獲取單元,用于獲取狀態(tài)偏差信息,所述狀態(tài)偏差信息包括:智能設(shè)備狀態(tài)改變請求、智能設(shè)備狀態(tài)改變控制命令;
執(zhí)行單元,用于接收并通過所述智能設(shè)備狀態(tài)改變請求,根據(jù)所述智能設(shè)備狀態(tài)改變控制命令更改所述智能設(shè)備狀態(tài);
所述智能設(shè)備sdk模塊用于與云端進(jìn)行通信,并發(fā)送智能設(shè)備當(dāng)前狀態(tài)信息至云端設(shè)備快照模塊;
所述移動(dòng)終端應(yīng)用程序sdk模塊用于將所述當(dāng)前狀態(tài)信息與預(yù)期狀態(tài)信息比對,獲取狀態(tài)偏差信息,并將所述狀態(tài)偏差信息發(fā)送至云端設(shè)備快照。
進(jìn)一步地,所述智能設(shè)備sdk模塊包括:
通信單元,用于基于mqtt協(xié)議建立與云端的通信連接;
第一發(fā)送單元,用于發(fā)送智能設(shè)備當(dāng)前狀態(tài)信息至云端設(shè)備快照。
進(jìn)一步地,所述移動(dòng)終端應(yīng)用程序sdk模塊包括:
請求單元,用于向云端設(shè)備快照模塊請求獲取智能設(shè)備的當(dāng)前狀態(tài)信息;
對比單元,用于在接收智能設(shè)備的當(dāng)前狀態(tài)信息后,將所述當(dāng)前狀態(tài)信息與預(yù)期狀態(tài)信息比對,獲取狀態(tài)偏差信息;
第二發(fā)送單元,用于將所述狀態(tài)偏差信息發(fā)送至云端設(shè)備快照模塊。
本發(fā)明提供一種基于設(shè)備快照的物聯(lián)網(wǎng)智能設(shè)備狀態(tài)同步方法及系統(tǒng),可解決過多的設(shè)備狀態(tài)消息發(fā)送給用戶的問題,此外,通過設(shè)置智能設(shè)備預(yù)期狀態(tài)信息,能有效對智能設(shè)備進(jìn)行狀態(tài)監(jiān)測及控制。
附圖說明
圖1為本發(fā)明實(shí)施例中一種基于設(shè)備快照的物聯(lián)網(wǎng)智能設(shè)備狀態(tài)同步方法流程圖;
圖2為本發(fā)明實(shí)施例中一種基于設(shè)備快照的物聯(lián)網(wǎng)智能設(shè)備狀態(tài)同步系統(tǒng)結(jié)構(gòu)圖;
圖3為本發(fā)明實(shí)施例一中云端設(shè)備快照模塊結(jié)構(gòu)圖;
圖4為本發(fā)明實(shí)施例一中智能設(shè)備sdk模塊結(jié)構(gòu)圖;
圖5為本發(fā)明實(shí)施例一中移動(dòng)終端應(yīng)用程序sdk模塊結(jié)構(gòu)圖。
具體實(shí)施方式
以下是本發(fā)明的具體實(shí)施例并結(jié)合附圖,對本發(fā)明的技術(shù)方案作進(jìn)一步的描述,但本發(fā)明并不限于這些實(shí)施例。
本發(fā)明基于設(shè)備快照來保存設(shè)備的最新狀態(tài)或者app希望的最新狀態(tài)在云端,然后當(dāng)設(shè)備或app連接上來時(shí),同步狀態(tài)給設(shè)備或app。
本發(fā)明涉及到三個(gè)模塊,第一是智能設(shè)備sdk模塊,此模塊負(fù)責(zé)將當(dāng)前狀態(tài)上報(bào)至一個(gè)或多個(gè)設(shè)備快照,并可從設(shè)備快照獲取期望的狀態(tài);第二是云端設(shè)備快照模塊,此模塊負(fù)責(zé)管理狀態(tài)偏差、預(yù)期狀態(tài)、上報(bào)狀態(tài)、元數(shù)據(jù)和版本;第三是移動(dòng)終端的appsdk模塊,此模塊負(fù)責(zé)改變設(shè)備狀態(tài)、獲取設(shè)備最后一次上報(bào)的狀態(tài)和刪除設(shè)備快照。
以下為本發(fā)明具體實(shí)施例。
實(shí)施例一
如圖1所示為本實(shí)施例中一種基于設(shè)備快照的物聯(lián)網(wǎng)智能設(shè)備狀態(tài)同步方法流程圖,該方法包括步驟:
s1.獲取智能設(shè)備當(dāng)前狀態(tài)信息;
s2.獲取狀態(tài)偏差信息,所述狀態(tài)偏差信息包括:智能設(shè)備狀態(tài)改變請求、智能設(shè)備狀態(tài)改變控制命令;
s3.接收并通過所述智能設(shè)備狀態(tài)改變請求,根據(jù)所述智能設(shè)備狀態(tài)改變控制命令更改所述智能設(shè)備狀態(tài)。
步驟s1具體為:
a1.智能設(shè)備基于mqtt協(xié)議建立與云端的通信連接;
a2.智能設(shè)備發(fā)送當(dāng)前狀態(tài)信息至云端設(shè)備快照;
本步驟中,智能設(shè)備發(fā)布當(dāng)前狀態(tài)給設(shè)備快照
智能設(shè)備發(fā)布消息到如以下格式的事件主題:
iot/event/event_id/state/format_string。
發(fā)布的消息符合上述定義的json字符串格式。
a3.云端設(shè)備快照接收智能設(shè)備發(fā)送的當(dāng)前狀態(tài)信息,并將所述當(dāng)前狀態(tài)信息保存至云端數(shù)據(jù)庫內(nèi)。
本步驟中,設(shè)備快照預(yù)先訂閱好上述的topic,當(dāng)設(shè)備發(fā)送狀態(tài)消息后,消息broker會(huì)立即監(jiān)聽到并把消息轉(zhuǎn)發(fā)給設(shè)備快照,設(shè)備快照收到j(luò)son格式的消息后進(jìn)行解析處理并保存數(shù)據(jù)到數(shù)據(jù)庫。一年之內(nèi)對設(shè)備的狀態(tài)數(shù)據(jù)有過更新的歷史都將保存。
設(shè)備快照是物聯(lián)網(wǎng)平臺(tái)在云端的軟件系統(tǒng),設(shè)備保留每臺(tái)設(shè)備的最后報(bào)告狀態(tài)和期望的未來狀態(tài),即便設(shè)備處于離線狀態(tài)。
app可通過httpsapi獲取設(shè)備的最后報(bào)告狀態(tài)或設(shè)置期望的未來狀態(tài)。在設(shè)置設(shè)備的期望未來狀態(tài)時(shí)無需說明設(shè)備的當(dāng)前狀態(tài)。
設(shè)備sdk負(fù)責(zé)同步其設(shè)備自身狀態(tài)及其設(shè)備快照狀態(tài),并響應(yīng)通過設(shè)備快照設(shè)置的期望的未來狀態(tài)。
設(shè)備快照存儲(chǔ)設(shè)備狀態(tài)最長時(shí)間為一年。如果至少每年更新一次狀態(tài),則設(shè)備快照將永久保留狀態(tài);否則狀態(tài)將過期。
步驟s2具體為:
b1.應(yīng)用程序向云端設(shè)備快照請求獲取所述智能設(shè)備的當(dāng)前狀態(tài)信息;
本步驟中,app通過httpsapi請求賬戶所綁定的設(shè)備的當(dāng)前狀態(tài),設(shè)備快照接收請求后從數(shù)據(jù)庫中讀取設(shè)備的最新狀態(tài)并返回給app。同時(shí),app也作為訂閱者訂閱了此設(shè)備快照的狀態(tài)更新topic。多個(gè)賬戶的app可同時(shí)訂閱單個(gè)設(shè)備快照的topic,消息broker可同時(shí)轉(zhuǎn)發(fā)給這些訂閱者消息。
b2.云端設(shè)備快照接收請求后,從云端數(shù)據(jù)庫內(nèi)獲取所述智能設(shè)備的當(dāng)前狀態(tài)信息,并發(fā)送所述當(dāng)前狀態(tài)信息至應(yīng)用程序;
本步驟中,app通過httpsapi請求改變賬戶所綁定的設(shè)備的狀態(tài),也就是給快照設(shè)置用戶想要的預(yù)期的狀態(tài)。app將json格式的數(shù)據(jù)發(fā)送給設(shè)備快照,json格式的數(shù)據(jù)中包含了狀態(tài)改變的控制命令。
b3.應(yīng)用程序接收所述智能設(shè)備當(dāng)前狀態(tài)信息后,將所述當(dāng)前狀態(tài)信息與預(yù)期狀態(tài)信息比對,獲取狀態(tài)偏差信息,并將所述狀態(tài)偏差信息發(fā)送至云端設(shè)備快照。
如圖2所示為本實(shí)施例中一種基于設(shè)備快照的物聯(lián)網(wǎng)智能設(shè)備狀態(tài)同步系統(tǒng)結(jié)構(gòu)圖,該系統(tǒng)包括云端設(shè)備快照模塊100、智能設(shè)備sdk模塊200、移動(dòng)終端應(yīng)用程序sdk模塊300;
云端設(shè)備快照模塊100負(fù)責(zé)管理狀態(tài)偏差、預(yù)期狀態(tài)、上報(bào)狀態(tài)、元數(shù)據(jù)和版本。
狀態(tài)偏差指的是設(shè)備上報(bào)狀態(tài)與預(yù)期狀態(tài)的偏差;
元數(shù)據(jù)指的是設(shè)備的基本信息;
版本指的是設(shè)備固件的版本。
如圖3所示為本實(shí)施例中云端設(shè)備快照模塊100結(jié)構(gòu)圖,該結(jié)構(gòu)包括:
第一獲取單元110,用于獲取智能設(shè)備當(dāng)前狀態(tài)信息;
第二獲取單元120,用于獲取狀態(tài)偏差信息,所述狀態(tài)偏差信息包括:智能設(shè)備狀態(tài)改變請求、智能設(shè)備狀態(tài)改變控制命令;
執(zhí)行單元130,用于接收并通過所述智能設(shè)備狀態(tài)改變請求,根據(jù)所述智能設(shè)備狀態(tài)改變控制命令更改所述智能設(shè)備狀態(tài);
所述智能設(shè)備sdk模塊200用于與云端進(jìn)行通信,并發(fā)送智能設(shè)備當(dāng)前狀態(tài)信息至云端設(shè)備快照模塊;
所述移動(dòng)終端應(yīng)用程序sdk模塊300用于將所述當(dāng)前狀態(tài)信息與預(yù)期狀態(tài)信息比對,獲取狀態(tài)偏差信息,并將所述狀態(tài)偏差信息發(fā)送至云端設(shè)備快照。
如圖4所示為本實(shí)施例中智能設(shè)備sdk模塊200結(jié)構(gòu)圖,該結(jié)構(gòu)包括:
通信單元210,用于基于mqtt協(xié)議建立與云端的通信連接;
第一發(fā)送單元220,用于發(fā)送智能設(shè)備當(dāng)前狀態(tài)信息至云端設(shè)備快照。
如圖5所示為本實(shí)施例中移動(dòng)終端應(yīng)用程序sdk模塊300結(jié)構(gòu)圖,該結(jié)構(gòu)包括:
請求單元310,用于向云端設(shè)備快照模塊請求獲取智能設(shè)備的當(dāng)前狀態(tài)信息;
對比單元320,用于在接收智能設(shè)備的當(dāng)前狀態(tài)信息后,將所述當(dāng)前狀態(tài)信息與預(yù)期狀態(tài)信息比對,獲取狀態(tài)偏差信息;
第二發(fā)送單元330,用于將所述狀態(tài)偏差信息發(fā)送至云端設(shè)備快照模塊。
本實(shí)施例提供一種基于設(shè)備快照的物聯(lián)網(wǎng)智能設(shè)備狀態(tài)同步方法及系統(tǒng),可解決過多的設(shè)備狀態(tài)消息發(fā)送給用戶的問題,此外,通過設(shè)置智能設(shè)備預(yù)期狀態(tài)信息,能有效對智能設(shè)備進(jìn)行狀態(tài)監(jiān)測及控制。
實(shí)施例二
本實(shí)施例為智能設(shè)備接入云端并建立通信連接的具體介紹。
參考圖1,本實(shí)施例中,一種基于設(shè)備快照的物聯(lián)網(wǎng)智能設(shè)備狀態(tài)同步方法包括步驟:
s1.獲取智能設(shè)備當(dāng)前狀態(tài)信息;
s2.獲取狀態(tài)偏差信息,所述狀態(tài)偏差信息包括:智能設(shè)備狀態(tài)改變請求、智能設(shè)備狀態(tài)改變控制命令;
s3.接收并通過所述智能設(shè)備狀態(tài)改變請求,根據(jù)所述智能設(shè)備狀態(tài)改變控制命令更改所述智能設(shè)備狀態(tài)。
步驟s1中,智能設(shè)備基于mqtt協(xié)議建立與云端的通信連接。
mqtt協(xié)議是為大量計(jì)算能力有限,且工作在低帶寬、不可靠的網(wǎng)絡(luò)的遠(yuǎn)程傳感器和控制設(shè)備通訊而設(shè)計(jì)的協(xié)議,它具有以下主要的幾項(xiàng)特性:
1、使用發(fā)布/訂閱消息模式,提供一對多的消息發(fā)布,解除應(yīng)用程序耦合;
2、對負(fù)載內(nèi)容屏蔽的消息傳輸;
3、使用tcp/ip提供網(wǎng)絡(luò)連接;
4、有三種消息發(fā)布服務(wù)質(zhì)量:
“至多一次”,消息發(fā)布完全依賴底層tcp/ip網(wǎng)絡(luò)。會(huì)發(fā)生消息丟失或重復(fù)。這一級別可用于如下情況,環(huán)境傳感器數(shù)據(jù),丟失一次讀記錄無所謂,因?yàn)椴痪煤筮€會(huì)有第二次發(fā)送。
“至少一次”,確保消息到達(dá),但消息重復(fù)可能會(huì)發(fā)生。
“只有一次”,確保消息到達(dá)一次。這一級別可用于如下情況,在計(jì)費(fèi)系統(tǒng)中,消息重復(fù)或丟失會(huì)導(dǎo)致不正確的結(jié)果。
5、小型傳輸,開銷很小(固定長度的頭部是2字節(jié)),協(xié)議交換最小化,以降低網(wǎng)絡(luò)流量;
6、使用lastwill和testament特性通知有關(guān)各方客戶端異常中斷的機(jī)制;
本實(shí)施例中,智能設(shè)備基于mqtt協(xié)議建立與云端的通信連接步驟具體為:
a11.智能設(shè)備使用控制臺(tái)申請的密鑰進(jìn)行簽名請求授權(quán);
本步驟中,設(shè)備使用控制臺(tái)申請的密鑰進(jìn)行簽名請求授權(quán),簽名使用hmacmd5算法(可選hmacsha1、md5),簽名內(nèi)容=devieceid+appkey,使用key=appsecret+devicesecret。
a12.云端服務(wù)器驗(yàn)證簽名是否合法,若合法,則返回pubkey證書;
本步驟中,服務(wù)器驗(yàn)證簽名合法,并返回pubkey證書(x.509格式base64)。
a13.智能設(shè)備使用pubkey證書tls協(xié)議連接mqtt。
本步驟中,設(shè)備使用pubkey證書tls協(xié)議連接mqtt。
智能設(shè)備與云端的通信模式采用發(fā)布/訂閱模式,基于topic進(jìn)行消息的路由轉(zhuǎn)發(fā),讓設(shè)備端或者服務(wù)端可以發(fā)布訂閱消息,實(shí)現(xiàn)異步的通信。適用的場景有設(shè)備端與云端的異步通信,也可以適用m2m(設(shè)備與設(shè)備間通信)。
云端平臺(tái)消息broker維護(hù)所有topic的發(fā)布訂閱用戶列表。當(dāng)消息發(fā)送到topic,消息broker會(huì)檢查該topic的所有訂閱用戶,然后將消息轉(zhuǎn)發(fā)給所有具有訂閱該topic權(quán)限的客戶端或者服務(wù)端。
本實(shí)施例中,通信數(shù)據(jù)的格式采用json格式,包含期望狀態(tài)、上報(bào)狀態(tài)、狀態(tài)偏差、元數(shù)據(jù)、版本等數(shù)據(jù),舉例定義如下:
實(shí)施例三
本實(shí)施例為控制智能設(shè)備進(jìn)行狀態(tài)改變的具體介紹。
參考圖1,本實(shí)施例中,一種基于設(shè)備快照的物聯(lián)網(wǎng)智能設(shè)備狀態(tài)同步方法包括步驟:
s1.獲取智能設(shè)備當(dāng)前狀態(tài)信息;
s2.獲取狀態(tài)偏差信息,所述狀態(tài)偏差信息包括:智能設(shè)備狀態(tài)改變請求、智能設(shè)備狀態(tài)改變控制命令;
s3.接收并通過所述智能設(shè)備狀態(tài)改變請求,根據(jù)所述智能設(shè)備狀態(tài)改變控制命令更改所述智能設(shè)備狀態(tài)。
步驟s3具體為:
c1.云端設(shè)備快照接收并通過所述應(yīng)用程序發(fā)送的智能設(shè)備狀態(tài)改變請求;
c2.若所述智能設(shè)備為在線狀態(tài),則云端設(shè)備快照發(fā)送所述智能設(shè)備狀態(tài)改變控制命令至所述智能設(shè)備;
c3.智能設(shè)備接收所述智能設(shè)備狀態(tài)改變控制命令,并做對應(yīng)狀態(tài)改變。
設(shè)備快照接收請求后,如果設(shè)備在線則通過mqtt協(xié)議下發(fā)給設(shè)備,如果設(shè)備離線,則保存此命令,以此狀態(tài)作為app期望設(shè)備達(dá)到的狀態(tài)。后續(xù)設(shè)備上線后,如果有狀態(tài)變更,則設(shè)備快照忽略中間頻繁的狀態(tài)上報(bào),以之前所設(shè)的預(yù)期的狀態(tài)來確認(rèn)設(shè)備狀態(tài)的改變,并以此確認(rèn)的狀態(tài)發(fā)送給app。
步驟c2還包括:
若所述智能設(shè)備為離線狀態(tài),則云端設(shè)備快照保存所述智能設(shè)備狀態(tài)改變控制命令。
當(dāng)智能設(shè)備上線后,判斷所述智能設(shè)備是否存在狀態(tài)改變:
若不存在,則云端設(shè)備快照將所述保存的智能設(shè)備狀態(tài)改變控制命令發(fā)送至所述智能設(shè)備;
若存在,則云端設(shè)備快照獲取所述智能設(shè)備的新的當(dāng)前狀態(tài)信息,發(fā)送所述新的當(dāng)前狀態(tài)信息至應(yīng)用程序,并返回實(shí)施例一中的步驟b3。
本文中所描述的具體實(shí)施例僅僅是對本發(fā)明精神作舉例說明。本發(fā)明所屬技術(shù)領(lǐng)域的技術(shù)人員可以對所描述的具體實(shí)施例做各種各樣的修改或補(bǔ)充或采用類似的方式替代,但并不會(huì)偏離本發(fā)明的精神或者超越所附權(quán)利要求書所定義的范圍。