一、設(shè)備數(shù)據(jù)流向(設(shè)備上報)
硬件客戶端通過dtu或者模組上報數(shù)據(jù),從mqttBroker經(jīng)過mq轉(zhuǎn)發(fā)到網(wǎng)關(guān)模塊,網(wǎng)關(guān)模塊對設(shè)備數(shù)據(jù)匹配解析協(xié)議,進行數(shù)據(jù)解碼,解碼后數(shù)據(jù)進行約定的數(shù)據(jù)計算,數(shù)據(jù)計算后,最新一條數(shù)據(jù)將被redis緩存作為前端實時數(shù)據(jù),將需要歷史存儲的數(shù)據(jù)持久化到TDengine
簡化流程如下:
- emq -> mq ->網(wǎng)關(guān) ->數(shù)據(jù)存儲
- netty-mqtt -> mq -> 網(wǎng)關(guān) -> 數(shù)據(jù)存儲

二、指令下發(fā)流程
通過前端或小程序下發(fā)指令,是通過http接口,發(fā)送到后端進行數(shù)據(jù)編碼后,再發(fā)送至設(shè)備端執(zhí)行
以mqtt下發(fā)指令為例:
后端提供兩個接口,一個接口下發(fā)指令并等待設(shè)備響應(yīng)數(shù)據(jù),一個接口是直接下發(fā)指令不等待設(shè)備響應(yīng)數(shù)據(jù)

下發(fā)的數(shù)據(jù)會進入隊列,等待隊列的消費者進行消費,消息端會首先會匹配設(shè)備的編碼協(xié)議對下發(fā)的數(shù)據(jù)進行編碼,然后根據(jù)設(shè)備的通訊協(xié)議進行下發(fā)到對應(yīng)的服務(wù)端
