【thingsboard】thingsboard多设备状态切换

本文档详细介绍了如何配置物联网设备,包括创建设备配置、添加设备、模拟设备数据,以及如何设置仪表板来实时展示设备遥测数据。通过创建仪表板,设置实体别名和设备列表,实现了设备数据的直观展示,并且详细阐述了如何关联动作以便于切换不同设备数据。此教程适用于物联网设备管理和监控场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、设备准备

1、创建设备配置

在设备配置里面,新建一个设备,例如要做一个温湿度设备,这儿名称采用“THM010”,其他默认即可。
在这里插入图片描述

2、添加设备

在“设备”选项卡里面,添加3个设备,分别进行命名。并选择已有设备配置,选择刚刚创建的“THM010”
在这里插入图片描述

3、创建模拟设备规则链

在这儿我们直接对三个设备进行数据模拟。后续可以去掉这个规则链,使用真实设备。
创建一个规则链,模拟三个设备
在这里插入图片描述
在这里插入图片描述

var msg = { temperature:Math.random()*10+25 , humidity: Math.random()*50+25 };
var metadata = { data: 40 };
var msgType = "POST_TELEMETRY_REQUEST";

return { msg: msg, metadata: metadata, msgType: msgType };

可以用测试的方法,看一下模拟发送的json数据是否正确:
在这里插入图片描述

4、查看设备遥测数据

完成前面三步,就可以去设备里面查看有没有正常的遥测数据。
在这里插入图片描述

二、配置仪表板

1、创建仪表板

在仪表板库里面,新建一个仪表板

在这里插入图片描述

2、创建实体别名

创建一个设备列表别名,方便模块调用。使用设备类型进行筛选,设备类型选择刚设置的THM010设备类型。
在这里插入图片描述

3、创建设备列表

在cards部件中,选择Entities hierarchy部件,添加。
在这里插入图片描述
选择实体—设备列表,选择温度和湿度数据,点击添加。
在这里插入图片描述
可以看到出现了设备列表
在这里插入图片描述

4、添加别名

添加一个仪表板实体状态类型的别名,命名为“属性状态”,用作显示
在这里插入图片描述

5、添加显示部件

在这里插入图片描述
在添加的显示部件里面,设置实体别名为刚刚创建的实体,在属性信息里面,需要手动输入需要显示的属性。
在这里插入图片描述
此时会显示无可显示属性,还需要进行最后一步。

6、关联动作

在设备列表模块中,添加动作,当点击某个设备时,将该设备的属性更新到仪表盘。这样显示模块就可以进行调用了。
在这里插入图片描述

效果

此时,我们通过点击设备列表里面的不同设备,就可以显示对应的属性信息。
在这里插入图片描述

### 如何从Spring Boot实体类中移除属性 当需要从Spring Boot实体类中移除某个属性时,需遵循一系列最佳实践来确保应用程序稳定性和数据一致性。 #### 1. 数据库迁移策略 如果该属性映射到数据库字段,则应先处理数据库层面的变化。推荐使用Flyway或Liquibase等工具管理数据库版本控制。通过编写降级脚本,在正式删除表结构之前将其设为可为空并赋予默认值[^1]。 ```sql ALTER TABLE table_name ALTER COLUMN column_to_remove SET DEFAULT 'default_value'; ALTER TABLE table_name ALTER COLUMN column_to_remove DROP NOT NULL; ``` 随后可以安全地执行删除操作: ```sql ALTER TABLE table_name DROP COLUMN IF EXISTS column_to_remove CASCADE; ``` #### 2. 实体类修改 更新Java实体类定义前,请确认所有涉及此字段的地方都已妥善处理完毕。对于不再使用的getter/setter方法也应当一并清理掉。假设要移除`UserEntity`里的`age`成员变量: 原始状态: ```java @Entity public class UserEntity { private Long id; private String name; private Integer age; public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } // other getters and setters... } ``` 调整后的样子: ```java @Entity public class UserEntity { private Long id; private String name; // only keep necessary getters and setters... } ``` #### 3. 测试覆盖范围扩展 为了防止意外情况发生,建议增加单元测试用例覆盖面,特别是针对那些可能受到此次变更影响的功能模块。利用@SpringBootTest注解创建集成测试场景能够有效验证整个流程是否正常工作。 ```java @SpringBootTest(classes = Springboot07JunitApplication.class) class EntityModificationTest { @Autowired UserRepository userRepository; @Test void testWithoutRemovedField() { var user = new UserEntity(); user.setName("test"); userRepository.save(user); assertNotNull(user.getId()); } } ``` #### 4. 缓存同步机制考虑 如果有启用Redis或其他分布式缓存服务的话,记得清除相关联的数据条目以免造成脏读现象。可以通过配置文件引入必要的依赖项以便于后续开发维护工作[^2]。 ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!-- 配置连接池 --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> </dependency> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值