.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 的教程就到这里了
.NET Core 跨平台物联网开发:连接阿里云IOT(一)的更多相关文章
- .NET Core 跨平台物联网开发:设置委托事件(二)
系列教程目录 (一) 连接阿里云IOT (二) 设置委托事件 (三) 上报属性 (四) SDK文档 属性.方法.委托.类 http://pan.whuanle.cn/index.php?dir=up ...
- .NET Core 跨平台物联网开发:上报属性(三)
系列教程目录 (一) 连接阿里云IOT (二) 设置委托事件 (三) 上报属性 (四) SDK文档 属性.方法.委托.类 http://pan.whuanle.cn/index.php?dir=up ...
- .NET Core 跨平台物联网开发:SDK 属性、方法、委托、类(四)
系列教程目录 (一) 连接阿里云IOT (二) 设置委托事件 (三) 上报属性 (四) SDK文档 属性.方法.委托.类 http://pan.whuanle.cn/index.php?dir=up ...
- 10分钟物联网设备接入阿里云IoT平台
前言最近尝试了一下阿里云IoT物联网平台,还是蛮强大的.在此记录一下学习过程.本教程不需要任何外围硬件,一台电脑和一根能上网的网线即可.算是一篇Hello World了.先上效果图 第一章 准备工作1 ...
- 【阿里云IoT+YF3300】1.时代大背景下的阿里云IoT物联网的现状和未来
“未来十到二十年,大家基本已经形成了一个共识,那便是新格局的奠定将由 AI 和物联网技术来支撑.放眼国内,在这些互联网巨头之中,未来真正成为竞争对手厮杀的,阿里和华为是首当其冲,在这两个领域双方分别暗 ...
- 【阿里云IoT+YF3300】13.阿里云IoT Studio WEB监控界面构建
Web可视化开发是阿里云IoT Studio中比较重要的一个功能,通过可视化拖拽的方式,方便地将各种图表组件与设备相关的数据源关联,无需编程,即可将物联网平台上接入的设备数据可视化展现. 目前支持的组 ...
- 阿里云IoT初试
本文从概念到实战,以一个假想产品--"电子货架标签"(Electronic Shelf Label,以下简称ESL)为例,介绍基于阿里云IoT的物联网应用开发. 数据交互流程 以云 ...
- 阿里云物联网 .NET Core 客户端 | CZGL.AliIoTClient:1. 连接阿里云物联网
文档目录: 说明 1. 连接阿里云物联网 2. IoT 客户端 3. 订阅Topic与响应Topic 4. 设备上报属性 4.1 上报位置信息 5. 设置设备属性 6. 设备事件上报 7. 服务调用 ...
- 【阿里云IoT+YF3300】8.物联网设备用户脚本开发
除了我们必须熟悉的网页脚本,比如JavaScript.其实在工业自动化中,组态软件是必备脚本的,只是有的脚本语言风格类似C或类似Basic而已.比如昆仑通泰的组态屏中的组态软件.通过安装组态软件可以简 ...
随机推荐
- 【转载】C#扫盲之:==/Equals /ReferenceEquals 异同的总结,相等性你真的知道吗?
1.前言 == Equals ReferenceEquals 三个相等性测试,是.NET提供给程序员使用的三个方法,他们之间有什么联系和区别,你真的仔细研究过?虽然之前也多多少少知道一点,但是有时候又 ...
- 使用session来存储用户的登录信息
对存在cookie端数据进行加密处理,具体代码如下: <?php session_start(); //假设用户登录成功获得了以下用户数据 $userinfo = array( 'uid' =& ...
- BFS和DFS记录路径
DFS记录路径的意义好像不大,因为不一定是最短的,但是实现起来却很简单. #include<math.h> #include<stdio.h> #include<queu ...
- Java集合框架:Arrays工具类
java.util.Arrays类能方便地操作数组,它提供的方法都是静态的.整个Arrays工具类的实现有3000+行.可是归纳总结一下可知它有下面功能(9个): 1. asList 定义: @Saf ...
- JRE、JDK、JVM区别和联系
首先说Java编程语言,它是一门高级编程语言,具体由谁何时创建的,读者可以到网上查找相关资料,这里就不再赘述.那么,谈到Java就不得不谈谈JVM.JRE和JDK三者间的区别和联系. JVM:英文全称 ...
- Jquery根据name取得所有选中的Checkbox值
var spCodesTemp = ""; $('input:checkbox[name=supNO]:checked').each(function (i) ...
- MyEclipse 8.5 启动过程优化
前言:MyEclipse5.5 大小 139M:MyEclipse6.5 大小 451M:MyEclipse7.0 大小 649M:MyEclipse8.0 大小 772.3MB(速度方面比7.1和7 ...
- mysql 发生系统错误1067
一般是由配置文件错误语法不正确引起的,如my.ini本人在mysql mysql-5.6.29-winx64 配置过程中遇到“发生系统错误1067”主要由于下面两个目录写的格式不正确引起的正确写法如下 ...
- Windows下VMware虚拟机使用Centos,Docker方式安装openstf的小坑
今天使用docker方式安装openstf碰到了一小坑,坑了我半天.特此记录! docker方式安装stf就不说了,网上教程一大把. 但是... 安装完之后.进入web控制界面,手机连接的好好的.但硕 ...
- 编译android内核和文件系统,已经安装jdk,提示build/core/config.mk:268: *** Error: could not find jdk tools.jar
1:确保安装jdk,如果没有安装请移布:http://www.cnblogs.com/jiuyueguang/p/3156621.html 2:如果已经安装了jdk,还是提示此错误, 解决方法 请确保 ...