企业服务器与物联网平台通信

2024-05-29 22:48

本文主要是介绍企业服务器与物联网平台通信,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

企业服务器与物联网平台通信
https://blog.csdn.net/weixin_44101331/article/details/86504614
目录
一,什么是服务端订阅
二,开发指南(.NET)
1,配置服务端订阅
2,接入 SDK
3,身份认证
4,设置消息接收接口
5,消息体格式
一,什么是服务端订阅
服务端可以直接订阅产品下配置的所有类型的消息。
目前,新版物联网平台通过HTTP/2通道进行消息流转。配置HTTP/2服务端订阅后,物联网平台会将消息通过HTTP/2通道推送至服务端。通过接入HTTP/2 SDK,企业服务器可以直接从物联网平台接收消息。HTTP/2 SDK提供身份认证、Topic订阅、消息发送和消息接收能力,并支持设备接入和云端接入能力。HTTP/2 SDK适用于物联网平台与企业服务器之间的大量消息流转,也支持设备与物联网平台之间的消息收发。
注:旧版物联网平台用户使用阿里云消息服务(MNS)进行消息流转,您可以将服务端订阅方式升级为HTTP/2方式。如果您继续使用在MNS这种方式,物联网平台将设备消息推送至MNS,服务端应用通过监听MNS队列接收设备消息。
二,开发指南(.NET)
介绍如何配置服务端订阅、接入HTTP/2 .NET版SDK、进行身份认证和设置消息接收接口。以下简单介绍服务端订阅的开发流程。有关SDK配置的具体信息,请参考Demo。
1,配置服务端订阅
登录物联网平台控制台。
左侧导航栏选择设备管理 > 产品。
在产品列表中,搜索到要配置服务端订阅的产品,并单击该产品对应的查看按钮,进入产品详情页。
单击服务端订阅 > 设置。
选择推送的消息类型。
设备上报消息:指产品下所有设备 Topic 列表中,具有发布权限的 Topic 中的消息。勾选后,可以通过 HTTP/2 SDK 接收这些消息。
设备状态变化通知:指一旦该产品下的设备状态变化时通知的消息,例如设备上线、下线的消息。设备状态消息的发送 Topic 为 /as/mqtt/status/ Y o u r P r o d u c t K e y / {YourProductKey}/ YourProductKey/{YourDeviceName}。勾选后,可以通过 HTTP/2 SDK 接收设备状态变化的通知消息。
2,接入 SDK
在工程中添加依赖包 iotx-as-http2-net-sdk.dll。
3,身份认证
使用服务端订阅功能,需要基于您的阿里云 AccessKey 进行身份认证并建立连接。
建立链接示例如下:
//阿里云accessKey:即您的账号的 AccessKey ID
string accessKey = “xxxxxxxxxxxxxxx”;
//阿里云accessSecret:即 AccessKey ID对应的 AccessKey Secret
string accessSecret = “xxxxxxxxxxxxxxx”;
//regionId:为您的物联网平台服务地域
string regionId = “cn-shanghai”;
//阿里云uid:您的账号 ID
string uid = “xxxxxxxxxxxxxxx”;
//domain
string domain = “.aliyuncs.com”;
//endpoint
string endpoint = “https://” + uid + “.iot-as-http2.” + regionId + domain;

//连接参数配置
Profile profile = new Profile();
profile.AccessKey = accessKey;
profile.AccessSecret = accessSecret;
profile.RegionId = regionId;
profile.Domain = domain;
profile.Url = endpoint;
//清除堆积消息
profile.CleanSession = true;
profile.GetAccessKeyAuthParams();

//构造客户端
IMessageClient client = new MessageClient(profile);

//连接HTTP2通道,并接收消息
client.DoConnection(new DefaultHttp2MessageCallback());

//指定topic回调
client.SetMessageListener("/KaTeX parse error: Expected 'EOF', got '#' at position 18: …ourProductKey}/#̲", new CustomHt…{YourProductKey}/#",messageCallback);用于设置回调。本示例中,设置为指定 Topic 回调。您可以设置为指定 Topic 回调,也可以设置为通用回调。
指定 Topic 回调
指定 Topic 回调的优先级高于通用回调。一条消息匹配到多个 Topic 时,按字典顺序优先调用,并且仅回调一次。
设置回调时,可以指定带通配符的 Topic,如 / Y o u r P r o d u c t K e y / {YourProductKey}/ YourProductKey/{YourDeviceName}/#
示例:
client.SetMessageListener("/alEddfaXXXX/device1/#",messageCallback);
//当收到消息的Topic,如"/alEddfaXXXX/device1/update",匹配指定Topic时,会优先调用该回调
1
2
通用回调
未指定 Topic 回调的消息,则调用通用回调。
设置通用回调方法:
new DefaultHttp2MessageCallback()
1
5,设置回复 ACK。
对于 QOS>0 的消息,消费后需要回复 ACK。SDK 支持自动回复 ACK 和手动回复 ACK。默认为自动回复 ACK。本示例中未设置回复 ACK,则默认为自动回复。
自动回复 ACK:设置为自动回复 ACK 后,若 IHttp2MessageCallback.consume 的返回值为 ConsumeAction.CommitSuccess 则 SDK 会发送 ACK;返回 ConsumeAction.CommitFailure 或抛出异常,则不会返回 ACK。对于 QOS>0 且未回复 ACK 的消息,服务端会重新发送。
手动回复 ACK:通过ConsumeAction.CommitFailure设置手动回复 ACK。
设置为手动回复 ACK 后,需要调用MessageClient.DoAck()方法回复 ACK,参数为 topic、messageId和连接体。 这些参数可以在接收消息中获取到。
手动回复 ACK 的方法:
client.DoAck(connection, topic, messageId, delegate);
1
5,消息体格式

1,设备状态通知:
{
“status”:“online|offline”, //设备状态,online上线,offline离线
“productKey”:“12345565569”, //设备所属产品的唯一标识
“deviceName”:“deviceName1234”, //设备名称
“time”:“2018-08-31 15:32:28.205”, //发送通知的时间点
“utcTime”:“2018-08-31T07:32:28.205Z”, //发送通知的UTC时间点
“lastTime”:“2018-08-31 15:32:28.195”, //状态变更时最后一次通信时间
“utcLastTime”:“2018-08-31T07:32:28.195Z”, //状态变更时最后一次通信的UTC时间
“clientIp”:“123.123.123.123” //设备公网出口IP
}
说明 为避免消息时序紊乱造成影响,建议您根据lastTime来维护最终设备状态。

2,设备生命周期变更:
{
“action” : “create|delete|enable|disable”,
“iotId” : “4z819VQHk6VSLmmBJfrf00107ee201”,
“productKey” : “12345565569”,
“deviceName” : “deviceName1234”,
“deviceSecret” : “”,
“messageCreateTime”: 1510292739881
}

3,设备拓扑关系变更:
{
“action” : “add|remove|enable|disable”,
“gwIotId”: “4z819VQHk6VSLmmBJfrf00107ee200”,
“gwProductKey”: “1234556554”,
“gwDeviceName”: “deviceName1234”,
“devices”: [
{
“iotId”: “4z819VQHk6VSLmmBJfrf00107ee201”,
“productKey”: “12345565569”,
“deviceName”: “deviceName1234”
}
],
“messageCreateTime”: 1510292739881
}

4,网关发现子设备上报:
{
“gwIotId”:“4z819VQHk6VSLmmBJfrf00107ee200”,
“gwProductKey”:“1234556554”,
“gwDeviceName”:“deviceName1234”,
“devices”:[
{
“iotId”:“4z819VQHk6VSLmmBJfrf00107ee201”,
“productKey”:“12345565569”,
“deviceName”:“deviceName1234”
}
]
}

这篇关于企业服务器与物联网平台通信的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1014852

相关文章

MySQL MCP 服务器安装配置最佳实践

《MySQLMCP服务器安装配置最佳实践》本文介绍MySQLMCP服务器的安装配置方法,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下... 目录mysql MCP 服务器安装配置指南简介功能特点安装方法数据库配置使用MCP Inspector进行调试开发指

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

RabbitMQ工作模式中的RPC通信模式详解

《RabbitMQ工作模式中的RPC通信模式详解》在RabbitMQ中,RPC模式通过消息队列实现远程调用功能,这篇文章给大家介绍RabbitMQ工作模式之RPC通信模式,感兴趣的朋友一起看看吧... 目录RPC通信模式概述工作流程代码案例引入依赖常量类编写客户端代码编写服务端代码RPC通信模式概述在R

在Spring Boot中实现HTTPS加密通信及常见问题排查

《在SpringBoot中实现HTTPS加密通信及常见问题排查》HTTPS是HTTP的安全版本,通过SSL/TLS协议为通讯提供加密、身份验证和数据完整性保护,下面通过本文给大家介绍在SpringB... 目录一、HTTPS核心原理1.加密流程概述2.加密技术组合二、证书体系详解1、证书类型对比2. 证书获

Windows Server 2025 搭建NPS-Radius服务器的步骤

《WindowsServer2025搭建NPS-Radius服务器的步骤》本文主要介绍了通过微软的NPS角色实现一个Radius服务器,身份验证和证书使用微软ADCS、ADDS,具有一定的参考价... 目录简介示意图什么是 802.1X?核心作用802.1X的组成角色工作流程简述802.1X常见应用802.

Python模拟串口通信的示例详解

《Python模拟串口通信的示例详解》pySerial是Python中用于操作串口的第三方模块,它支持Windows、Linux、OSX、BSD等多个平台,下面我们就来看看Python如何使用pySe... 目录1.win 下载虚www.chinasem.cn拟串口2、确定串口号3、配置串口4、串口通信示例5

使用Nginx配置文件服务器方式

《使用Nginx配置文件服务器方式》:本文主要介绍使用Nginx配置文件服务器方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 为什么选择 Nginx 作为文件服务器?2. 环境准备3. 配置 Nginx 文件服务器4. 将文件放入服务器目录5. 启动 N

基于C#实现MQTT通信实战

《基于C#实现MQTT通信实战》MQTT消息队列遥测传输,在物联网领域应用的很广泛,它是基于Publish/Subscribe模式,具有简单易用,支持QoS,传输效率高的特点,下面我们就来看看C#实现... 目录1、连接主机2、订阅消息3、发布消息MQTT(Message Queueing Telemetr

在.NET平台使用C#为PDF添加各种类型的表单域的方法

《在.NET平台使用C#为PDF添加各种类型的表单域的方法》在日常办公系统开发中,涉及PDF处理相关的开发时,生成可填写的PDF表单是一种常见需求,与静态PDF不同,带有**表单域的文档支持用户直接在... 目录引言使用 PdfTextBoxField 添加文本输入域使用 PdfComboBoxField

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服