阿里云物联网NET Core客中端|CZGLAliloTClient:1.连接阿里云物联网

简介: 阿里云物联网NET Core客中端|CZGLAliloTClient:1.连接阿里云物联网

1) 阿里云物联网


阿里云物联网支持多种通讯协议,CZGL.AliIoTClient 使用了 MQTT 通讯协议,通讯库为 M2MQTT


阿里云物联网数据传输有两种数据传输方式,分别是 透传Alink json,两种方式只在属性读/写、事件上报、服务调用这四种 Topic 上有差异, 其它连接通讯、普通 Topic、响应等,无差别。建议使用 Alink json 方式上传下发数据。


传输形式 本质 说明
Alink json json 需按照阿里云物联网文档配置 json
透传 二进制 在使用属性、事件和服务功能时,数据为二进制,有具体的传输位要求

CZGL.AliIoTClient 支持 Alink json 和 透传,SDK 中有两个客户端类,

说明
AliIoTClientJson 以Alink json为传输形式的客户端
AliIoTClientBinary: 以二进制为传输形式的客户端

两者很大程度上是一致的,仅在属性事件服务方面的数据传输形式有差异。因此后面主要以 AliIoTClientJson 来说明。


2) 连接到阿里云IOT


2.1) 创建客户端

在创建客户端类时,需要传入 DeviceOptions 对象,需要预先在阿里云物联网控制台,复制设备的密钥等信息,填入到 DeviceOptions 中。

示例:

AliIoTClientJson client = new AliIoTClientJson(new DeviceOptions
            {
                ProductKey = "a1xrkGSkb5R",
                DeviceName = "mire",
                DeviceSecret = "CqGMkOBDiKJfrOWp1evLZC2O6fsMtEXw",
                RegionId = "cn-shanghai"
            });

2.2) 设置要订阅的 Topic

连接客户端前,应当设置需要订阅的普通 Topic 以及配置是否接收属性设置命令、服务调用和响应等 Topic 。

普通topic

设置要订阅的普通 Topic:

string[] topics = new string[] { ... , ... , ...  };


要求填写 Topic 完整的长度的 URI ,可到控制台中查看。例如 "/a1xrkGSkb5R/dockertest/user/update/error"

如果你不想这么麻烦,可以使用

string[] topics = new string[] { client.CombineHeadTopic("get") };


只需输入 Topic 的 /user/ 后面的内容即可,AliIoTClientJson.CombineHeadTopic() 会为你生成完整的 Topic 地址。 例如需要订阅 "/a1xrkGSkb5R/dockertest/user/update/error"

string[] topics = new string[] { client.CombineHeadTopic("update/error") };


除了普通的 Topic 外,还要设备上传各种数据、接收服务器的响应、服务器设置设备属性、服务器调用设备服务等,这些将在后面章节介绍。


3) 设置默认事件


你希望在收到消息时,程序需要做点什么?编写相应的方法,绑定到委托事件中,当条件符合时,这些方法将会被触发。

在本章,使用 CZGL.AliIoTClient 预设置的默认委托方法,后面章节将会详细说明如何自定义方法。


使用默认事件:

client.UseDefaultEventHandler();


4) 客户端连接


已经做好了连接前的配置工作,现在连接到阿里云物联网。


CZGL.AliIoTClient 中,有三个关于连接的方法:


方法 说明
AliIoTClientJson.ConnectIoT(string[], byte[], ushort) 连接到阿里云物联网服务器
AliIoTClientJson.ConnectIoTAsync(string[], byte[], ushort) 使用异步方法连接到阿里云物联网服务器
AliIoTClientJson.ConnectIoTClose() 关闭、释放客户端


5) 示例


在阿里云物联网控制台新建一个产品,再在此产品下新建一个设备,其它功能不需要添加。记录下新建设备的密钥等信息。


在 Visual Studio 中,新建一个 .NET Core 控制台应用,在 Nuget 中找到 CZGL.AliIoTClient 并添加。 控制台代码如下:


// 创建客户端
            client = new AliIoTClientJson(new DeviceOptions
            {
                ProductKey = "a1xrkGSkb5R",
                DeviceName = "mire",
                DeviceSecret = "CqGMkOBDiKJfrOWp1evLZC2O6fsMtEXw",
                RegionId = "cn-shanghai"
            });
            // 设置要订阅的Topic、运行接收内容的Topic
            string[] topics = new string[] { client.CombineHeadTopic("get") };
            // 使用默认事件
            client.UseDefaultEventHandler();
            // 连接服务器
            client.ConnectIoT(topics,null,60);
            Console.ReadKey();


打开阿里云物联网控制台,刷新设备列表,即可看到设备在线。


6) 下发数据


一个新建的产品,有几个默认的 Topic ,我们不必作其它修改,就目前来说,可以使用默认的 Topic 做示范。


运行上面已经编写好的控制台程序,不要关闭。


打开阿里云物联网控制台,打开相应的设备,在设备的 Topic列表 里面找到 .../user/get 这个 Topic, 例如: /a1xrkGSkb5R/dockertest/user/get

点击 发布消息 ,然后输入要发送的内容,最后查看控制台是否收到下发的消息。


由于使用了 CZGL.AliIoTClient 中,默认的事件方法,因此除了消息内容,也会输出这条 Topic 消息的一些属性信息。


7) 上传数据


设备的 Topic 列表,有个 .../user/update ,例如 /a1xrkGSkb5R/dockertest/user/update 。 这个 Topic 允许客户端上传数据,下面将说明客户端如何上传数据到阿里云物联网服务器。


上传普通 Topic 的方法:


I. 上传 byte

public int CommonToServer(string topicName, byte[] content)


摘要:

此种方式以 byte[] 形式上传数据,注意 byte[] 的进制


参数: topicName: Topic 的完整名称,可使用 CombineHeadTopic() 方法获取 content: 消息内容

返回结果: 消息 ID


II. 普通字符串

public int CommonToServer(string topicName, string content)


摘要: 普通方式推送 Topic 到服务器,直接上传字符串

返回结果: 消息 ID

III. 其它上传方法

还要其它几个方法,放到一起说明。

public int CommonToServer(string topicName, string content, 
                          [System.Text.Encoding encoding = null])


说明:上传数据到指定 Topic ,指定字符串的编码格式。阿里云物联网默认使用 UTF8。

CZGL.AliIoTClient 也默认使用 UTF8 作为数据的编码,可以自定义上传字符串的编码。 一般不需要改,不然中文字符串会乱码。

public int CommonToServerBase64(string topicName, string content)


说明:传入字符串后,会先进行 Base64 编码,然后再上传。

public int CommonToServerBase64(string topicName, 
                                string content, 
                                [System.Text.Encoding encoding = null])

说明:传入字符串后,指定字符串的编码,然后进行 Base64 编码后上传。


8) 创建Topic


你可以在阿里云物联网控制台打开某个产品,在产品里新建一个或多个 Topic ,设定这个 Topic 具有 订阅/发布 权限。 然后修改程序试试是否正常上传、下发数据。

 

相关实践学习
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
8月前
|
消息中间件 安全 物联网
海量接入、毫秒响应:易易互联携手阿里云构筑高可用物联网消息中枢
面对换电生态高速发展的通信挑战,易易互联通过采用阿里云 MQTT + RocketMQ 的融合解决方案,成功构建了“海量接入、实时响应、弹性处理、安全可信”的物联网通信底座。该架构不仅显著提升了系统稳定性与可扩展性,更保障了高并发场景下的业务连续性,为实现“让换电成为营运补能第一选择”的战略目标提供了坚实的技术支撑。
386 56
|
7月前
|
开发框架 .NET C#
ASP.NET Core Blazor 路由配置和导航
大家好,我是码农刚子。本文系统介绍Blazor单页应用的路由机制,涵盖基础配置、路由参数、编程式导航及高级功能。通过@page指令定义路由,支持参数约束、可选参数与通配符捕获,结合NavigationManager实现页面跳转与参数传递,并演示用户管理、产品展示等典型场景,全面掌握Blazor路由从入门到实战的完整方案。
599 6
|
开发框架 .NET 开发者
简化 ASP.NET Core 依赖注入(DI)注册-Scrutor
Scrutor 是一个简化 ASP.NET Core 应用程序中依赖注入(DI)注册过程的开源库,支持自动扫描和注册服务。通过简单的配置,开发者可以轻松地从指定程序集中筛选、注册服务,并设置其生命周期,同时支持服务装饰等高级功能。适用于大型项目,提高代码的可维护性和简洁性。仓库地址:<https://github.com/khellang/Scrutor>
606 5
|
12月前
|
物联网
(手把手)在华为云、阿里云搭建自己的物联网MQTT消息服务器,免费IOT平台
本文介绍如何在阿里云搭建自己的物联网MQTT消息服务器,并使用 “MQTT客户端调试工具”模拟MQTT设备,接入平台进行消息收发。
3584 42
|
存储 监控 安全
工业物联网关应用:PLC数据通过智能网关上传阿里云实战
本文介绍如何使用智能网关将工厂PLC数据传输至阿里云平台,适合中小企业远程监控设备状态。硬件准备包括三菱FX3U PLC、4G智能网关和24V电源。接线步骤涵盖PLC编程口与网关连接、运行状态检测及天线电源接入。配置过程涉及通讯参数、阿里云对接和数据点映射。PLC程序关键点包括数据上传触发和温度值处理。阿里云平台操作包含实时数据查看、数据可视化和规则引擎设置。最后提供常见故障排查表和安全建议,确保系统稳定运行。
1300 1
|
物联网 数据挖掘 BI
基于阿里云物联网平台(IoT)的智能家居系统开发与部署
随着物联网技术的发展,智能家居成为提升生活品质的重要方向。阿里云物联网平台提供设备接入、数据管理及应用开发能力,支持亿级设备接入、高效数据管理和灵活应用开发,确保系统安全。本文通过实战案例展示如何基于该平台构建智能家居系统,涵盖设备接入、远程控制、场景联动与数据分析等功能,助力企业快速部署智能家居解决方案。
|
开发框架 算法 中间件
ASP.NET Core 中的速率限制中间件
在ASP.NET Core中,速率限制中间件用于控制客户端请求速率,防止服务器过载并提高安全性。通过`AddRateLimiter`注册服务,并配置不同策略如固定窗口、滑动窗口、令牌桶和并发限制。这些策略可在全局、控制器或动作级别应用,支持自定义响应处理。使用中间件`UseRateLimiter`启用限流功能,并可通过属性禁用特定控制器或动作的限流。这有助于有效保护API免受滥用和过载。 欢迎关注我的公众号:Net分享 (239字符)
391 1
|
传感器 人工智能 物联网
健康监测设备的技术革命:AI+物联网如何让你随时掌握健康数据?
健康监测设备的技术革命:AI+物联网如何让你随时掌握健康数据?
1444 19
|
存储 安全 物联网
政府在推动物联网技术标准和规范的统一方面可以发挥哪些作用?
政府在推动物联网技术标准和规范的统一方面可以发挥哪些作用?
516 60
|
安全 物联网 物联网安全
制定统一的物联网技术标准和规范的难点有哪些?
制定统一的物联网技术标准和规范的难点有哪些?
602 58

相关产品

  • 物联网平台