600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > .NET平台设备使用C#语言接入阿里云IoT——设备接入类

.NET平台设备使用C#语言接入阿里云IoT——设备接入类

时间:2021-02-27 18:26:30

相关推荐

.NET平台设备使用C#语言接入阿里云IoT——设备接入类

1. 准备工作

1.1 注册阿里云账号

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

1.2 免费开通IoT物联网套件

产品官网​​/product/iot​​

1.3 软件开发环境

语言 C#工具 Visual Studio IDE

2. IoT平台云端开发

2.1 创建基础版产品

产品信息

消息通信Topic

2.2 注册设备

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

3. 设备端开发

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

签名规则参考​​/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 = puteHash(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库​​/packages/M2Mqtt/​​

3.3 设备端应用程序

using System;using ;using System.Collections.Generic;using working.M2Mqtt;using working.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 == .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 = ProductKey + ".iot-as-mqtt." + RegionId + ".";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物联网云平台的开发实践

物联网平台产品介绍详情:​​/product/iot/iot_instc_public_cn​​

阿里云物联网平台客户交流群

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。