有一种糖叫语法糖【6】IOT实践之小组小组分小组

简介: 记得在很小的时候,还在上小学的时候,每年三月五号学校大扫除,就会整个班级聚集到一起,然后听从班主任的分配,将大家分成几个小组,从事不同的劳动,擦玻璃的,扫厕所的,拖地的。。。;长大后,渐渐接触到一些学习小组,兴趣小组。。。;而小组的概念通常也理解为一些从事相同或相似工作或操作的人的集合;而在提供产品

记得在很小的时候,还在上小学的时候,每年三月五号学校大扫除,就会整个班级聚集到一起,然后听从班主任的分配,将大家分成几个小组,从事不同的劳动,擦玻璃的,扫厕所的,拖地的。。。;长大后,渐渐接触到一些学习小组,兴趣小组。。。;而小组的概念通常也理解为一些从事相同或相似工作或操作的人的集合;而在提供产品管理和设备管理之外,阿里云IOT也引入了小组的概念,从而提供了分组管理的操作,对于设备分小组的意思通常的理解是物理上,位置和距离相近的一些设备和产品,然后对这些设备和产品进行类似的操作,方便管理。目前提供分组管理的操作通常的理解有创建,更新,查找和删除,另外还有些小组标签的创建和查找接口。下面我们逐一来进行介绍。本次的实验软件验证如下:
http://xysuger.xunyun17.xyz/v0.0.6.rar
读者如果感兴趣的话,可以自行下载运行验证;
第一个接口是创建小组,借口命令CreateDeviceGroup,就是英文直译的名字,容易理解。后面带有一个创建小组名称的参数;这个参数的要求是长度在4到30个字符,字符的意思是包括英文,数字和下划线;我们作为例子,用下面的命令创建一个小组名称为LampGroup的分组;
XYsayFrO.IoT.Srv.CreateDeviceGroup.LampGroup.
返回的结果如下图:

这里返回的结果里有四个参数:前两个分别是小组名称和小组的详细描述;第三个是小组的ID标识符,这个需要记下来,因为后续关于小组的更多的操作都是需要这个小组标识符来作为参数的,才可以进行正常操作的;最后一个参数是小组的创建时间,这个时间是UTC时间,和我们常用的北京时间不一样,差8个小时,所以要转换成北京时间就还需要再加上8个小时,也就是说这个小组的创建时间是早上八点二十八分创建的。

成功创建好一个小组后,我们就可以对这个小组进行更新,主要是小组描述的更新,比如默认的描述是Create_By_XYsuger,我们可以改为This_Is_A_Lamp_Group,是用到的更新命令是:UpdateDeviceGroup,后面带有两个参数,一个是小组的ID标识符,另外一个是要更新后的小组描述信息,所以完成命令如下:
XYsayFrO.IoT.Srv.UpdateDeviceGroup.pKdhc1c3goE3DVkbAskM010200.This_Is_A_Lamp_Group.
当更新成功后,会在返回结果的Success里返回true的值;
更新接口介绍完后,是查询小组信息的接口,命令是QueryDeviceGroupInfo,带有的一个参数的含义是要查询小组的id标识符,所以命令如下:
XYsayFrO.IoT.Srv.QueryDeviceGroupInfo.pKdhc1c3goE3DVkbAskM010200.
运行后,截图如下:

从这里的返回结果,可以看到GroupDesc小组描述的信息,已经有我们上一个更新命令,更改成为This_Is_A_Lamp_Group了;而出了上次介绍的四个返回信息外,还有三个设备相关的状态信息,分别是设备上线的个数,设备激活的个数,和设备总数;由于我们目前只是创建了小组,还没有添加设备,所以暂时三个返回的个数都为0;

查询完小组信息后,我们以后就可以根据具体实际情况,来决定是否删除无用或者废弃的小组,使用的接口名称为DeleteDeviceGroup,传入的唯一一个参数,就是要被删除小组的小组id标识符,所以完成的命令如下所示:
XYsayFrO.IoT.Srv.DeleteDeviceGroup.pKdhc1c3goE3DVkbAskM010200.

当删除返回正确时,可以在使用小组查询命令确认一下:
XYsayFrO.IoT.Srv.QueryDeviceGroupInfo.pKdhc1c3goE3DVkbAskM010200.

从上面的返回结果,可以看到相关信息都为空的,所以可以证明我们刚才删除操作时被正确执行了的;

介绍完,小组的创建,查询和删除,现在开始介绍如何向小组中添加设备,因为毕竟小组是一个抽象的概念,只有小组内有了真真正正的设备,对小组的操作才有实际意义;
添加设备的命令为BatchAddDeviceGroupRelations,目前支持一次添加两个设备。所有后面的四个参数分别为第一个设备的设备名称和产品标识符,以及第二个设备的设备名称和产品标识符,这里将以前创建的两个设备lamp3_dev1和lamp3_dev同时添加到刚刚创建的小组中,完整命令如下:
XYsayFrO.IoT.Srv.BatchAddDeviceGroupRelations.pKdhc1c3goE3DVkbAskM010200.lamp3_dev1.a141rgUXgFl.lamp3_dev.a141rgUXgFl.

成功运行上面的命令后,会返回,正确添加设备的个数为2;再用下面的查询小组信息的命令查询确认一下:
XYsayFrO.IoT.Srv.QueryDeviceGroupList.pKdhc1c3goE3DVkbAskM010200.

可以看到返回的结果截图中,在这个小组中,设备的总数是2,激活的设备个数是1,上线的设备个数是0。和我们添加的操作预计结果一致;

查询在小组内添加设备正确后,可以通过BatchDeleteDeviceGroupRelations接口,移除添加到小组中的设备:
XYsayFrO.IoT.Srv.BatchDeleteDeviceGroupRelations.Wmhlen9xz5XAFE85XnrP010200.lamp3_dev1.a141rgUXgFl.lamp3_dev.a141rgUXgFl.
然后再通过下面的命令查询一下最新的小组设备数量,从而确认删除的是否成功;
XYsayFrO.IoT.Srv.QueryDeviceGroupList.pKdhc1c3goE3DVkbAskM010200.

在返回的信息中,可以看到设备数量又变回0了,表示刚才的删除操作是正确运行的;

开始曾提到小组也有标签的操作,这里介绍下设置小组标签的接口,SetDeviceGroupTags,后面的三个参数,分别为小组标识符,小组标签的类型和小组标签的值;这里给小组设置一个表示生产序列的类型,类型名为Serial,类型的值为8月August,所以完整的命令语句如下:
XYsayFrO.IoT.Srv.SetDeviceGroupTags.Wmhlen9xz5XAFE85XnrP010200.Serial.August.

创建成功后,可以通过查询小组标签的命令QueryDeviceGroupTagList,再加上一个小组的标识符,来确认刚刚设置小组标签的操作成功与否:
XYsayFrO.IoT.Srv.QueryDeviceGroupTagList.Wmhlen9xz5XAFE85XnrP010200.

从上图可以看到,小组的tagkey也就是类型名为Serial,而tagvalue也就是类型值为August,这就表示刚才设置的小组标签操作时正确执行的;

关于小组的接口,除了通过小组标识符来查询小组信息,阿里云iot额外还提供了通过设备信息查询小组信息的操作,这给小组的管理人员提供了更加灵活的操作;通过设备查询小组的接口名称为QueryDeviceGroupByDevice,后面的两个参数为产品关键字和设备名称,这里以上次创建好的设备为例子查询,命令如下:
XYsayFrO.IoT.Srv.QueryDeviceGroupByDevice.a141rgUXgFl.lamp3_dev1.

可以从返回的信息中看到,我们查到小组信息,正是添加这个设备的小组信息;
再回到最开始创建小组的地方,这里考虑到有可能以后设备会非常多,所以创建的小组也会非常多,就会出现一个小组下面可能有多个子小组的可能情况会发生,那么这里就有提供一个创建子小组的接口,这个接口的操作,后面的参数除了像正常创建小组时,提供小组名称作为参数以外,还需要提供一个父小组标识符的参数,以方便表示需要在这个父小组下面创建子小组,举例如下,在最开始创建的小组下面,在创建一个小组名称为SubLampGroup的子小组,具体命令为:
XYsayFrO.IoT.Srv.CreateDeviceGroup.SubLampGroup.Wmhlen9xz5XAFE85XnrP010200.

返回的信息和创建子小组的信息类似,也是四个参数:小组名称,小组描述,小组标识符和小组创建时间;

一旦提供了创建子小组的操作,就有可能存在通过子小组查找父小组的操作,这里用QuerySuperDeviceGroup接口命令,演示一下,如何查询,这个接口带有一个参数,为要查询小组的标识符:
XYsayFrO.IoT.Srv.QuerySuperDeviceGroup.9GzEcN2jVUqcmIrxJDgb010200.

这里返回的信息中,可以看到,一共返回三个参数,父小组的小组名称,小组描述和小组标识符;
下面介绍一个相对有用的操作,通过小组标识符,来查询小组内设备的操作,这个操作只需要带入小组的标识符即可:
XYsayFrO.IoT.Srv.QueryDeviceListByDeviceGroup.Wmhlen9xz5XAFE85XnrP010200.

这个操作返回了目前这个要查询的小组里,一共有两个设备,而且也显示了每个设备的设备名称,产品名称,产品关键字以及相关联的物联网标示符;

最后一个接口操作是根据标签查询小组信息,这个应该属于刚才标签操作一类的,当时漏掉了,算是后面再补上吧;这个操作两个参数,一个是标签类型名,一个是标签类型值,以刚才的标签为例子,查询命令如下:
XYsayFrO.IoT.Srv.QueryDeviceGroupByTags.Serial.August.

从上图可以看到,这个标签所在小组的小组名称和小组标识符;

这次关于小组的操作就介绍到这里;一共13中操作,涵盖了小组操作过程中的各种相关接口;希望读者了解后,对今后阿里云iot设备的操作更加灵活和方便;

目录
相关文章
|
3天前
|
存储 JSON 运维
智能物联网平台:Azure IoT Hub在设备管理中的实践
【10月更文挑战第26天】随着物联网技术的发展,Azure IoT Hub成为企业管理和连接数百万台设备的强大平台。本文介绍Azure IoT Hub的设备管理功能,包括设备注册、设备孪生、直接方法和监控诊断,并通过示例代码展示其应用。
10 4
|
3月前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
当今社会,物联网技术的发展带来了许多繁琐的挑战,尤其是在数据库管理系统领域,比如实时整合海量数据、处理流中的事件以及处理数据的安全性。例如,应用于智能城市的基于物联网的交通传感器可以实时生成大量的交通数据。据估计,未来5年,物联网设备的数量将达数万亿。物联网产生大量的数据,包括流数据、时间序列数据、RFID数据、传感数据等。要有效地管理这些数据,就需要使用数据库。数据库在充分处理物联网数据方面扮演着非常重要的角色。因此,适当的数据库与适当的平台同等重要。由于物联网在世界上不同的环境中运行,选择合适的数据库变得非常重要。 原创文字,IoTDB 社区可进行使用与传播 一、什么是IoTDB 我
160 9
Apache IoTDB进行IoT相关开发实践
|
4月前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
IoTDB是专为物联网(IoT)设计的开源时间序列数据库,提供数据收集、存储、管理和分析。它支持高效的数据写入、查询,适用于处理大规模物联网数据,包括流数据、时间序列等。IoTDB采用轻量级架构,可与Hadoop和Spark集成,支持多种存储策略,确保数据安全和高可用性。此外,它还具有InfluxDB协议适配器,允许无缝迁移和兼容InfluxDB的API和查询语法,简化物联网项目的数据管理。随着物联网设备数量的快速增长,选择适合的数据库如IoTDB对于数据管理和分析至关重要。
238 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,
135 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在物联网数据管理和分析中扮演关键角色,尤其适合处理大规模实时数据。
|
5月前
|
存储 分布式计算 物联网
Apache IoTDB进行IoT相关开发实践
物联网技术带来数据库管理挑战,特别是实时数据整合与安全性。IoTDB是一个专为时间序列数据设计的数据库,提供数据收集、存储和分析服务,适用于海量物联网数据。其架构包括数据文件、系统文件和预写日志文件的管理,并支持多目录存储策略。此外,IoTDB还开发了InfluxDB协议适配器,使得用户能无缝迁移原有InfluxDB业务。此适配器基于IoTDB的Java服务接口,转换InfluxDB的元数据格式,实现与IoTDB的数据交互。目前,适配器支持InfluxDB 1.x版本及部分查询语法。
180 5
|
监控 物联网 Java
|
物联网 API 开发工具