方案使用阿里云物聯(lián)網(wǎng)平臺(tái),基本無(wú)需服務(wù)端開發(fā)的輕量級(jí)的方案。大概流程如下:

消息隊(duì)列RocketMQ
當(dāng)設(shè)備基于Topic進(jìn)行通信時(shí),可以在數(shù)據(jù)流轉(zhuǎn)中,編寫SQL對(duì)Topic中的數(shù)據(jù)進(jìn)行處理,并配置轉(zhuǎn)發(fā)規(guī)則將處理后的數(shù)據(jù)轉(zhuǎn)發(fā)到消息隊(duì)列RocketMQ,還可以通過(guò)添加錯(cuò)誤操作將正常操作中因?qū)嵗蚺渲脝?wèn)題流轉(zhuǎn)失敗的數(shù)據(jù)再次流轉(zhuǎn)。
舉例說(shuō)明如下:
處理數(shù)據(jù):
創(chuàng)建數(shù)據(jù)流轉(zhuǎn)規(guī)則時(shí),需編寫SQL來(lái)解析和處理設(shè)備上報(bào)的JSON數(shù)據(jù)

SELECTdeviceName()asdeviceName, items.CurrentHumidity.valueasHumidity, items.CurrentTemperature.valueasTemperatureFROM"/sysa15NNfl****/N5KUR***/thing/event/property/post"WHEREitems.CurrentTemperature.value>38
數(shù)據(jù)轉(zhuǎn)發(fā):

錯(cuò)誤操作:
消息轉(zhuǎn)發(fā)至云產(chǎn)品失敗后,會(huì)進(jìn)行重試。若重試失敗,將根據(jù)錯(cuò)誤操作數(shù)據(jù)轉(zhuǎn)發(fā)的設(shè)置轉(zhuǎn)發(fā)錯(cuò)誤消息。

微消息隊(duì)列MQTT版
可以支持消息隊(duì)列RocketMQ和消息隊(duì)列MQTT的消息互通,從而實(shí)現(xiàn)設(shè)備端和云端的雙向打通。微消息隊(duì)列MQTT在數(shù)據(jù)傳輸層支持TCP長(zhǎng)連接、SSL加密、WebSocket等。技術(shù)棧如下所示:

通過(guò)配置規(guī)則和傳統(tǒng)服務(wù)端消息中間件消息隊(duì)列RocketMQ來(lái)實(shí)現(xiàn)云和端的數(shù)據(jù)雙向互通
創(chuàng)建數(shù)據(jù)流入規(guī)則,舉例說(shuō)明如下:



至此,方案中最主要的部分已經(jīng)實(shí)現(xiàn)了。