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

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

相关文章

Nginx屏蔽服务器名称与版本信息方式(源码级修改)

《Nginx屏蔽服务器名称与版本信息方式(源码级修改)》本文详解如何通过源码修改Nginx1.25.4,移除Server响应头中的服务类型和版本信息,以增强安全性,需重新配置、编译、安装,升级时需重复... 目录一、背景与目的二、适用版本三、操作步骤修改源码文件四、后续操作提示五、注意事项六、总结一、背景与

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4:

Linux查询服务器 IP 地址的命令详解

《Linux查询服务器IP地址的命令详解》在服务器管理和网络运维中,快速准确地获取服务器的IP地址是一项基本但至关重要的技能,下面我们来看看Linux中查询服务器IP的相关命令使用吧... 目录一、hostname 命令:简单高效的 IP 查询工具命令详解实际应用技巧注意事项二、ip 命令:新一代网络配置全

Python开发简易网络服务器的示例详解(新手入门)

《Python开发简易网络服务器的示例详解(新手入门)》网络服务器是互联网基础设施的核心组件,它本质上是一个持续运行的程序,负责监听特定端口,本文将使用Python开发一个简单的网络服务器,感兴趣的小... 目录网络服务器基础概念python内置服务器模块1. HTTP服务器模块2. Socket服务器模块

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详

Python WSGI HTTP服务器Gunicorn使用详解

《PythonWSGIHTTP服务器Gunicorn使用详解》Gunicorn是Python的WSGI服务器,用于部署Flask/Django应用,性能高且稳定,支持多Worker类型与配置,可处... 目录一、什么是 Gunicorn?二、为什么需要Gunicorn?三、安装Gunicorn四、基本使用启

通过配置nginx访问服务器静态资源的过程

《通过配置nginx访问服务器静态资源的过程》文章介绍了图片存储路径设置、Nginx服务器配置及通过http://192.168.206.170:8007/a.png访问图片的方法,涵盖图片管理与服务... 目录1.图片存储路径2.nginx配置3.访问图片方式总结1.图片存储路径2.nginx配置

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

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

Linux之platform平台设备驱动详解

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