.NET Core 跨平台物聯網開發:連接阿里雲IOT(一)


系列教程目錄

 (一) 連接阿里雲IOT

 (二) 設置委托事件

 (三) 上報屬性

 (四)  SDK文檔 屬性、方法、委托、類

 http://pan.whuanle.cn/index.php?dir=uploads/阿里雲IOT/AliIOTXFclient-dll類庫&response

下載三個庫,頭部引入 即可使用

using AliIOTXFClient;

示例下載地址

http://pan.whuanle.cn/index.php?dir=uploads/阿里雲IOT/demo示例

本章使用示例 AliIOTXF.One

二,阿里雲 IOT 創建產品設備 

打開地址 https://iot.console.aliyun.com/product

創建一個產品

節點類型選擇設備、非網關,因為是直接對接有網絡能力的設備。透傳需要寫 JS 解析腳本,Alink Json 使用方便、不易出錯,也更便於理解。ID² 提供了雙向身份認證能力,但是收費。

創建設備

創建成功后記得 “ 一鍵復制 ” ,然后存放到記事本等保存。(保不保存沒事,可以到里面復制)

 

附上阿里雲創建產品的文檔 https://help.aliyun.com/document_detail/73705.html?spm=a2c4g.11174283.6.553.3a8b1668QRyRs7

創建后的設備

 

 三,創建項目,連接阿里雲

隨意創建一個 .NET Core 項目,引入三個 Dll,記得選擇復制到本地。

 

頭部引入

using AliIOTXFClient;

創建連接客戶端

把一鍵復制的內容或到控制台--具體設備中,復制 ProductKey 和 DeviceName。

XFMQTT client = new XFMQTT(ProductKey, DeviceName);  // 創建連接對象

初始化配置

 DeviceSecret 到控制台復制,Region ID 是地域,可以在控制台左上角看到地域名稱,點擊 查看阿里雲 IOT 地域,把對應的 Region ID 復制下來。例如筆者的是華東2,對應 cn-shanghai。

client.Init(DeviceSecret, Region ID);  // 初始化客戶端

 添加要訂閱的 Topic

需要具有 “訂閱” 權限的 Topic 才能被訂閱。並且只有 .../user/... 的,屬於普通 Topic。這方面后面再說,看圖。

update、update/error、get 屬於默認的Topic。

 

 我們創建自定義的 Topic,點擊 對應的 “產品”--查看 Topic 類列表,“自定義Topic類”

添加兩個自定義的 Topic

 

 在項目代碼中

            // 要訂閱的Topic
            string[] topic = { client.CombineHeadTopic("PubData") };

 要訂閱多個Topic,在里面添加即可。client.CombineHeadTopic() 方法可以根據Topic名稱幫助生成完整的Topic。

當然,你也可以直接

string[] topic = { "/a1BiPoNawLI/${deviceName}/user/PubData" };

多個 Topic string[] topic = { top1,top2.,,,, };

綁定事件委托

 在連接服務器、收到 Topic、發布 Topic、發布屬性、服務調用等各個環節,都有相應的委托。

這里使用默認的委托事件,后面慢慢如何自定義

            // 使用默認的委托事件
            client.UseDefaultEventHandler();

開始連接IOT服務器

            // 連接服務器
            client.ConnectMqtt(topic);

別忘記了加一行 Console.ReadKey();

 完整代碼

            // 創建連接對象
            XFMQTT client = new XFMQTT("a1BiPoNawLI", "Raspberry");
            // 初始化客戶端配置
            client.Init("2NOaBeqXcIzLQEhlJFEfKbWeug0o3m0c", "cn-shanghai");
            // 要訂閱的Topic
            string[] topic = { client.CombineHeadTopic("PubData") };

            // 使用默認的委托事件
            client.UseDefaultEventHandler();

            // 連接服務器
            client.ConnectMqtt(topic);

            Console.ReadKey();

 

創建一般的連接客戶端的步驟已經完成,運行程序

四,訂閱 Topic 與發布 Topic

運行程序后,打開控制台--設備列表,會發現

 

發送 Topic

打開設備,找到 Topic 列表的 PubData,點擊 ”發布“,輸入任意字符(中文可能會亂碼),查看客戶端會不會收到內容。

注:只有權限為訂閱的Topic,能夠向設備下發數據。

設備中,只有設置訂閱該 Topic,在控制台發布消息時,才能收到此 Topic。在控制台多找幾個Topic,試試發布一下就知道了。

 

發布Topic

上面的步驟實現了連接 IOT 平台並訂閱 Topic,這樣可以收到服務器的推送或者說收到數據了,Topic 可以訂閱很多個,在客戶端設置需要的 Topic,服務器能向客戶端設備發布成功。下面來示范一下如何發布數據內容到服務器。

在代碼后面加上

           while (true)
            {    
                string str=Console.ReadLine();

                // 推送內容到特定的 Topic
                client.Subscribe(client.CombineHeadTopic("SubData"),str);
            }

SubData 是我們要推送到的Topic。

完整代碼如下(請替換 {***} 的對應內容),紅色部分是新增代碼:

            // 創建連接對象
            XFMQTT client = new XFMQTT("{*產品名稱*}", "{*設備名稱*}");
            // 初始化客戶端配置
            client.Init("{*密鑰*}", "{*cn-shanghai*}");
            // 要訂閱的Topic
            string[] topic = { client.CombineHeadTopic("PubData") };

            // 使用默認的委托事件
            client.UseDefaultEventHandler();

            // 連接服務器
            client.ConnectMqtt(topic);

            while (true) { string str=Console.ReadLine(); // 推送內容到特定的 Topic client.Subscribe(client.CombineHeadTopic("SubData"),str); }

            Console.ReadKey();

運行程序,隨意輸入內容。在控制台知道日志服務,查看設備的上行消息分析

IOT控制台中暫時沒法查看到上傳的消息內容。

使用了默認的委托方法,可以在控制台中復制文字,使用Json格數化看看結果。

簡單使用 SDK 的教程就到這里了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM