C#对接阿里云IOT平台进行设备开发
一,创建阿里云 IOT 产品、设备
目前阿里云每月赠送 100 万条流量,可以免费使用基础版、高级版,开通后即可免费使用。
阿里云 IOT 平台地址https://iot.console.aliyun.com/product
登陆开通后,新建测试产品、设备。
创建产品
文章图片
产品的定义是,一类硬件、功能、外形完全相同的设备。所以,添加一个产品后,我们就可以在此类别下添加成千上万个设备。
下面的信息要选、设备、非网关,原因后面说。
文章图片
设定一个产品
创建一个产品后,就需要设定这个产品的特征,它有那些功能?它可以进行什么样的通讯?
文章图片
定义两个topic,一个发布、一个订阅
名称为test1、test2
文章图片
文章图片
添加一个设备,记下你设备的那些设备名等信息
文章图片
二,下载SDK、创建项目
【C#对接阿里云IOT平台进行设备开发】SDK 下载 地址https://iot-demos.oss-cn-shanghai.aliyuncs.com/h2/iotx-as-http2-net-sdk.dll?spm=a2c4g.11186623.2.10.57e64c07SGupEH&file=iotx-as-http2-net-sdk.dll
新建一个 .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 默认回调 : IHttp2MessageCallback{public ConsumeAction Consume(Http2ConsumeMessage http2ConsumeMessage){Console.WriteLine("默认回调"); 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 自定义回调 : IHttp2MessageCallback{public ConsumeAction Consume(Http2ConsumeMessage http2ConsumeMessage){Console.WriteLine("自定义回调 "); 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,设定一个设备客户端对象
复制static MessageClient client; 到Program类钟
class Program{//步骤 1 定义设备客户端 #static MessageClient client; ......}
MessageClient 是核心,用于连接服务器、通讯、订阅和发布Topic、触发任务,先不管他
文章图片
四,开始写代码 在 Main 方法中写代码
步骤 2,添加密钥信息,在相应位置填上你的密钥
// 步骤 2 从控制台获取 productKey、deviceName、deviceSecret 信息 #// 到阿里云IOT物联网后台设置产品、添加设备后,可以找到string productKey = ""; string deviceName = "i"; string deviceSecret = "";
步骤 3
// 步骤 3 标记 设定设备唯一识别符 clientid// 阿里云官方给的例子是 子网IPIPHostEntry host = Dns.GetHostEntry(Dns.GetHostName()); // 客户端设备唯一标记string clientId = host.AddressList.FirstOrDefault(ip => ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork).ToString(); // 地域可用区 ,根据实际修改string regionId = "cn-shanghai"; string domain = ".aliyuncs.com"; string endpoint = "https://" + productKey + ".iot-as-http2." + regionId + domain;
步骤 4
//设置配置服务和构建客户端 //连接服务配置项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发生异常时可以设置重,重试次数最大为3次profile.RetryPubCount = 3; //重试间隔时间单位为s(秒)profile.RetryIntervalTime = 2; profile.GetDeviceAuthParams(); //构造客户端client = new MessageClient(profile);
步骤 5
// 设置订阅和发布的 topicstring topic = "/" + productKey + "/" + deviceName + "/user/test1"; string topic2 = "/" + productKey + "/" + deviceName + "/user/test2"; // 接收数据,刚连接时// 只生效一次// 默认回调client.DoConnection(new 默认回调()); //回调// 自定义一个 IHttp2MessageCallback,每次收到消息都用此回调client.SetMessageListener(topic2,new 自定义回调()); client.DoSubscribe((string)topic ,msg=> {Console.WriteLine ("订阅服务端消息"); 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("订阅服务端消息"); 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 发数据(string topic,string str){//发消息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 方法内,后面加上
while (true){Console.WriteLine("输入数据"); string str = Console.ReadLine(); if (str.ToUpper() == "EXIT"){break; }发数据("/" + productKey + "/" + deviceName +"/user/test1", str); }Console.ReadKey();
运行你的项目
五,运行测试
到此这篇关于C#对接阿里云IOT平台进行设备开发的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
推荐阅读
- 技术分享| 云服务器的使用-nginx的安装及使用
- 金蝶云星空与钉钉集成解决方案(钉钉审批)
- 面试|阿里高级技术专家(成长路上如何破局())
- JAVA SQL注入测试
- #云原生征文#深入Kubernetes(k8s)概念
- SmartIDE|SmartIDE v0.1.19 - 码云(Gitee)最有价值开源项目奖项、工作区策略、类虚拟机镜像VMLC、Server安装手册
- 袋鼠云数栈基于CBO在Spark SQL优化上的探索
- RabbitMQ 进阶 -- 阿里云服务器部署RabbitMQ集群
- 七牛云创建存储空间并绑定自定义域名-https协议
- 仅需三步学会使用低代码ThingJS与森数据DIX数据对接