阿里云 IOT 对接设备开发 C# 开发设备对接阿里云 IOT平台

原文:阿里云 IOT 对接设备开发 C# 开发设备对接阿里云 IOT平台

一,创建阿里云 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 Core 控制台项目,名称 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.io127.0.0.1ssage;
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
            // 阿里云官方给的例子是 子网IP
            IPHostEntry 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

         // 设置订阅和发布的 topic
            string 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();

运行你的项目

五,运行测试

原文地址:https://www.cnblogs.com/lonelyxmas/p/10592050.html

时间: 2024-08-25 13:12:14

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

.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示例 本章使用

IOT设备连接上云

如何让我的设备连接上云?参考如下路径. 云 [![](http://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/assets/img/974556/156896265461629_zh-CN.png)](http://static-aliyun-doc.oss-cn-hangzhou.aliyuncs.com/assets/img/974556/156896265461629_zh-CN.png) * [物联网平台](https://help.a

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

国内物联网平台初探(七)——Ablecloud物联网自助开发和大数据云平台 马智 平台定位 面向IoT硬件厂商,提供设备联网与管理.远程查看控制.定制化云端功能开发.海量硬件数据存储与分析等基础设施,加速硬件实现联网智能化. 架构 服务 云端服务一体化开发引擎 业内独创一体化开发引擎架构,自动解决底层连接.存储.分布式集群部署.弹性扩容.安全等难题,降低IoT云端功能开发门槛,普通工程师即可快速完成云端服务开发部署,加速IoT功能创新迭代. IoT功能组件及方案超市 提供丰富的IoT功能组件及方

2018年视频云服务市场格局进入整合阶段,阿里云视频云位居市场竞争力领导者的位置

据计世资讯(CCW Research)的研究结果表明: 一.中国视频云市场进入高速发展阶段据计世资讯(CCW Research)的研究结果表明,近年来国内视频云市场保持了高速的增长势头,特别是2016年以来,视频云市场进入高速发展阶段,直播的火爆带动视频云服务需求快速增长.2018年中国视频云服务市场规模已经达到31.2亿元,同比增长36.2%.随着4K.VR等技术应用普及,将会催生出大量新的视频云应用场景.伴随着视频云深入行业发展,未来可以预见视频云市场将会拥有广阔的市场前景. 图表 1 20

创客筑梦,第二届机智云智能硬件36小时开发大赛圆满落幕

2016年12月18日,由机智云与华强北国际创客中心联合举办的第二届机智云智能硬件36小时开发大赛在华强北国际创客中心圆满落幕.本次大赛是机智云平台优秀开发者的年度赛事,旨在为机智云平台上的优秀开发工程师提供一站式开发支持,在短时间内.高强度开发环境下完成产品协调开发,快速实现产品想法落地.在比赛现场最重入围总决赛的项目覆盖空气质量监测.健康医疗.办公商用.智慧早教等诸多类别,最终由空气质量监测站参赛选手刘大海获得大赛冠军,得到去硅谷学习交流的机会. 连续高强度开发,展现创客精神 当天有七个项目

Win10 IoT C#开发 1 - Raspberry安装IoT系统及搭建开发环境

原文:Win10 IoT C#开发 1 - Raspberry安装IoT系统及搭建开发环境 Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,与以往的Windows版本不同,是为物联网设备专门设计的,硬件也不仅仅限于x86架构,同时可以在ARM架构上运行. The Raspberry Pi Foundation 是英国一个致力于科技推广的慈善组织,为广发爱好者和DIY科技迷开发了搭载ARM架构处理器的 mini 电脑 Raspberry Pi 并获得了成功.而微软最新发

微信小程序开发(二)-----云开发

1.概念 微信小程序的云开发是腾讯云与微信团队深度合作推出的一个全新的小程序的解决方案,它提供了云函数.云数据库与云存储这三大基础能力支持,随着云开发的出现,小程序的开发者可以将服务端的部署和运营的环节进行服务端的托管,让腾讯云去管理,而不需要在运维和管理方面投入太多的精力. 2.传统小程序开发与云开发的区别 小程序传统开发模式:(开发效率低.运维成本高) 对于小程序传统的开发模式而言,我们需要一个客户端(也就是前端页面),而前端页面展示的数据大多来自于数据库,因此我们还需要一个服务端,把后端的

开放下载 | 《Knative 云原生应用开发指南》开启云原生时代 Serverless 之门

点击下载<Knative 云原生应用开发指南> 自 2018 年 Knative 项目开源后,就得到了广大开发者的密切关注.Knative 在 Kubernetes 之上提供了一套完整的应用 Serverless 编排服务,让应用开发者可以不用为底层的基础设施分心,把更多的精力投入到业务逻辑上. Knative 的一个很重要的目标就是制定云原生.跨平台的 Serverless 编排标准.它的优势在于: 基于 Kubernetes 实现 Serverless 编排: 基于 Istio 实现服务的

前端开发福音!阿里Weex跨平台移动开发工具开源-b

阿里巴巴今天在Qcon大会上宣布跨平台移动开发工具Weex开放内测邀请.Weex能够完美兼顾性能与动态性,让移动开发者通过简捷的前端语法写出Native级别的性能体验,并支持iOS.安卓.YunOS及Web等多端部署. 对于移动开发者来说,Weex主要解决了频繁发版和多端研发两大痛点,同时解决了前端语言性能差和显示效果受限的问题.开发者可通过Weex官网申请内测:http://alibaba.github.io/weex/ 开发者只需要在自己的APP中嵌入Weex的SDK,就可以通过撰写HTML