C#對接阿里云IOT平臺進行設(shè)備開發(fā)
一,創(chuàng)建阿里云 IOT 產(chǎn)品、設(shè)備
目前阿里云每月贈送 100 萬條流量,可以免費使用基礎(chǔ)版、高級版,開通后即可免費使用。
阿里云 IOT 平臺地址https://iot.console.aliyun.com/product
登陸開通后,新建測試產(chǎn)品、設(shè)備。
創(chuàng)建產(chǎn)品

產(chǎn)品的定義是,一類硬件、功能、外形完全相同的設(shè)備。所以,添加一個產(chǎn)品后,我們就可以在此類別下添加成千上萬個設(shè)備。
下面的信息要選、設(shè)備、非網(wǎng)關(guān),原因后面說。

設(shè)定一個產(chǎn)品
創(chuàng)建一個產(chǎn)品后,就需要設(shè)定這個產(chǎn)品的特征,它有那些功能?它可以進行什么樣的通訊?

定義兩個topic,一個發(fā)布、一個訂閱
名稱為test1、test2

添加一個設(shè)備,記下你設(shè)備的那些設(shè)備名等信息

二,下載SDK、創(chuàng)建項目
新建一個 .NET Frameork4 控制臺項目,名稱AlyIotIest
添加引用,把下載的 dll 添加進去
新建一個類BackMessage.cs
把以下代碼復制進BackMessage(清空以前的代碼),先不用管為什么
using iotxashttp2netsdk.iot.auth.common;
using iotxashttp2netsdk.iot.callback;
using System;
using System.Collections.Generic;
using System.Text;
namespace AlyIotIest
{
public class 默認回調(diào) : IHttp2MessageCallback
{
public ConsumeAction Consume(Http2ConsumeMessage http2ConsumeMessage)
{
Console.WriteLine("默認回調(diào)");
Console.WriteLine(http2ConsumeMessage.MessageId);
if (http2ConsumeMessage.Payload.Length != 0)
{
Console.WriteLine("收到平臺消息:");
string a = Encoding.ASCII.GetString(http2ConsumeMessage.Payload);
Console.WriteLine(a);
}
return ConsumeAction.CommitSuccess;
}
}
public class 自定義回調(diào) : IHttp2MessageCallback
{
public ConsumeAction Consume(Http2ConsumeMessage http2ConsumeMessage)
{
Console.WriteLine("自定義回調(diào) ");
Console.WriteLine(http2ConsumeMessage.MessageId);
if (http2ConsumeMessage.Payload.Length != 0)
{
Console.WriteLine("收到平臺消息:");
string a = Encoding.ASCII.GetString(http2ConsumeMessage.Payload);
Console.WriteLine(a);
}
return ConsumeAction.CommitSuccess;
}
}
}三,開始操作、準備工作
1,Program.cs 需要用到以下命名空間
using System; using iotxashttp2netsdk.iot.auth.common; using iotxashttp2netsdk.iot.message; using System.Net; using System.Linq; using System.Text;
2,設(shè)定一個設(shè)備客戶端對象
復制static MessageClient client; 到Program類鐘
class Program
{
// 步驟 1 定義設(shè)備客戶端 #
static MessageClient client;
...
...
}MessageClient 是核心,用于連接服務(wù)器、通訊、訂閱和發(fā)布Topic、觸發(fā)任務(wù),先不管他

四,開始寫代碼
在 Main 方法中寫代碼
步驟 2,添加密鑰信息,在相應(yīng)位置填上你的密鑰
// 步驟 2 從控制臺獲取 productKey、deviceName、deviceSecret 信息 #
// 到阿里云IOT物聯(lián)網(wǎng)后臺設(shè)置產(chǎn)品、添加設(shè)備后,可以找到
string productKey = " ";
string deviceName = " i";
string deviceSecret = " ";步驟 3
// 步驟 3 標記 設(shè)定設(shè)備唯一識別符 clientid
// 阿里云官方給的例子是 子網(wǎng)IP
IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName());
// 客戶端設(shè)備唯一標記
string clientId = host.AddressList.FirstOrDefault(
ip => ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork).ToString();
// 地域可用區(qū) ,根據(jù)實際修改
string regionId = "cn-shanghai";
string domain = ".aliyuncs.com";
string endpoint = "https://" + productKey + ".iot-as-http2." + regionId + domain;步驟 4
//設(shè)置配置服務(wù)和構(gòu)建客戶端
//連接服務(wù)配置項
Profile profile = new Profile();
profile.ProductKey = productKey;
profile.DeviceName = deviceName;
profile.DeviceSecret = deviceSecret;
profile.Url = endpoint;
profile.ClientId = clientId;
//刪除堆積消息
profile.CleanSession = true;
//qos>0消息,SDK發(fā)生異常時可以設(shè)置重,重試次數(shù)最大為3次
profile.RetryPubCount = 3;
//重試間隔時間單位為s(秒)
profile.RetryIntervalTime = 2;
profile.GetDeviceAuthParams();
//構(gòu)造客戶端
client = new MessageClient(profile);步驟 5
// 設(shè)置訂閱和發(fā)布的 topic
string topic = "/" + productKey + "/" + deviceName + "/user/test1";
string topic2 = "/" + productKey + "/" + deviceName + "/user/test2";
// 接收數(shù)據(jù),剛連接時
// 只生效一次
// 默認回調(diào)
client.DoConnection(new 默認回調(diào)());
//回調(diào)
// 自定義一個 IHttp2MessageCallback,每次收到消息都用此回調(diào)
client.SetMessageListener(topic2,new 自定義回調(diào)());
client.DoSubscribe((string)topic ,msg=> {
Console.WriteLine ("訂閱服務(wù)端消息");
Console.WriteLine("msg.Code" + msg.Code);
Console.WriteLine("topic:" + msg.Message.Topic);
Console.WriteLine("msg.Message");
Console.WriteLine("body: " + Encoding.ASCII.GetString(msg.Body));
Console.WriteLine(msg.Message.MessageId);
});
client.DoSubscribe((string)topic2, msg=>
{
Console.WriteLine("訂閱服務(wù)端消息");
Console.WriteLine("msg.Code" + msg.Code);
Console.WriteLine("topic:" + msg.Message.Topic);
Console.WriteLine("msg.Message");
Console.WriteLine("body: " + Encoding.ASCII.GetString(msg.Body));
Console.WriteLine(msg.Message.MessageId);
});步驟 6
添加一個方法
public static void 發(fā)數(shù)據(jù)(string topic,string str)
{
//發(fā)消息
Message message = new Message();
message.Payload = Encoding.ASCII.GetBytes(str);
message.Qos = 1;
client.DoPublish(topic, message, msg =>
{
Console.WriteLine("publish topic message, messageId: " + msg.Message.MessageId
+ "|| topic:" + msg.Message.Topic
+ "|| code: " + msg.Code
+ "|| body: " + Encoding.ASCII.GetString(msg.Body));
});
}在 Main 方法內(nèi),后面加上
while (true)
{
Console.WriteLine("輸入數(shù)據(jù)");
string str = Console.ReadLine();
if (str.ToUpper() == "EXIT")
{
break;
}
發(fā)數(shù)據(jù)("/" + productKey + "/" + deviceName +"/user/test1", str);
}
Console.ReadKey();運行你的項目
五,運行測試

到此這篇關(guān)于C#對接阿里云IOT平臺進行設(shè)備開發(fā)的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C#中const,readonly和static關(guān)鍵字的用法介紹
這篇文章介紹了C#中const,readonly和static關(guān)鍵字的用法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-08-08
C#實現(xiàn)的中國移動官網(wǎng)手機號碼采集器
這篇文章主要介紹了C#實現(xiàn)的中國移動官網(wǎng)手機號碼采集器,本文先是采集號碼入庫,同時給出了篩選各類靚號的SQL語句,需要的朋友可以參考下2014-10-10
C#實現(xiàn)Json轉(zhuǎn)DataTable并導出Excel的方法示例
這篇文章主要介紹了C#實現(xiàn)Json轉(zhuǎn)DataTable并導出Excel的方法,結(jié)合實例形式總結(jié)分析了Json轉(zhuǎn)換DataTable,以及DataTable導出Excel相關(guān)操作技巧,需要的朋友可以參考下2019-02-02

