設備端[IoT Device SDK]使用實戰

      網友投稿 1241 2025-03-31

      華為物聯網接入平臺IoTDA除了原生接入協議,也提供了各個語言版本的SDK。

      華為提供的IoT Device SDK,支持TCP/IP協議棧的設備集成IoT Device SDK后,可以直接與物聯網平臺通信。不支持TCP/IP協議棧的設備,例如藍牙設備、ZigBee設備等需要利用網關將設備數據轉發給物聯網平臺,此時網關需要事先集成IoT Device SDK。

      SDK簡介:

      設備接入前,需創建產品(可通過控制臺創建或者調用應用側API接口創建產品)。

      產品創建完畢后,需注冊設備(可通過控制臺注冊單個設備或者使用應用側API接口注冊設備)。

      設備注冊完畢后,按照圖中流程實現消息/屬性上報、接收命令/屬性/消息、OTA升級、自定義TOPIC、泛協議接入(相關Demo)等功能。

      針對不同類型的終端設備,提供了不同的SDK:

      既然用到SDK,就是要更快捷的對接應用,減少自己寫代碼的工作量,平臺提供的也會更穩定,和平臺一起升級。

      接下來以C#語言為例,進行一次設備代碼接入,看看是不是很方便。

      通過官網 設備接入 IoT Device SDK介紹 通道可以找到各個版本的SDK入口,但是幫助文檔這里沒有過多的說明,而是直接導航到github源代碼處(和HuaweiCloud.SDK相比,感覺Device SDK代碼上還不夠成熟,沒有上傳到nuget上,命名也不太規范)。

      SDK目錄結構

      iot-device-sdk-java:sdk代碼

      iot-device-demo:普通直連設備的demo代碼

      iot-gateway-demo:網關設備的demo代碼

      iot-device-feature-test:調用demo程序的入口工程

      iot-tcp-device-test:子設備實例啟動工程

      設備端[IoT Device SDK]使用實戰

      引用的第三方類庫使用版本

      MQTTnet:v3.0.11

      MQTTnet.Extensions.ManagedClient:v3.0.11

      Newtonsoft.Json:v12.0.3

      NLog:v4.7

      DotNetty.Codecs:v0.6.0

      DotNetty.Transport:v0.6.0

      云端產品創建

      在設備接入-控制臺 (huaweicloud.com)添加產品選擇MQTT協議,并上傳Profile或者自定義產品屬性和命令

      設備接入地址和端口

      以智能門禁為例創建這樣的產品

      設備接入處,注冊新設備,要記錄好設備Id和密鑰

      設備SDK接入工作過程

      開發環境:Windows 10 操作系統,Microsoft Visual Studio 2022(官方代碼上VS2017版本),.NET Standard 版本:2.0。很好的支持.net core 和.net framework。

      源代碼的測試調用入口控制臺程序默認是.net core2.2版本的。用就用最新的,目前相信用VS的都升級到.net6了,只要切換一下目標版本即可。

      在項目解決方案上右鍵屬性菜單,選擇目標框架

      因為客戶端集成SDK是一個MQTT的長連接程序,作為一個程序模塊,我這里創建了一個單例模式的Device,方便監聽命令和隨時上報消息。

      所有的鏈接邏輯,上報消息體和命令格式,SDK都做了封裝,只要繼承相應的接口,就可以直接等待接收命令消息。

      SDK提供了一個IoTDevice對象作為設備端操作對象,DeviceClient是一個實際客戶端。

      創建一個類RecycleDevice客戶端,其中定義了 DeviceClient對象,集成了若干Listener,用來監聽事件和命令

      public class RecycleDevice : CommandListener, MessagePublishListener, ConnectListener, DeviceMessageListener, CommandV3Listener, DeviceShadowListener, RawMessageListener { 。。。。

      舉例其中2個Listener

      命令下發CommandListener

      在對象類上集成這個接口CommandListener,并實現接口,同時IoTClient進行監聽。OnCmmand需要Report消息狀態,平臺才知道發送成功,否則20s后認為失敗。

      private bool Connect(string serverUri, int port, string deviceId, string deviceSecret) { // 創建設備 IoTDevice device = new IoTDevice(serverUri, port, deviceId, deviceSecret); if (device.Init() != 0) { return false; } _IoTClient = device.GetClient(); _IoTClient.messagePublishListener = this; _IoTClient.commandListener = this; return true; } public void OnCommand(string requestId, string serviceId, string commandName, Dictionary paras) { Console.WriteLine($"OnCommand:{commandName}"); Dictionary dic = new Dictionary(); dic.Add("result", "success"); // 發送命令響應 _IoTClient.Report(new PubMessage(requestId, new CommandRsp(0, dic))); }

      屬性上報Report

      public void ReportPropes() { Dictionary json = new Dictionary(); // 按照物模型設置屬性 json["lock_state"] = "ON"; json["body_state"] = 0; ServiceProperty serviceProperty = new ServiceProperty(); serviceProperty.properties = json; serviceProperty.serviceId = "sensor"; // serviceId要和物模型一致 List properties = new List(); properties.Add(serviceProperty); _IoTClient.Report(new PubMessage(properties)); }

      運行代碼,在Test工程中添加新代碼

      class Program { private static ManualResetEvent mre = new ManualResetEvent(false); static void Main(string[] args) { RecycleDevice.IoTClient.Init(); RecycleDevice.IoTClient.ReportPropes(); mre.WaitOne(); } }

      打開設備看到在線,并且有信息上傳了

      發一個命令看看

      控制臺打印出上報消息和命令交互,怎么樣是不是很簡單?

      附件是一個樣例代碼,完整的但內容很短。

      附件: RecycleDevice.rar 1.46KB 下載次數:1次

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Excel2010如何對比表格(Excel對比表格)
      下一篇:手機表格app簡單的(好用的手機表格app)
      相關文章
      亚洲夜夜欢A∨一区二区三区| 亚洲av乱码一区二区三区按摩 | 亚洲资源最新版在线观看| 国产成人A人亚洲精品无码| 亚洲熟妇无码八AV在线播放| 午夜亚洲国产精品福利| 国产天堂亚洲国产碰碰| 国产亚洲视频在线观看网址| 免费在线观看亚洲| 亚洲精品视频在线观看你懂的| 亚洲国产成人精品无码久久久久久综合 | 久久久久精品国产亚洲AV无码| 亚洲天堂电影在线观看| 亚洲AV无码久久久久网站蜜桃| 中文文字幕文字幕亚洲色| 亚洲不卡影院午夜在线观看| 亚洲色成人WWW永久在线观看| 亚洲熟妇无码av另类vr影视| 亚洲精品V天堂中文字幕| 看亚洲a级一级毛片| 亚洲免费日韩无码系列 | 久久久精品国产亚洲成人满18免费网站| 亚洲精品无码久久久久AV麻豆| 亚洲欧洲日本在线| 亚洲精品无码久久久久去q| 亚洲AV永久纯肉无码精品动漫| 亚洲国产精品久久66| 亚洲综合一区二区| 国产精品亚洲片夜色在线| 亚洲精品永久在线观看| 亚洲AV综合色区无码二区偷拍| 亚洲精品无码日韩国产不卡av| 91情国产l精品国产亚洲区| 国产V亚洲V天堂无码久久久| 久久精品国产亚洲一区二区| 亚洲综合在线视频| 亚洲视频无码高清在线| 亚洲aⅴ天堂av天堂无码麻豆| 7777久久亚洲中文字幕| 亚洲同性男gay网站在线观看| 亚洲综合日韩久久成人AV|