(初次設計,如有錯誤之處,敬請指出,持續更新中)由於工作需要,需要搭建物聯網終臺,主要框架為:
1,協議包搭建:總體使用netty框架。1,設計時確保只有乙個程式入口。即:只用乙個main函式,程式jar包執行不啟動任何埠號,只能通過main函式,啟動埠號,並執行協議解析操作。,協議解析時:要校驗內容為:幀頭:幀尾:資料長度,等資訊,校驗通過後,確認為一條合法幀,將裝置解析後:通過http介面將資料上送到終臺,執行相關業務,然後需要將程式的連線資訊,存入到系統記憶體中。相關**如下
程式入口:
/**
* 程式入口類
*/public class startservice
}
存入系統記憶體:
public class voltmetercontrollerpojo
;
voltmetercontrollerpojo.mapcontext.put(hexvalue.substring(6, 10) + "ctx", ctx)
;協議包通過http介面將資料上送到物聯網終臺:
;2,物聯網終臺,新建類與協議包中的介面對應:物聯網終臺新建乙個類,用來接受裝置資料,讀取產品管理中設計的物模型,從服務/事件/屬性三個維度,封裝json,將裝置上傳資料上傳到mqtt中。
相關**:
/**
* 傳送mqtt訊息
* * @param state 裝置資料
* @param adress 裝置位址
* @return
*/"/sendmqtt"
) public string sendmsg(string state, string adress)
public class receivemessagehandler implements messagehandler
}
裝置控制命令下發:在協議jar包處,啟動定時任務,定時掃瞄redis佇列,如果獲取到redis存在待傳送的指令,則取出消費,對裝置下發控制指令。主要**:
public class startplcinstruct catch (exception e)}}
};// 做為併發工具類被引進的,這是最理想的定時任務實現方式。
scheduledexecutorservice service
= executors.newsinglethreadscheduledexecutor();
service.scheduleatfixedrate(runnable, 10, 3, timeunit.seconds);}
}
至此:裝置的註冊、上報、控制,整體框架已經搭建完畢。整體目錄結構如下:
這樣搭建仍然有一些問題如下:諸位如果有解決方案,可私聊:摸索中前行,歡迎廣大同行,前來一起**
物聯網系列 整體框架搭建
簡介 一 物聯網終臺 所用技術 springboot,netty,多執行緒,mqtt,tcp,udp。功能簡介 1,根據協議包,解析協議資料,最終形成jar包,2 管理協議形成的jar包,對協議包進行啟動。3 封裝解析後的協議,形成統一json結構 物模型tsl即 thing specificati...
rola物聯網框架 如何搭建乙個物聯網系統框架?
下面將談到幾個關鍵問題 1 物聯網裝置如何接入到網路?只有裝置接入到網路裡面,才能算是物聯網裝置。這裡涉及到2個關鍵點 接入方式以及網路通訊方式。當前有2種接入方式 直接接入 物聯網終端裝置本身具備聯網能力直接接入網路,比如在裝置端加入nb iot通訊模組,2g通訊模組。閘道器接入 物聯網終端裝置本...
騰訊物聯網系列
我的部落格 liuda123.club qq 768848696 是的,早想做一系列的教程,越拖發現越遠,哈哈拖延症重度患者 1 把 tencent os tiny 與 tencentos tiny evb mx 完美結合 2 除錯 stm32 lora band sensor and gatewa...