文档目录:


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 具有 订阅/发布 权限。 然后修改程序试试是否正常上传、下发数据。

 

阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:1. 连接阿里云物联网的更多相关文章

  1. 阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:7. 服务调用

    文档目录: 说明 1. 连接阿里云物联网 2. IoT 客户端 3. 订阅Topic与响应Topic 4. 设备上报属性 4.1 上报位置信息 5. 设置设备属性 6. 设备事件上报 7. 服务调用 ...

  2. 阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:2. IoT 客户端

    文档目录: 说明 1. 连接阿里云物联网 2. IoT 客户端 3. 订阅Topic与响应Topic 4. 设备上报属性 4.1 上报位置信息 5. 设置设备属性 6. 设备事件上报 7. 服务调用 ...

  3. 阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:3. 订阅Topic与响应Topic

    文档目录: 说明 1. 连接阿里云物联网 2. IoT 客户端 3. 订阅Topic与响应Topic 4. 设备上报属性 4.1 上报位置信息 5. 设置设备属性 6. 设备事件上报 7. 服务调用 ...

  4. 阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:4. 设备上报属性

    文档目录: 说明 1. 连接阿里云物联网 2. IoT 客户端 3. 订阅Topic与响应Topic 4. 设备上报属性 4.1 上报位置信息 5. 设置设备属性 6. 设备事件上报 7. 服务调用 ...

  5. 阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:5. 设置设备属性

    文档目录: 说明 1. 连接阿里云物联网 2. IoT 客户端 3. 订阅Topic与响应Topic 4. 设备上报属性 4.1 上报位置信息 5. 设置设备属性 6. 设备事件上报 7. 服务调用 ...

  6. 阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:6. 设备事件上报

    文档目录: 说明 1. 连接阿里云物联网 2. IoT 客户端 3. 订阅Topic与响应Topic 4. 设备上报属性 4.1 上报位置信息 5. 设置设备属性 6. 设备事件上报 7. 服务调用 ...

  7. 阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:8. 委托事件

    文档目录: 说明 1. 连接阿里云物联网 2. IoT 客户端 3. 订阅Topic与响应Topic 4. 设备上报属性 4.1 上报位置信息 5. 设置设备属性 6. 设备事件上报 7. 服务调用 ...

  8. 阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:9. 自定义委托事件方法

    文档目录: 说明 1. 连接阿里云物联网 2. IoT 客户端 3. 订阅Topic与响应Topic 4. 设备上报属性 4.1 上报位置信息 5. 设置设备属性 6. 设备事件上报 7. 服务调用 ...

  9. 阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:4.1 上报位置信息

    文档目录: 说明 1. 连接阿里云物联网 2. IoT 客户端 3. 订阅Topic与响应Topic 4. 设备上报属性 4.1 上报位置信息 5. 设置设备属性 6. 设备事件上报 7. 服务调用 ...

随机推荐

  1. 九度OJ 1133:学分绩点 (加权平均数)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1333 解决:702 题目描述: 北京大学对本科生的成绩施行平均学分绩点制(GPA).既将学生的实际考分根据不同的学科的不同学分按一定的公式 ...

  2. HLS切片机

    参考: 1,linux下搭建生成HLS所需的.ts和.m3u8文件http://www.cnblogs.com/mystory/archive/2013/04/07/3006200.html2,iPh ...

  3. Ubuntu下安装Android studio【转】

    本文转载自:http://blog.csdn.net/walleit/article/details/65696712 版权声明:本文为博主原创文章,未经博主允许不得转载. 一,软件准备 1. Lin ...

  4. Spring注解原理的详细剖析与实现

    本文主要分为三部分: 一. 注解的基本概念和原理及其简单实用 二. Spring中如何使用注解 三. 编码剖析spring@Resource的实现原理 一.注解的基本概念和原理及其简单实用 注解(An ...

  5. 记录下 hubot相关

    适配器工厂https://hubot.github.com/docs/adapters/ 自己写适配器https://hubot.github.com/docs/adapters/developmen ...

  6. C3P0 配置

    C3P0是一个开源的JDBC连接池. 在Spring中,C3P0的一些配置,介绍如下(只列了一部分,不是全部) <!-- c3p0连接池配置 --> <bean id="d ...

  7. codevs 1046 旅行家的预算

    传送门 1046 旅行家的预算 1999年NOIP全国联赛普及组NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold题解   题目描述 Des ...

  8. JAVA 需要理解的重点 二

    1.常用设计模式 单例模式:懒汉式.饿汉式.双重校验锁.静态加载,内部类加载.枚举类加载.保证一个类仅有一个实例,并提供一个访问它的全局访问点. 代理模式:动态代理和静态代理,什么时候使用动态代理. ...

  9. 使用svnsync实时备份SVN版本库

    前段时间把SVN版本库从win迁移到了Linux上,没隔几天那台win的磁盘就严重坏道了....这TMD什么运气! 花费了点时间研究了下svn自己的同步工具.写个日志记录下. 注意:svnsync要求 ...

  10. linux 中的局部变量、全局变量、shell 变量的总结

    系统局部变量和全局变量  一.变量分类局部变量和环境变量,局部变量只适用于当前shell,而环境变量是全局的,它适用于所有当前shell以及其派生出来的任意子进程,有些变量是用户创建的,其他的则是专用 ...