有一种糖叫语法糖【8】IOT实践之物联源于topic

简介: 这一次,介绍一下阿里云iot的一类比较重要API接口操作:topic管理,说到topic,这个概念其实应该是起源于mqtt协议的,mqtt协议作为目前物联网的主要通信协议,最开始,大概上个世纪90年代,是由IBM为了M2M[machine to machine]场景[比如传感器和卫星链接]而定义,

这一次,介绍一下阿里云iot的一类比较重要API接口操作:topic管理,说到topic,这个概念其实应该是起源于mqtt协议的,
mqtt协议作为目前物联网的主要通信协议,最开始,大概上个世纪90年代,是由IBM为了M2M[machine to machine]场景[比如传感器和卫星链接]而定义,开发和使用的;后来随着物联网的兴起,逐渐成为物联网通信的主流协议,也被OASIS标准组织官方所采纳,目前在mqtt的官方网站http://mqtt.org/
,最新的版本是今年3月份发布的5.0版本;mqtt主要有三个比较重要的概念,sub,pub和topic,由于mqtt使客户端加服务器的结构,所以当一个设备向另一个设备发送消息时,接收消息的设备首先要订阅这个设备发送的这类消息;这个过程为sub[subscribe],而发送消息的设备实际上是发给服务器,然后转到接收消息的设备,所以发送消息的过程被称作pub[public],而不同类别的消息通常是发到不同的设备上;所以消息的类别名称可以理解为topic,或者叫主题;关于topic更详细的定义信息,读者感兴趣可以参考mqtt官方网站上的
5.0版本的文档说明,比如topic标准定义为$开头,中间用/斜线作为等级划分的字符串;

介绍完topic相关的一些基本信息后,下面就开始介绍阿里云IOT云端如何使用api接口,对topic进行管理的了;
本次用来实验和验证的软件链接如下:
http://xysuger.xunyun17.xyz/v0.0.8.rar
读者如果感兴趣的话,可以自行下载运行验证;

关于topic的api接口,一共有8个,可以分为两类,分别是topic的基本操作和topic路由表的操作;下面先来看一下topic的基本操作,由于topic通常都是和产品关联的,所以基本操作的四个api接口命令里,都带有product字符串,这四个接口分别是创建,查询,更新和删除产品相关的topic,下面先来看一下如何创建产品的topic,创建的命令为CreateProductTopic,这个命令带有三个参数,第一个为产品的关键字标识符,这里为a141rgUXgFl,第二个参数为topic的名称,这里
为XYsuger,第三个为这个topic的操作权限,这里有三种取值:SUB,PUB,ALL分别对应订阅,发布和订阅+发布;这里为PUB表示发布;最后的命令字符串为:
XYsayFrO.IoT.Srv.CreateProductTopic.a141rgUXgFl.XYsuger.PUB.
运行后,得到如下图所示,

这里可以看到,除了通常的requestid,success返回值,还多了一个topicid,这个表示成功创建topic后,这个topic所对应的唯一的一个id号码,后续操作需要用到这个值来作为参数;
成功创建好topic后,我们可以使用QueryProductTopic命令,来查询已经存在topic,这条命令只需带入一个参数,也就是产品的关键识别符,即可列出这个产品下的所有topic,最后的完整命令如下:
XYsayFrO.IoT.Srv.QueryProductTopic.a141rgUXgFl.
运行后,得到如下图所示,

从命令的返回结果,可以看到产品的topic列表里,第一个就是我们刚才创建的topic:XYsuger,而且id号就是topicid和刚才创建时返回的是一样的;另外,这里的operation后面的数字,代表我们刚才传入的sub,pub,all的操作权限,具体的对应关系为0-PUB,1-SUB,2-ALL.
成功查询产品的TOPIC列表后,我们就可以通过UpdateProductTopic指令,来修改相应topic的操作权限,比如我们这里作为一个演示的例子,把刚才创建topic的操作权限由PUB改为ALL,那么完整的命令如下,这里有三个参数,一个是TOPIC的ID,第二个为操作权限,第三个为TOPIC的名称:
XYsayFrO.IoT.Srv.UpdateProductTopic.5768271.ALL.XYsuger.

修改好后,我们再用刚才的查询命令确认一下,返回结果信息如图:

这里可以看到operation的值已经由0改为2,证明我们刚才的操作运行成功;

最后一个基本操作是删除topic,操作指令为DeleteProductTopic,带有一个参数表示要删除的topicid,这里为 5768271,完整指令如下:
XYsayFrO.IoT.Srv.DeleteProductTopic.5768271.
删除后,我们同样运行上面查询的指令,运行结果如下图所示:

这里从查询的信息,可以看到我们刚才创建名字为XYsuger的topic,已经不再查询结果列表中了,证明删除操作生效了;

下面来介绍和演示topic路由表相关的操作,topic路由表的具体含义,顾名思义,就是将一个设备的topic转到本设备内部另外一个topic,或者另外一个设备的topic上,实现真正意义上的设备内部逻辑转换或设备和设备通信,下面来看topic路由表的第一个操作,创建topic路由表,操作指令名称:CreateTopicRouteTable,带有两个参数,原topic和要转接到topic,这里作为演示的例子,将刚才创建的XYsuger这个topic,转换到这个设备的update更新的topic上,完整指令格式如下:
XYsayFrO.IoT.Srv.CreateTopicRouteTable./a141rgUXgFl/lamp3_dev/XYsuger./a141rgUXgFl/lamp3_dev/update.
运行后,会返回下面的信息;

这里看到success为true,就表示创建成功;
然后使用QueryTopicRouteTable指令,查询创建好的topic路由,这里只要传入要查询的源topic作为参数即可;指令如下:
XYsayFrO.IoT.Srv.QueryTopicRouteTable./a141rgUXgFl/lamp3_dev/XYsuger.
运行结果如下:

可以看到,topic后面的返回信息,正是我们刚才创建路由的目标topic的信息。
除了正向查找路由,还可以反向查找路由,也就是说通过目标topic的信息,查找路由表里原topic的信息;指令名称为QueryTopicReverseRouteTable,这里带入目标的topic作为参数,完整格式如下:
XYsayFrO.IoT.Srv.QueryTopicReverseRouteTable./a141rgUXgFl/lamp3_dev/update.
运行结果如下:

这里可以看到,查找到的原topic信息为XYsuger,表示查找正确;
最后一个关于topic路由表的操作,为删除topic路由表,指令名称为DeleteTopicRouteTable,带入的两个参数分别为这条路由的原topic和目标topic,这里我们删除刚才创建的topic路由,完整的指令格式如下:
XYsayFrO.IoT.Srv.DeleteTopicRouteTable./a141rgUXgFl/lamp3_dev/XYsuger./a141rgUXgFl/lamp3_dev/update.
运行结果如下:

这里的返回信息,success的值为true,表示删除成功;

到这里,topic管理方面的相关api操作,就已经介绍完了,谢谢收看;

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
19天前
|
存储 JSON 运维
智能物联网平台:Azure IoT Hub在设备管理中的实践
【10月更文挑战第26天】随着物联网技术的发展,Azure IoT Hub成为企业管理和连接数百万台设备的强大平台。本文介绍Azure IoT Hub的设备管理功能,包括设备注册、设备孪生、直接方法和监控诊断,并通过示例代码展示其应用。
22 4
|
3月前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
当今社会,物联网技术的发展带来了许多繁琐的挑战,尤其是在数据库管理系统领域,比如实时整合海量数据、处理流中的事件以及处理数据的安全性。例如,应用于智能城市的基于物联网的交通传感器可以实时生成大量的交通数据。据估计,未来5年,物联网设备的数量将达数万亿。物联网产生大量的数据,包括流数据、时间序列数据、RFID数据、传感数据等。要有效地管理这些数据,就需要使用数据库。数据库在充分处理物联网数据方面扮演着非常重要的角色。因此,适当的数据库与适当的平台同等重要。由于物联网在世界上不同的环境中运行,选择合适的数据库变得非常重要。 原创文字,IoTDB 社区可进行使用与传播 一、什么是IoTDB 我
176 9
Apache IoTDB进行IoT相关开发实践
|
4月前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
IoTDB是专为物联网(IoT)设计的开源时间序列数据库,提供数据收集、存储、管理和分析。它支持高效的数据写入、查询,适用于处理大规模物联网数据,包括流数据、时间序列等。IoTDB采用轻量级架构,可与Hadoop和Spark集成,支持多种存储策略,确保数据安全和高可用性。此外,它还具有InfluxDB协议适配器,允许无缝迁移和兼容InfluxDB的API和查询语法,简化物联网项目的数据管理。随着物联网设备数量的快速增长,选择适合的数据库如IoTDB对于数据管理和分析至关重要。
248 12
|
4月前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
The article introduces IoTDB, an open-source time-series database designed for efficient management of IoT-generated data. It addresses challenges like real-time integration of massive datasets and security. IoTDB supports high-performance storage,
143 0
Apache IoTDB进行IoT相关开发实践
|
4月前
|
分布式计算 NoSQL 物联网
麻省理工IOT教授撰写的1058页Python程序设计人工智能实践手册!
Python是世界上最流行的语言之一,也是编程语言中使用人数增长最快的一种。 开发者经常会很快地发现自己喜欢Python。他们会欣赏Python的表达力、可读性、简洁性和交互性,也会喜欢开源软件开发环境,这个开源环境正在为广泛的应用领域提供快速增长的可重用软件基础。 几十年来,一些趋势已经强有力地显现出来。计算机硬件已经迅速变得更快、更便宜、更小;互联网带宽已经迅速变得越来越大,同时也越来越便宜;优质的计算机软件已经变得越来越丰富,并且通过“开源”方式免费或几乎免费;很快,“物联网”将连接数以百亿计的各种可想象的设备。这将导致以快速增长的速度和数量生成大量数据。 在今天的计算技术中,最新的创新
|
4月前
|
分布式计算 NoSQL 物联网
麻省理工IOT教授撰写的1058页Python程序设计人工智能实践手册!
Python是世界上最流行的语言之一,也是编程语言中使用人数增长最快的一种。 开发者经常会很快地发现自己喜欢Python。他们会欣赏Python的表达力、可读性、简洁性和交互性,也会喜欢开源软件开发环境,这个开源环境正在为广泛的应用领域提供快速增长的可重用软件基础。
|
5月前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
IoTDB是面向物联网的时序数据库,专注于时间序列数据管理,提供高效的数据处理、集成Hadoop和Spark生态、支持多目录存储策略。它还具有InfluxDB协议适配器,允许无缝迁移原本使用InfluxDB的业务。文章讨论了IoTDB的体系结构,包括数据文件、系统文件和预写日志文件的存储策略,并介绍了如何配置数据存储目录。此外,还提及了InfluxDB版本和查询语法的支持情况。IoTDB在物联网数据管理和分析中扮演关键角色,尤其适合处理大规模实时数据。
103 5
|
5月前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
物联网技术带来数据库管理挑战,特别是实时数据整合与安全性。IoTDB是一个专为时间序列数据设计的数据库,提供数据收集、存储和分析服务,适用于海量物联网数据。其架构包括数据文件、系统文件和预写日志文件的管理,并支持多目录存储策略。此外,IoTDB还开发了InfluxDB协议适配器,使得用户能无缝迁移原有InfluxDB业务。此适配器基于IoTDB的Java服务接口,转换InfluxDB的元数据格式,实现与IoTDB的数据交互。目前,适配器支持InfluxDB 1.x版本及部分查询语法。
191 5
|
监控 物联网 Java
|
物联网 API 开发工具