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

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

相关文章

Python极速搭建局域网文件共享服务器完整指南

《Python极速搭建局域网文件共享服务器完整指南》在办公室或家庭局域网中快速共享文件时,许多人会选择第三方工具或云存储服务,但这些方案往往存在隐私泄露风险或需要复杂配置,下面我们就来看看如何使用Py... 目录一、android基础版:HTTP文件共享的魔法命令1. 一行代码启动HTTP服务器2. 关键参

Linux之platform平台设备驱动详解

《Linux之platform平台设备驱动详解》Linux设备驱动模型中,Platform总线作为虚拟总线统一管理无物理总线依赖的嵌入式设备,通过platform_driver和platform_de... 目录platform驱动注册platform设备注册设备树Platform驱动和设备的关系总结在 l

Python实现MQTT通信的示例代码

《Python实现MQTT通信的示例代码》本文主要介绍了Python实现MQTT通信的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 安装paho-mqtt库‌2. 搭建MQTT代理服务器(Broker)‌‌3. pytho

SpringBoot改造MCP服务器的详细说明(StreamableHTTP 类型)

《SpringBoot改造MCP服务器的详细说明(StreamableHTTP类型)》本文介绍了SpringBoot如何实现MCPStreamableHTTP服务器,并且使用CherryStudio... 目录SpringBoot改造MCP服务器(StreamableHTTP)1 项目说明2 使用说明2.1

mysql中的服务器架构详解

《mysql中的服务器架构详解》:本文主要介绍mysql中的服务器架构,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、mysql服务器架构解释3、总结1、背景简单理解一下mysqphpl的服务器架构。2、mysjsql服务器架构解释mysql的架

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信

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. 证书获