一,创建阿里云 IOT 产品、设备

目前阿里云每月赠送 100 万条流量,可以免费使用基础版、高级版,开通后即可免费使用。

阿里云 IOT 平台地址 https://iot.console.aliyun.com/product

登陆开通后,新建测试产品、设备。

创建产品

产品的定义是,一类硬件、功能、外形完全相同的设备。所以,添加一个产品后,我们就可以在此类别下添加成千上万个设备。

下面的信息要选、设备、非网关,原因后面说。

设定一个产品

创建一个产品后,就需要设定这个产品的特征,它有那些功能?它可以进行什么样的通讯?

定义两个topic,一个发布、一个订阅

名称为test1、test2

添加一个设备,记下你设备的那些设备名等信息

二,下载SDK、创建项目

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(清空以前的代码),先不用管为什么

  1. using iotxashttp2netsdk.iot.auth.common;
  2. using iotxashttp2netsdk.iot.callback;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Text;
  6.  
  7. namespace AlyIotIest
  8. {
  9. public class 默认回调 : IHttp2MessageCallback
  10. {
  11. public ConsumeAction Consume(Http2ConsumeMessage http2ConsumeMessage)
  12. {
  13.  
  14. Console.WriteLine("默认回调");
  15. Console.WriteLine(http2ConsumeMessage.MessageId);
  16. if (http2ConsumeMessage.Payload.Length != )
  17. {
  18. Console.WriteLine("收到平台消息:");
  19.  
  20. string a = Encoding.ASCII.GetString(http2ConsumeMessage.Payload);
  21.  
  22. Console.WriteLine(a);
  23. }
  24.  
  25. return ConsumeAction.CommitSuccess;
  26. }
  27. }
  28. public class 自定义回调 : IHttp2MessageCallback
  29. {
  30. public ConsumeAction Consume(Http2ConsumeMessage http2ConsumeMessage)
  31. {
  32.  
  33. Console.WriteLine("自定义回调 ");
  34. Console.WriteLine(http2ConsumeMessage.MessageId);
  35. if (http2ConsumeMessage.Payload.Length != )
  36. {
  37. Console.WriteLine("收到平台消息:");
  38.  
  39. string a = Encoding.ASCII.GetString(http2ConsumeMessage.Payload);
  40.  
  41. Console.WriteLine(a);
  42. }
  43. return ConsumeAction.CommitSuccess;
  44. }
  45. }
  46. }

三,开始操作、准备工作

1,Program.cs 需要用到以下命名空间

  1. using System;
  2. using iotxashttp2netsdk.iot.auth.common;
  3. using iotxashttp2netsdk.iot.message;
  4. using System.Net;
  5. using System.Linq;
  6. using System.Text;

2,设定一个设备客户端对象

复制  static MessageClient client; 到Program类钟

  1. class Program
  2. {
  3. // 步骤 1 定义设备客户端 #
  4. static MessageClient client;

  5. ...
  6. ...
  7. }

MessageClient 是核心,用于连接服务器、通讯、订阅和发布Topic、触发任务,先不管他

四,开始写代码

在 Main 方法中写代码

步骤 2,添加密钥信息,在相应位置填上你的密钥

  1. // 步骤 2 从控制台获取 productKey、deviceName、deviceSecret 信息 #
  2. // 到阿里云IOT物联网后台设置产品、添加设备后,可以找到
  3. string productKey = " ";
  4. string deviceName = " i";
  5. string deviceSecret = " ";

步骤 3

  1. // 步骤 3 标记 设定设备唯一识别符 clientid
  2. // 阿里云官方给的例子是 子网IP
  3. IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName());
  4. // 客户端设备唯一标记
  5. string clientId = host.AddressList.FirstOrDefault(
  6. ip => ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork).ToString();
  7. // 地域可用区 ,根据实际修改
  8. string regionId = "cn-shanghai";
  9. string domain = ".aliyuncs.com";
  10. string endpoint = "https://" + productKey + ".iot-as-http2." + regionId + domain;

步骤 4

  1. //设置配置服务和构建客户端
  2. //连接服务配置项
  3. Profile profile = new Profile();
  4. profile.ProductKey = productKey;
  5. profile.DeviceName = deviceName;
  6. profile.DeviceSecret = deviceSecret;
  7. profile.Url = endpoint;
  8. profile.ClientId = clientId;
  9. //删除堆积消息
  10. profile.CleanSession = true;
  11. //qos>0消息,SDK发生异常时可以设置重,重试次数最大为3次
  12. profile.RetryPubCount = ;
  13. //重试间隔时间单位为s(秒)
  14. profile.RetryIntervalTime = ;
  15. profile.GetDeviceAuthParams();
  16.  
  17. //构造客户端
  18. client = new MessageClient(profile);

步骤 5

  1. // 设置订阅和发布的 topic
  2. string topic = "/" + productKey + "/" + deviceName + "/user/test1";
  3. string topic2 = "/" + productKey + "/" + deviceName + "/user/test2";
  4. // 接收数据,刚连接时
  5. // 只生效一次
  6. // 默认回调
  7. client.DoConnection(new 默认回调());
  8.  
  9. //回调
  10. // 自定义一个 IHttp2MessageCallback,每次收到消息都用此回调
  11. client.SetMessageListener(topic2,new 自定义回调());
  12.  
  13. client.DoSubscribe((string)topic ,msg=> {
  14.  
  15. Console.WriteLine ("订阅服务端消息");
  16. Console.WriteLine("msg.Code" + msg.Code);
  17. Console.WriteLine("topic:" + msg.Message.Topic);
  18. Console.WriteLine("msg.Message");
  19. Console.WriteLine("body: " + Encoding.ASCII.GetString(msg.Body));
  20. Console.WriteLine(msg.Message.MessageId);
  21. });
  22. client.DoSubscribe((string)topic2, msg=>
  23. {
  24. Console.WriteLine("订阅服务端消息");
  25. Console.WriteLine("msg.Code" + msg.Code);
  26. Console.WriteLine("topic:" + msg.Message.Topic);
  27. Console.WriteLine("msg.Message");
  28. Console.WriteLine("body: " + Encoding.ASCII.GetString(msg.Body));
  29. Console.WriteLine(msg.Message.MessageId);
  30. });

步骤 6

添加一个方法

  1. public static void 发数据(string topic,string str)
  2. {
  3. //发消息
  4. Message message = new Message();
  5. message.Payload = Encoding.ASCII.GetBytes(str);
  6. message.Qos = ;
  7. client.DoPublish(topic, message, msg =>
  8. {
  9. Console.WriteLine("publish topic message, messageId: " + msg.Message.MessageId
  10. + "|| topic:" + msg.Message.Topic
  11. + "|| code: " + msg.Code
  12. + "|| body: " + Encoding.ASCII.GetString(msg.Body));
  13. });
  14. }

在 Main 方法内,后面加上

  1. while (true)
  2. {
  3. Console.WriteLine("输入数据");
  4. string str = Console.ReadLine();
  5. if (str.ToUpper() == "EXIT")
  6. {
  7. break;
  8. }
  9. 发数据("/" + productKey + "/" + deviceName +"/user/test1", str);
  10. }
  11.  
  12. Console.ReadKey();

运行你的项目

五,运行测试

阿里云 IOT 对接设备开发 C# 开发设备对接阿里云 IOT平台的更多相关文章

  1. 【山外笔记-云原生】《Docker+Kubernetes应用开发与快速上云》读书笔记-2020.04.25(六)

    书名:Docker+Kubernetes应用开发与快速上云 作者:李文强 出版社:机械工业出版社 出版时间:2020-01 ISBN:9787111643012 [山外笔记-云原生]<Docke ...

  2. 腾讯云OCR服务二次开发

    本文记录了对腾讯云OCR服务二次开发的代码和开发过程中遇到的问题.

  3. .NET Core 跨平台物联网开发:连接阿里云IOT(一)

    系列教程目录 (一) 连接阿里云IOT (二) 设置委托事件 (三) 上报属性 (四)  SDK文档 属性.方法.委托.类 http://pan.whuanle.cn/index.php?dir=up ...

  4. 阿里云ACE下的PHP开发环境搭建

    阿里云ACE下的PHP开发环境搭建 本系列文章由ex_net(张建波)编写.转载请注明出处. http://blog.csdn.net/ex_net/article/details/23999053 ...

  5. Android开发SDK接入机智云,智能家居实现APP远程控制多设备

    代码地址如下:http://www.demodashi.com/demo/12847.html 一.前言. 此框架只用了一周星期做了出来,因为对机智云的框架比较熟悉了 !期间SDK初始化出了问题,去咨 ...

  6. 国内物联网平台(7):Ablecloud物联网自助开发和大数据云平台

    国内物联网平台(7)——Ablecloud物联网自助开发和大数据云平台 马智 平台定位 面向IoT硬件厂商,提供设备联网与管理.远程查看控制.定制化云端功能开发.海量硬件数据存储与分析等基础设施,加速 ...

  7. 国内物联网平台初探(七) ——Ablecloud物联网自助开发和大数据云平台

    平台定位 面向IoT硬件厂商,提供设备联网与管理.远程查看控制.定制化云端功能开发.海量硬件数据存储与分析等基础设施,加速硬件实现联网智能化. 架构 服务 云端服务一体化开发引擎 业内独创一体化开发引 ...

  8. 拥抱云原生 2.0 时代,Tapdata 入选阿里云首期云原生加速器!

      3月9日,阿里云首期云原生加速器官宣,Tapdata 突出重围,成功入选31 强,将与多家行业知名企业,携手阿里云共建云原生行业新生态,加速拥抱云原生新时代的无限潜能.   2021年,阿里云正式 ...

  9. 基于 Angularjs&Node.js 云编辑器架构设计及开发实践

    基于 Angularjs&Node.js 云编辑器架构设计及开发实践 一.产品背景 二.总体架构 1. 前端架构 a.前端层次 b.核心基础模块设计 c.业务模块设计 2. Node.js端设 ...

随机推荐

  1. SpringMVC Controller介绍及常见注解

    一.简介 在SpringMVC中,控制器Controller负责处理由DispatcherServlet分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model,然后再把该Model返 ...

  2. [转](SQL Server) Convert a File from utf-8 to ANSI (such as Windows-1252)

    本文转自:https://example-code.com/sql/charset_convert_file_from_utf8_to_ansi.asp CREATE PROCEDURE Chilka ...

  3. ASP.NET MVC加载用户控件后并获取其内控件值或赋值

    有网友看了这篇<ASP.NET MVC加载ASCX之后,并为之赋值>http://www.cnblogs.com/insus/p/3643254.html 之后,问及Insus.NET,不 ...

  4. WebFrom 【内置对象】— —跳转页面,页面传值

      Response    --  响应请求对象 传值  Response.Redirect("url");     --  地址?变量= 值  Response      -- ...

  5. 开放本地MYSQL服务器端口

    有时候别人需要连接你的数据库,这个时候你就要开放数据库的端口,让别的主机可以连接上,步骤如下: 1.打开防火墙,新建入站规则,开放MySQL3306端口 2.执行以下两个命令: (1)如果你想允许用户 ...

  6. Android使用AOP

    这里不讲aop的概念,网上资料很多,这里只讲如何配置aop和自定义plugin. 1.使用场景 在android中,有些业务是公共的,例如:登录判断.获取权限.网络判断等一些公用的业务逻辑,这些都可以 ...

  7. Java设计模式之【单例模式】

    Java设计模式之[单例模式] 何为单例 在应用的生存周期中,一个类的实例有且仅有一个 当在一些业务中需要规定某个类的实例有且仅有一个时,就可以用单例模式 比如spring容器默认初始化的实例就是单例 ...

  8. 微信小程序上传图片(前端+PHP后端)

    一.wxml文件 <text>上传图片</text> <view> <button bindtap="uploadimg">点击选择 ...

  9. CSS 水平居中和垂直居中

    1.水平居中——行内元素 text-align: center; 2.水平居中——定宽块状元素 margin: auto,满足定宽和块状两个条件的元素是可以通过设置“左右margin”值为“auto” ...

  10. js-ES6学习笔记-Generator函数的异步应用

    1.ES6 诞生以前,异步编程的方法,大概有下面四种. 回调函数 事件监听 发布/订阅 Promise 对象 Generator 函数将 JavaScript 异步编程带入了一个全新的阶段. 2.所谓 ...