阿里云物联网.NETCore客户端|CZGL.AliloTClient:3.订阅To pic与响应Topic

简介: 阿里云物联网.NETCore客户端|CZGL.AliloTClient:3.订阅To pic与响应Topic

CZGL.AliIoTClient 将 Topic 分为五种

分别是:普通Topic、属性上报、属性下发、事件上报、服务调用,除了普通 Topic,每种 Topic 都有消息的发送、响应。


普通 Topic ,消息发送或,根据 MQTT 协议,SDK 严格保证消息能够到达另一端。

设备推送属性、事件等数据到服务器,则服务器要响应,

服务器推送(下发)数据到设备,则设备要响应。


当然,这些响应可有可无,无实质的影响。

每种、每个 Topic 都有特定的 MQTT 通讯地址,这些地址已经在 CZGL.AliIoTClient 中自动生成,你仅需填写普通 Topic 的通讯地址即可。


1) 订阅 Topic


订阅 Topic 前,需要在阿里云物联网定义相应的 Topic 以及设置 订阅 权限,

普通 Topic ,使用 string[] 包含列表,然后在调用连接方法时作为参数传入,亦可在连接服务器后,添加需要的订阅。


普通 Topic 可以动态添加,属于 热订阅 。

使用方法:


// 设置要订阅的Topic、运行接收内容的Topic
            string[] topics = new string[] { 
                                client.CombineHeadTopic("get"),
                                "/a1xrkGSkb5R/mire/user/get1" };
            client.ConnectIoT(topics,null,60);


Topic 地址比较长,你可以记录 .../user/ 后的内容,使用 CombineHeadTopic() 可自动生成,


client.CombineHeadTopic("get")


2)响应


当你使用属性、事件、服务功能,对服务器进行数据传输时,服务器会做出响应,你可以选择接收响应,也可以不接收响应。


CZGL.AliIoTClient 默认不接收服务器的响应信息。实际上这些响应信息一般只在调测时需要。


响应方法 说明
OpenEventPostReply() 接收上报事件后服务器的响应
OpenPropertyPostReply() 接收设备属性上传后服务器的响应
OpenServicePostRaw() 允许服务器调用服务 新版本已经取消这个设置
OpenPropertyDownPost() 允许服务器下发设置设备属性指令

注意,这些响应,必须在连接客户端前设置,并且在客户端已经连接后,不能再使用以上方法,否则会弹出异常。


已修复,你可以在程序的任意阶段打开接收功能,任意取消和打开。

查看这些功能是否打开:


public CZGL.AliIoTClient.OpenTopic getOpenTopic()


OpenTopic 具有 8 个属性,用于获取或设置是否打开某种功能的接收。


属性 说明 默认值
CommonTopic 是否接收普通Topic 固定为true,不能更改
PropertyUpRawReplyTopic 设备上传透传属性数据后服务器的响应 false
PropertyPostReplyTopic 设备上传Alink json属性数据后服务器的响应 false
PropertyDownRaw 服务器下发设置属性的命令,透传 false
PropertyDownPost 服务器下发设置属性的命令,Alink json false
EventUpRawReply 设备事件上报,接收服务器的响应,透传 false
EventPostReply 设备事件上报,接收服务器的响应,Alink json false
ServiceDownRaw 服务器调用服务,透传 false
ServicePostRaw 服务器调用服务,Alink json false


由于区分 透传 和 Alink json,若是透传,设置上面的 Alink json 项,是无效的,反之亦然。


3)连接服务器后


在连接服务器后,你还可以增加要订阅的普通 Topic:


public void TopicAdd(string[] topics, [byte[] QOS = null])


示例:


client.TopicAdd(new string[]{ client.CombineHeadTopic("get") })


移除已经订阅的 Topic:


public void TopicRemove(string[] topics)


在连接服务器后,可以取消接收服务器的响应信息,但是不能再重新接收。


方法 说明
CloseEventPostReply() 不再接收设备上传事件后服务器的响应
ClosePropertyPostReply() 不再接收设备上传属性后服务器的响应
CloseServicePostRaw() 不允许服务器下发调用设备服务的指令已删除此设置
ClosePropertyDownPost() 不允许服务器下发设置设备属性的指令


你可以在客户端连接服务器后,取消接收响应。但是,取消后,不能再订阅!


已修复,你可以在程序任意阶段取消后再打开接收。


4) Topic 说明


获取已经订阅的Topic列表:


public string[] GetSubedList { get; }


示例:


var topicList = client.GetSubedList;


服务器设置设备属性、调用服务等功能,由于采用 MQTT 通讯,是订阅/推送形式的,所以,无论什么功能的数据传输,本质还是Topic。 因此,那些设备属性上报、设置设备属性等,可以配置 Topic 属性。


CZGL.AliIoTClient 中,客户端可以订阅需要的 Topic,连接服务器后,服务器可以向所有 Topic 发送数据,但只有客户端指定订阅的 Topic,客户端才会接收到推送,不然无论在控制台怎么点击发送,客户端都是不会接收到的。


有个地方需要注意的是,对于普通Topic,是随客户端连接时的配置,决定服务器是否能够推送消息到客户端,动态的。


而属性、事件、服务这些功能,会保存上一次的配置。当你打开


client.OpenPropertyPostReply();


接收属性上传到服务器的响应后,在程序删除


client.OpenPropertyPostReply();


再次运行,依然会接收到响应,除非设置


client.ClosePropertyPostReply();


设备上传数据到服务器,服务器会做出响应,当然,服务器设置设备属性、调用设备服务时,客户端也可以做出响应。将在后面的章节讲述。

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
Linux Android开发 iOS开发
基于.Net开发的ChatGPT客户端,兼容Windows、IOS、安卓、MacOS、Linux
基于.Net开发的ChatGPT客户端,兼容Windows、IOS、安卓、MacOS、Linux
201 0
|
消息中间件 监控 数据可视化
一个基于.Net Core 开源的物联网基础平台
一个基于 .Net 6.0 使用C#语言编写的以实现可见与不可见的物理设备数字孪生的物联网平台。用于数据的收集、处理、可视化、设备管理、设备预警、报警的平台。
531 0
一个基于.Net Core 开源的物联网基础平台
|
2月前
|
开发框架 .NET C#
在 ASP.NET Core 中创建 gRPC 客户端和服务器
本文介绍了如何使用 gRPC 框架搭建一个简单的“Hello World”示例。首先创建了一个名为 GrpcDemo 的解决方案,其中包含一个 gRPC 服务端项目 GrpcServer 和一个客户端项目 GrpcClient。服务端通过定义 `greeter.proto` 文件中的服务和消息类型,实现了一个简单的问候服务 `GreeterService`。客户端则通过 gRPC 客户端库连接到服务端并调用其 `SayHello` 方法,展示了 gRPC 在 C# 中的基本使用方法。
46 5
在 ASP.NET Core 中创建 gRPC 客户端和服务器
|
监控 物联网 API
【.NET+MQTT】.NET6 环境下实现MQTT通信,以及服务端、客户端的双边消息订阅与发布的代码演示
MQTT广泛应用于工业物联网、智能家居、各类智能制造或各类自动化场景等。MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,在很多受限的环境下,比如说机器与机器通信、机器与物联网通信等。好了,科普的废话不多说,下面直接通过.NET环境来实现一套MQTT通信demo,实现服务端与客户端的双边消息发布与订阅的功能和演示。
1326 0
【.NET+MQTT】.NET6 环境下实现MQTT通信,以及服务端、客户端的双边消息订阅与发布的代码演示
|
3月前
|
网络协议 Unix Linux
一个.NET开源、快速、低延迟的异步套接字服务器和客户端库
一个.NET开源、快速、低延迟的异步套接字服务器和客户端库
106 4
|
3月前
|
存储 消息中间件 NoSQL
Redis 入门 - C#.NET Core客户端库六种选择
Redis 入门 - C#.NET Core客户端库六种选择
78 8
|
4月前
|
存储 安全 物联网
.NET 跨平台工业物联网网关解决方案
【9月更文挑战第28天】本文介绍了利用 .NET 构建跨平台工业物联网网关的解决方案。通过 .NET Core 和多种通信协议(如 MQTT 和 Modbus),实现工业设备的高效接入和数据采集。系统架构包括设备接入层、数据处理层、通信层、应用层和数据库层,确保数据的准确采集、实时处理和安全传输。此外,还详细阐述了设备身份认证、数据加密及安全审计等机制,确保系统的安全性。该方案适用于不同操作系统和工业环境,具备高度灵活性和扩展性。
106 1
|
6月前
|
人工智能 物联网 开发者
**.NET技术革新赋能软件开发:从.NET 5的性能飞跃、跨平台支持,到微服务、物联网、AI和游戏开发的广泛应用。
【7月更文挑战第4天】**.NET技术革新赋能软件开发:从.NET 5的性能飞跃、跨平台支持,到微服务、物联网、AI和游戏开发的广泛应用。随着云集成深化、开源社区壮大,未来将聚焦性能优化、云原生应用及新兴技术融合,培养更多开发者,驱动软件创新。**
157 1
|
7月前
|
NoSQL 大数据 Redis
分享5款.NET开源免费的Redis客户端组件库
分享5款.NET开源免费的Redis客户端组件库
109 1
|
8月前
|
JSON 编解码 Go
Golang深入浅出之-HTTP客户端编程:使用net/http包发起请求
【4月更文挑战第25天】Go语言`net/http`包提供HTTP客户端和服务器功能,简化高性能网络应用开发。本文探讨如何发起HTTP请求,常见问题及解决策略。示例展示GET和POST请求的实现。注意响应体关闭、错误处理、内容类型设置、超时管理和并发控制。最佳实践包括重用`http.Client`,使用`context.Context`,处理JSON以及记录错误日志。通过实践这些技巧,提升HTTP编程技能。
87 1

热门文章

最新文章

相关产品

  • 物联网平台