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 Frameork4 控制台项目,名称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.iot.message;
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();

运行你的项目

五,运行测试

到此这篇关于C#对接阿里云IOT平台进行设备开发的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • c#检测usb设备拨插类库USBClassLibrary分享

    复制代码 代码如下: private void USBPort_USBDeviceAttached(objectsender,USBClass.USBDeviceEventArgs e){if (!MyUSBDeviceConnected){if(USBClass.GetUSBDevice(MyDeviceVID, MyDevicePID,ref USBDeviceProperties, false)){ //My Device is connectedMyUSBDeviceConnected

  • 如何用C#在PC上查找连接蓝牙设备并实现数据传输

    目录 概述 代码实现 完整代码 概述 在PC端用.NET开发一个蓝牙下载的程序.实现在PC上查找周围的蓝牙设备(主要是手机),并将PC上的文件通过蓝牙传输到手机上.目前我采用的是OpenNETCF.Net.Bluetooth,能够正常发现周围的蓝牙设备,手机也能够正常进行蓝牙连接并接收文件. 代码实现 1.查找周围蓝牙设备 BluetoothClient bc = new BluetoothClient(); BluetoothDeviceInfo[] bdi; bdi = bc.Discove

  • c#使用wmi查询usb设备信息示例

    开发环境:Visual Studio V2010 .NET Framework 4 Client Profile 复制代码 代码如下: using System;using System.Management;using System.Text.RegularExpressions;using System.Collections.Generic; namespace Splash.IO.PORTS{/// <summary>/// 即插即用设备信息结构/// </summary>

  • C# 基于udp广播收集局域网类所有设备信息

    一个简单好理解的例子,复制过去就能用,能看到效果 首先对功能的思考,他怎么去实现 1.制定udp广播的端口(如果收发用同一个端口就会一直接收到自己给自己广播的消息) 2.启动后向局域网广播约定的字符串(字符串包含了广播端的IP和用来接收响应的端口号) 3.设备需要内置一个功能,打开约定的接收广播端口,持续做好对udp服务端的响应工作,接收广播字符串后解析,向广播端发送自己的IP和自己设备的型号信息(送至:解析到的IP,端口号) 4.广播端接收这个设备发送的字符串,解析生成模型,放进动态的list

  • C#从文件或标准输入设备读取指定行的方法

    本文实例讲述了C#从文件或标准输入设备读取指定行的方法.分享给大家供大家参考.具体如下: using System; using System.IO; using System.Runtime.InteropServices; using System.Text.RegularExpressions; using System.Collections.Generic; namespace RobvanderWoude { class ReadLine { static int Main( str

  • C#编程实现向并口设备发送指令、获取并口设备的状态

    using System; using System.Diagnostics; using System.Runtime.InteropServices; using System.Text; using System.Windows.Forms; namespace ParallelPort { public partial class Form1 : Form { const uint GENERIC_READ = 0x80000000; const uint GENERIC_WRITE =

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

    一,创建阿里云 IOT 产品.设备 目前阿里云每月赠送 100 万条流量,可以免费使用基础版.高级版,开通后即可免费使用. 阿里云 IOT 平台地址https://iot.console.aliyun.com/product 登陆开通后,新建测试产品.设备. 创建产品 产品的定义是,一类硬件.功能.外形完全相同的设备.所以,添加一个产品后,我们就可以在此类别下添加成千上万个设备. 下面的信息要选.设备.非网关,原因后面说. 设定一个产品 创建一个产品后,就需要设定这个产品的特征,它有那些功能?它

  • PHP对接阿里云虚拟号的实现(号码隐私保护)

    博主使用的fastadmin 封装框架 实现功能:AXN隐私号绑定.解绑: 场景:为店铺手机号开通虚拟号,用户联系店铺展示虚拟号码: 官方开放文档地址:https://help.aliyun.com/document_detail/59655.html?spm=a2c4g.11174283.6.661.b8365d50CKM5Ma 效果如下: 参考官网开放文档,下载SDK:解压得到 aliyun-dypls-php-sdk 文件夹: 将解压的文件夹内的 api_sdk 文件夹与 api_demo

  • 详细介绍Java阿里云的短信验证码实现

    阿里云手机短信验证码 第一步 登录阿里云开放平台 1.进入阿里云开放平台---->点击控制台 2.点击AccessKey管理 3.点击之后会弹出提示,选择开始使用子用户 4.新建一个用户组,然后按要求填写即可 5.创建一个用户,按要求填写内容,勾选编程访问 6.会得到AccessKey(id,密码) 要将这个账号保存下来! //用户登录名称 ==================== //AccessKey ID ==================== //AccessKey Secret ==

  • Java实现阿里云短信接口的示例

    阿里云短信服务接口 阿里云短信服务(Short Message Service)是阿里云为用户提供的一种通信服务的能力. 支持向国内和国际快速发送验证码.短信通知和推广短信,服务范围覆盖全球200多个国家和地区.国内短信支持三网合一专属通道,与工信部携号转网平台实时互联.电信级运维保障,实时监控自动切换,到达率高达99%.完美支撑双11期间20亿短信发送,6亿用户触达. 快速开发 ①开启短信服务 1)登陆阿里云服务平台 2)选择控制台 3)点击左上角下拉按钮选择短信服务 4)开通短信服务 ②实名

  • SpringBoot整合阿里云视频点播的过程详解

    目录 1.准备工作 2.服务端SDK的使用 2.1 导入依赖 2.2 初始化类 2.3 创建读取公共常量的工具类 2.4 获取视频播放地址 2.5 获取视频播放凭证 2.6 上传视频到阿里云视频点播服务 3.springboot项目中实践 3.1 上传视频到阿里云 3.2 根据视频id删除视频 1.准备工作 首先需要在阿里云开通视频点播服务: 1.首先,进入到阿里云视频点播平台,点击开通服务,选择按使用流量计费即可 2.开通之后点击进入管理控制台即可 视频点播有什么用? 视频点播(ApsaraV

  • docker将本地镜像发布到阿里云的实现方法

    目录 创建仓库镜像 命名空间 镜像仓库 将镜像推送到仓库 查看自己的用户名 登录 推送 查询镜像 推送 查看 下载镜像 创建仓库镜像 进入阿里云开发者平台点击,进行登录,这里可以用支付宝等进行快捷登录 点击控制台,进入到控制台页面 鼠标移入菜单 选择容器镜像服务 选择个人实力 并进行创建 命名空间 需要设置密码等 点击命名空间 输入命名空间 镜像仓库 点击镜像仓库 填写相关信息 然后点击下一步 点击本地仓库并创建 就像git新建仓库一样,他会出现推送的信息, 或者点击仓库页面的管理,也会出现类似

  • 通过cmd 连接阿里云服务器的操作方法

    目录 通过cmd 连接阿里云服务器 1.前提知识了解 什么是服务器? 2.如何连接或者说操作呢 3.连接服务器 第一种: cmd 连接 第二种:Xshell 连接 通过cmd 连接阿里云服务器 1.前提知识了解 什么是服务器? 服务器就是一台机电脑! 有内存 有磁盘 有cpu 就是没有屏幕看张图片: 那个红色的大块 就是一个电脑 只不过没有屏幕 里面有内存 cpu… 2.如何连接或者说操作呢 如果你买了服务器 但是用一次 还要跑一次 那不可能而且服务的环境要求很高要放防止静电要避免高温要有防污处

  • SpringBoot实现阿里云短信接口对接的示例代码

    前言 公司最近项目需要一个手机验证码的功能,任务确定后,倍感亚历山大,以为和第三方对接的都好麻烦,查阿里的API.网上大神写的博客,各种查之后才发现,简单的一塌糊涂,这里想说个问题,不知道其他的攻城狮们是不是和我一样的心里,刚接触个没做过的任务时,会一脸懵里的着急,无从下手的感觉,后来会了,就觉得简单的一*,在这里我说一下自己的体会,遇到任何难点,先理思路.任务拆分.逐个查资料,其实一套下来,就不会那种一脸懵逼的干着急... 所需条件 1.阿里云账户 2.开通云通讯中的短信服务 3.申请短信签名

  • 手把手教你用python发送短消息(基于阿里云平台)

    本次是纯发送演示,一步步讲解如何让发送成功,后继会介绍与网站注册功能的结合运用,敬请关注"有只狗狗叫多多" 一.首先,注册阿里云账号一个,完成实名认证,然后在产品中找到短信服务,选择免费开通 这里还是要推荐下小编的Python学习群:483546416,不管你是小白还是大牛,小编我都欢迎,不定期分享干货,包括小编自己整理的一份2017最新的Python资料和0基础入门教程,欢迎初学和进阶中的小伙伴.在不忙的时间我会给大家解惑. 二.控制台生成后,进入短信控制台,获取你的AK,保留备用,

  • SpringBoot集成阿里云OSS图片上传

    简述 最近做的公司项目,图片比较多,不想给其存储到自己服务器上,就买了阿里云的OSS服务器来哦进行存储,其实集成第三方平台,一般没什么难度,当然,你要仔细看对方的API文档,这篇主要说一下个人集成OSS的过程 步骤 1.pom.xml中添加OSS的SDK <!-- 图片上传 SDK 阿里云oss --> <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-os

随机推荐