1. 准备工作

1.1 注册阿里云账号

使用淘宝账号或手机号,开通阿里云账号,并通过实名认证(可以用支付宝认证)

1.2 免费开通IoT物联网套件

产品官网 https://www.aliyun.com/product/iot

1.3 软件开发环境

  • 语言 C#
  • 工具 Visual Studio IDE

2. IoT平台云端开发

2.1 创建基础版产品

产品信息

消息通信Topic

2.2 注册设备

获取设备身份三元组,ProductKey,DeviceName,DeviceSecret

3. 设备端开发

3.1 IoT平台接入password签名算法文件

签名规则参考 https://www.yuque.com/cloud-dev/iot-tech/mebm5g

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
namespace iotxsdkmqttnet {public class IotSignUtils {public static string sign(Dictionary<string, string> param, string deviceSecret, string signMethod) {string[] sortedKey = param.Keys.ToArray();Array.Sort(sortedKey);StringBuilder builder = new StringBuilder();foreach(var i in sortedKey){builder.Append(i).Append(param[i]);}byte[] key = Encoding.UTF8.GetBytes(deviceSecret);byte[] signContent = Encoding.UTF8.GetBytes(builder.ToString());//根据signMethod动态调整,硬编码了: 'hmacmd5'var hmac = new HMACMD5(key);byte[] hashBytes = hmac.ComputeHash(signContent);StringBuilder signBuilder = new StringBuilder();foreach (byte b in hashBytes)signBuilder.AppendFormat("{0:x2}", b);return signBuilder.ToString();}}
}

3.2 接入IoT平台C#版本的MQTT库

C#的mqtt库 https://www.nuget.org/packages/M2Mqtt/

目前最好用的C#库是 eclipse出的M2Mqtt库,

主页链接: http://www.eclipse.org/paho/clients/dotnet/

项目的地址是 https://github.com/eclipse/paho.mqtt.m2mqtt

使用方式是在vs 的命令中输入 Install-Package M2Mqtt

组件下载:M2Mqtt.Net.dll (v4.3.0最新版 2019.7.16本地生成)

链接:https://pan.baidu.com/s/1lacs13v9nde8d2wrj2oU4g 
提取码:l8cg

3.3 设备端应用程序

using System;
using System.Net;
using System.Collections.Generic;
using uPLibrary.Networking.M2Mqtt;
using uPLibrary.Networking.M2Mqtt.Messages;
using System.Text;
using System.Linq;namespace iotMqttDemo {class MainClass {static string ProductKey = "******";static string DeviceName = "******";static string DeviceSecret = "******";static string RegionId = "cn-shanghai";static string PubTopic = "/" + ProductKey + "/" + DeviceName + "/update";static string SubTopic = "/" + ProductKey + "/" + DeviceName + "/get";public static void Main(string[] args){IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName());string clientId = host.AddressList.FirstOrDefault(ip => ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork).ToString();string t = Convert.ToString(DateTimeOffset.Now.ToUnixTimeMilliseconds());string signmethod = "hmacmd5";Dictionary<string, string> dict = new Dictionary<string, string>();dict.Add("productKey", ProductKey);dict.Add("deviceName", DeviceName);dict.Add("clientId", clientId);dict.Add("timestamp", t);string mqttUserName = DeviceName + "&" + ProductKey;string mqttPassword = IotSignUtils.sign(dict, DeviceSecret, signmethod);string mqttClientId = clientId + "|securemode=3,signmethod="+signmethod+",timestamp=" + t + "|";string targetServer = "tcp://" + ProductKey + ".iot-as-mqtt." + RegionId + ".aliyuncs.com";ConnectMqtt(targetServer, mqttClientId, mqttUserName, mqttPassword);}static void ConnectMqtt(string targetServer, string mqttClientId, string mqttUserName, string mqttPassword){MqttClient client = new MqttClient(targetServer);client.ProtocolVersion = MqttProtocolVersion.Version_3_1_1;client.Connect(mqttClientId, mqttUserName, mqttPassword, false, 60);client.MqttMsgPublishReceived += Client_MqttMsgPublishReceived;//发布消息String content = "{'content':'msg from :" + mqttClientId + ", 这里是.NET设备'}";var id = client.Publish(PubTopic, Encoding.ASCII.GetBytes(content));//订阅消息client.Subscribe(new string[] { SubTopic }, new byte[] { 0 });}static void Client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e){// handle message receivedstring topic = e.Topic;string message = Encoding.ASCII.GetString(e.Message);}}
}

4. 运行结果

云端看到设备上线记录,数据上报记录

至此,完成了.NET平台设备C#语言接入阿里云IoT物联网云平台的开发实践。

MQTT模拟器:关注 

知识课堂:C# MQTTnet使用心得和C# MQTT库M2Mqtt的使用方法

https://blog.csdn.net/uaime/article/details/96119179

C# 基于开源MQTT自主接入阿里云IoT平台相关推荐

  1. Esp8266 进阶之路29【高级篇】百万条消息免费之乐鑫esp8266使用TCP直连模式MQTT协议接入阿里云物联网平台,支持私家服务器对接,支持阿里云规则引擎。(附带Demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 序号 SDK版本 内容 链接 1 nonos2.0 搭建 ...

  2. 阿里IOT云平台(二)---10分钟物联网设备接入阿里云IoT平台

    本文转载自:https://www.geek-workshop.com/thread-37883-1-1.html.基于VS Code和Node.js 我替换了原文中的温度.湿度属性图(主要是修正了标 ...

  3. 10分钟虚拟设备接入阿里云IoT平台实战

    10分钟虚拟设备接入阿里云IoT平台实战 1. 准备工作 1.1 注册阿里云账号 使用个人淘宝账号或手机号,开通阿里云账号,并通过实名认证(可以用支付宝认证) 1.2 免费开通IoT物联网套件 产品官 ...

  4. 使用ESP8266(基于官方SDK)接入阿里云物联网平台

    引言 作为物联网开发者,ESP8266应该一点都不陌生了.只需十几块钱淘宝一个小开发板,就可以连上Wi-Fi接入互联网,尽情享受从手机端或Web端控制设备的乐趣.ESP8266接入Wi-Fi是没问题, ...

  5. 踏入物联网第一篇——STM32F103开发板接入阿里云IOT平台

    刚开始学习物联网,在研究STM32的路上记录下心得!!! 最近入手了一块STM32F103的板子,顺手就研究了下 如何通过MQTT协议连接阿里云物联网平台. 开发板是STM32F103C8T6  芯片 ...

  6. 4G Modbus Json边缘网关接入阿里云IoT平台

    LTE-669P 4G边缘网关系列 阿里云平台连接教程 今天介绍物联设备 LTE-669P 4G边缘网关如何接入阿里云平台系列. LTE-669P是一款工业级4G JSON无线边缘解析网关,支持RS4 ...

  7. Linux设备如何接入阿里云IoT平台

    本文以在Ubuntu x86_64系统上编译设备端C语言SDK为例,介绍设备上云的配置和开发过程. 前提条件 在进行本示例配置前,您需要完成以下准备工作: 注册阿里云账号,并完成实名认证. 开通物联网 ...

  8. 10分钟物联网设备接入阿里云IoT平台

    前言 最近尝试了一下阿里云IoT物联网平台,还是蛮强大的.在此记录一下学习过程. 本教程不需要任何外围硬件,一台电脑和一根能上网的网线即可.算是一篇Hello World了.先上效果图 第一章 准备工 ...

  9. Modbus设备通过边缘网关接入阿里云IoT平台

    无需编程,通过边缘计算网关把工业领域常见的Modbus协议的硬件设备接入IoT云平台. 前提条件 根据本产品的环境要求,选择运行边缘计算产品的硬件载体,例如准备一个硬件网关或者PC机,然后安装本产品. ...

最新文章

  1. linux关机_Linux系统管理:开机启动流程(一)
  2. 【NLP】文本分类还停留在BERT?对偶比学习框架也太强了
  3. 三层业务类(DAL)必用的通用方法之一
  4. Backblaze发布2016年2季度硬盘可靠性报告
  5. Android IntentService使用
  6. iOS环境,Appium不支持driver.current_activity等操作
  7. [Java IO]04_系统标准IO
  8. Spring Boot集成微信扫码登录(实测通过)
  9. 计算机 运行新ie 命令,怎样修复ie浏览器-运行什么命令可以修复IE浏览器,请说的详细 – 手机爱问...
  10. 使用robo3t操作mongodb以及文档的插入、更新、删除以及查询操作
  11. LaTeX中的参考文献-BibTeX
  12. 什么是PLC?可编程控制器的结构和工作原理介绍
  13. Hugo博客双线部署
  14. ollydbg 教程
  15. win10网络适配器不见了_Win10网络适配器消失不见了怎么办?,爱纯净官网
  16. html文件如何创建文件,怎么创建html文件
  17. 车牌识别停车场管理系统中 无感支付停车
  18. gitlab ce 7部署问题小结
  19. Path常用方法,不积硅步无以至千里
  20. 广东高考英语计算机辅助口语考试,广东高考英语人机对话口语考试题型分析及备考策略...

热门文章

  1. all3dp.com网站中全部Arduino项目(2022.7.1)
  2. n行Python代码系列:两行代码去除抖音快手短视频尾部Logo
  3. php实现dota天梯、wow竞技场、lol排位赛匹配加分算法ELO
  4. json对齐行尾的注释 - 在vscode格式化
  5. plc程序中参数与变量有何区别
  6. 支持视频的富文本编辑器
  7. axios请求跨域前端解决_完美解决axios跨域请求出错的问题
  8. 苏宁拼购818“煽风点火” 拿下品质拼购第一品牌
  9. Hive分析窗口函数
  10. java poi Exce加密l文件导出和下载