ThingsBoard规则链节点:GCP Pub/Sub 节点详解
目录
引言
1. GCP Pub/Sub 节点简介
2. 节点配置
2.1 基本配置示例
3. 使用场景
3.1 数据传输
3.2 数据分析
3.3 事件通知
3.4 任务调度
4. 实际项目中的应用
4.1 项目背景
4.2 项目需求
4.3 实现步骤
5. 总结
引言
ThingsBoard 是一个开源的物联网平台,提供了设备管理、数据收集、处理和可视化等功能。规则链是 ThingsBoard 中的一个强大功能,允许用户定义复杂的业务逻辑来处理设备上报的数据。在规则链中,
GCP Pub/Sub节点用于将消息发布到 Google Cloud Pub/Sub 主题。本文将详细介绍GCP Pub/Sub节点的用法、含义以及在实际项目中的应用场景。
ThingsBoard从入门到实战课程,深入透析底层原理,快速搭建自己的IOT平台_哔哩哔哩_bilibiliThingsBoard从入门到实战课程,深入透析底层原理,快速搭建自己的IOT平台共计36条视频,包括:1、ThingsBoard项目介绍、2、ThingsBoard前端Vue版本代码编译、3、ThingsBoard本地后端源码编译等,UP主更多精彩视频,请关注UP账号。
https://www.bilibili.com/video/BV1CH36egEDM/?spm_id_from=333.999.0.0

1. GCP Pub/Sub 节点简介
GCP Pub/Sub 节点的主要作用是在规则链执行过程中,将消息发布到 Google Cloud Pub/Sub 主题。Google Cloud Pub/Sub 是一种完全托管的消息传递服务,支持发布/订阅模式,可以实现不同系统和服务之间的解耦和异步通信。通过使用 GCP Pub/Sub 节点,可以将设备上报的数据或处理结果发送到 Pub/Sub 主题,再由其他服务或系统消费这些消息,实现数据的进一步处理和分析。
2. 节点配置
- 项目 ID:指定 Google Cloud 项目的 ID。
- 主题名称:指定要发布的 Pub/Sub 主题名称。
- 凭据文件:提供包含 Google Cloud 凭据的 JSON 文件路径,用于身份验证。
- 消息:指定要发送的消息内容,可以是静态文本或动态变量。
2.1 基本配置示例
{"projectId": "your-project-id","topicName": "your-topic-name","credentialsFile": "/path/to/credentials.json","message": "This is a test message from ThingsBoard"
}
3. 使用场景
GCP Pub/Sub 节点在多种场景下都非常有用,特别是在需要将设备数据发送到 Google Cloud 服务进行进一步处理和分析的场景中。以下是一些具体的应用场景:
3.1 数据传输
在需要将设备上报的数据发送到 Google Cloud Pub/Sub 时,可以通过 GCP Pub/Sub 节点将数据发送到指定的主题。
{"projectId": "your-project-id","topicName": "device-data-topic","credentialsFile": "/path/to/credentials.json","message": "Device ${msg.deviceId} reported data: ${msg.data}"
}
3.2 数据分析
在需要对设备数据进行实时分析时,可以通过 GCP Pub/Sub 节点将数据发送到 Google Cloud Pub/Sub,再由 Google Cloud Dataflow 或其他服务进行处理和分析。
{"projectId": "your-project-id","topicName": "data-analysis-topic","credentialsFile": "/path/to/credentials.json","message": "Device ${msg.deviceId} reported data: ${msg.data}"
}
3.3 事件通知
在需要发送事件通知时,可以通过 GCP Pub/Sub 节点将事件消息发送到 Pub/Sub 主题,再由其他服务或系统消费这些消息进行通知。
{"projectId": "your-project-id","topicName": "event-notification-topic","credentialsFile": "/path/to/credentials.json","message": "Event occurred for device ${msg.deviceId}: ${msg.eventType}"
}
3.4 任务调度
在需要调度任务时,可以通过 GCP Pub/Sub 节点将任务消息发送到 Pub/Sub 主题,再由任务调度系统消费这些消息执行任务。
{"projectId": "your-project-id","topicName": "task-scheduling-topic","credentialsFile": "/path/to/credentials.json","message": "Task scheduled for device ${msg.deviceId}: ${msg.taskDetails}"
}
4. 实际项目中的应用
下面是一个实际项目中的例子,展示如何在智能家居系统中使用 GCP Pub/Sub 节点。
4.1 项目背景
假设我们正在开发一个智能家居系统,该系统需要支持用户通过手机应用控制家中的灯光、空调等设备,并记录设备的状态和使用情况。此外,还需要将设备数据发送到 Google Cloud Pub/Sub 进行进一步处理和分析。
4.2 项目需求
- 记录设备的状态,例如当前温度、湿度等。
- 记录设备的使用情况,例如开关次数、能耗等。
- 实现实时反馈,确保用户能够及时了解操作结果。
- 将设备数据发送到 Google Cloud Pub/Sub 进行进一步处理和分析。
4.3 实现步骤
-
部署设备:
- 在家中安装智能灯光、空调等设备,并连接到 ThingsBoard 平台。
-
创建规则链:
- 添加
GCP Pub/Sub节点,用于将设备上报的数据发送到 Google Cloud Pub/Sub。 - 添加其他处理节点,如设备控制、状态查询和数据存储。
- 添加
-
配置规则链
- 配置
GCP Pub/Sub节点,用于发送设备数据。
- 配置
{"projectId": "your-project-id","topicName": "device-data-topic","credentialsFile": "/path/to/credentials.json","message": "Device ${msg.deviceId} reported data: ${msg.data}"
}
- 处理数据:
- 根据业务逻辑,动态地将设备数据发送到 Google Cloud Pub/Sub。
// 发送设备数据到 Google Cloud Pub/Sub
public void sendDeviceDataToPubSub(String projectId, String topicName, String deviceId, String data) {// 配置 GCP Pub/Sub 节点JsonNode config = JsonNodeFactory.instance.objectNode().put("projectId", projectId).put("topicName", topicName).put("credentialsFile", "/path/to/credentials.json").put("message", "Device " + deviceId + " reported data: " + data);gcpPubSubNode.sendMessage(config);
}
-
前端界面:
- 开发一个前端界面,显示设备的状态和使用情况。
- 提供一个界面,让用户能够查看和管理设备的状态和使用情况,以及接收通知。
-
数据查询:
- 使用 SQL 查询,获取设备的状态和使用情况。
SELECT * FROM device_status WHERE device_id = 'device1' ORDER BY timestamp DESC LIMIT 10;
SELECT * FROM device_usage WHERE device_id = 'device1' ORDER BY timestamp DESC LIMIT 10;
5. 总结
GCP Pub/Sub节点在 ThingsBoard 规则链中是一个非常有用的工具,可以帮助你将消息发布到 Google Cloud Pub/Sub 主题,实现数据的进一步处理和分析。通过合理地使用GCP Pub/Sub节点,可以在数据传输、数据分析、事件通知和任务调度等场景中,确保系统的高效性和灵活性。
🌐 项目地址
Things Vue
http://thingsvue.tpson.cn:7772/#/login?redirect=/tb-home/index
账号:admin@thingsboard.org 密码:admin123456
🎽 安装使用
获取项目代码:
代码地址
https://gitee.com/tpsonwell_admin/thingsvue

相关文章:
ThingsBoard规则链节点:GCP Pub/Sub 节点详解
目录 引言 1. GCP Pub/Sub 节点简介 2. 节点配置 2.1 基本配置示例 3. 使用场景 3.1 数据传输 3.2 数据分析 3.3 事件通知 3.4 任务调度 4. 实际项目中的应用 4.1 项目背景 4.2 项目需求 4.3 实现步骤 5. 总结 引言 ThingsBoard 是一个开源的物联网平台࿰…...
【Linux】select,poll和epoll
select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符fd,一旦某个描述符就绪(一般是读就绪或者写就绪),系统会通知有I/O事件发生了(不能定位是哪一个)。但sel…...
Qt程序发布及打包成exe安装包
参考:Qt之程序发布以及打包成exe安装包 目录 一、简述 Qt 项目开发完成之后,需要打包发布程序,而因为用户电脑上没有 Qt 配置环境,所以需要将 release 生成的 exe 文件和所依赖的 dll 文件复制到一个文件夹中,然后再用 Inno Setup 打包工具打包成一个 exe 安装包,就可以…...
python怎样运行js语句
1. 安装 pip install PyExecJS # 需要注意, 包的名称:PyExecJS 2. 简单使用 import execjs execjs.eval("new Date") 返回值为: 2018-04-04T12:53:17.759Z execjs.eval("Date.now()") 返回值为:152284700108…...
汽车渲染领域:Blender 和 UE5 哪款更适用?两者区别?
在汽车渲染领域,选择合适的工具对于实现高质量的视觉效果至关重要。Blender和UE5(Unreal Engine 5)作为两大主流3D软件,各自在渲染动画方面有着显著的差异。本文将从核心定位与用途、工作流程、渲染技术和灵活性、后期处理与合成四…...
JAVA实现将PDF转换成word文档
POM.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.…...
前端-Git
一.基本概念 Git版本控制系统时一个分布式系统,是用来保存工程源代码历史状态的命令行工具 简单来说Git的作用就是版本管理工具。 Git的应用场景:多人开发管理代码;异地开发,版本管理,版本回滚。 Git 的三个区域&a…...
如何分析Windows防火墙日志
Windows防火墙,也被称为Windows Defender Firewall,是一种内置的安全功能,可以主动监控和分析运行Windows操作系统的计算机上通过Windows防火墙的网络流量,主要目的是作为计算机和互联网或其他网络之间的屏障,使管理员…...
工作坊报名|使用 TEN 与 Azure,探索你的多模态交互新场景
GPT-4o Realtime API 发布,语音 AI 技术正在进入一场新的爆发。语音AI技术的实时语音和视觉互动能力将为我们带来更多全新创意和应用场景。 实时音频交互: 允许应用程序实时接收并响应语音和文本输入。自然语音生成: 减少 AI 技术生成的语音…...
学习笔记041——Elastic Search的学习与使用以及SpringBoot整合
文章目录 1、Elastic Search介绍1.1、ES 的数据结构1.2、ES 为什么查询快1.3、CRUD 2、Spring Boot 整合 ES 1、Elastic Search介绍 Elasticsearch是一个分布式的、基于RESTful API的搜索和分析引擎,广泛用于大规模数据存储和快速检索。它最初由Shay Banon于20…...
R安装rgdal报错 解决办法
尝试了网上很多办法,不知道哪一步解决了,记录一下所有步骤: 1. 尝试github安装 options(repos c(CRAN "https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))install.packages("devtools")library(devtools)devtools::in…...
【智能制造-46】人机工程(工厂自动化)
工作空间设计 设备布局规划 根据人体测量学数据,合理安排自动化设备、生产线和工作区域的布局。例如,考虑工人的操作空间和活动范围,确保他们能够舒适地接近和操作设备。在汽车装配车间,机器人和工人的工作区域应划分明确&#…...
C#笔记(5)
一、winform项目与窗体控件 1、部分类的使用 好处:让自动生成的代码后置,我们编写程序的代码显得更加简洁 特点:在最后编译的时候,仍然编译成一个窗体类。 窗体和控件的基本使用 3、Event事件(委托--》事件&#…...
【软件国产化】| Windows和Linux下文件名后缀是否区分大小写
今天在开发过程中遇到了个软件在Linux系统和Windows系统下功能表现不一致的bug,具体表现为: 插入一张图片(A文件夹中的001.jpg),然后使用“图片替换”功能,用B文件夹中的图片(B文件夹中的001.JP…...
讨论JAVA、JVM与Spring
Q1: 作为一个JAVA开发人员,对于jvm肯定不陌生,但很多人对它不陌生也仅止于概念上,而且对概念也是模糊不清的,但jvm实际是java程序运行在其中的实际存在的环境,对它的理解应该要是具象化的。 我们还是从一项技术产生的…...
【04】MySQL数据库和数据表的基本操作详解与实例
文章目录 一、连接MySQL服务器二、数据库的基本操作2.1数据库的基本操作1. 创建数据库2. 选择数据库3. 删除数据库4.查询所有数据库5.修改数据库的字符集 2.2 数据表的基本操作1. 创建数据表2. 查看数据表结构3. 删除数据表4. 修改数据表5. 插入数据6. 查询数据7. 更新数据8. 删…...
Spring中实现动态数据源切换,基于AbstractRoutingDataSource
背景 在项目开发过程中,我们可能会遇到一个场景:某个类型数据源有多个数据源实例,需要我们按照不同的请求切换到不同数据源去。 而目前绝大多数java应用都是基于Spring框架来开发,我们很多时候相关的数据源连接都是交给了Spring框…...
StarRocks-join优化
1、背景 有两个大表,都是6kw级别上下的,通过SR然后包装了一个接口对外提供查询,当前的问题是,这样大的join查询会导致BE直接宕机。并且这个sql很有代表性,我截图如下: 这个表是个单分区,所以直接…...
js 高亮文本中包含的关键词标红
在开发中,遇到需要将文本中包含的关键字高亮的情况,可以做以下处理。 <div class"title"v-html"highlightKeywords(item.title, state1.tags1.concat(state2.tags2).concat(state3.tags3))"> </div> ...... ...... con…...
DVWA靶场——File Inclusion
File Inclusion(文件包含)漏洞 指攻击者通过恶意构造输入,利用应用程序错误的文件包含机制,导致程序包含并执行未经授权的本地或远程文件。这类漏洞广泛存在于Web应用程序中,尤其是在那些允许用户提供文件路径或URL的地…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...
linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...
wpf在image控件上快速显示内存图像
wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...
