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账号。icon-default.png?t=O83Ahttps://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 实现步骤
  1. 部署设备

    • 在家中安装智能灯光、空调等设备,并连接到 ThingsBoard 平台。
  2. 创建规则链

    • 添加 GCP Pub/Sub 节点,用于将设备上报的数据发送到 Google Cloud Pub/Sub。
    • 添加其他处理节点,如设备控制、状态查询和数据存储。
  3. 配置规则链

    • 配置 GCP Pub/Sub 节点,用于发送设备数据。
{
  "projectId": "your-project-id",
  "topicName": "device-data-topic",
  "credentialsFile": "/path/to/credentials.json",
  "message": "Device ${msg.deviceId} reported data: ${msg.data}"
}
  1. 处理数据
    • 根据业务逻辑,动态地将设备数据发送到 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);
}
  1. 前端界面

    • 开发一个前端界面,显示设备的状态和使用情况。
    • 提供一个界面,让用户能够查看和管理设备的状态和使用情况,以及接收通知。
  2. 数据查询

    • 使用 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 Vueicon-default.png?t=O83Ahttp://thingsvue.tpson.cn:7772/#/login?redirect=/tb-home/index

账号:admin@thingsboard.org 
密码:admin123456

🎽 安装使用

获取项目代码:

代码地址icon-default.png?t=O83Ahttps://gitee.com/tpsonwell_admin/thingsvue

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/924714.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

10.机器学习--集成学习

机器学习领域有一个强大的思路:集成学习,该方法在诸多机器学习竞赛中往往能够获得最优的结果。集成学习的基本思想实际上非常简单:三个臭皮匠顶一个诸葛亮,即将多个模型组合在一起获得的效果往往要强于单一模型。 目录 集成学习…

结构体详解+代码展示

系列文章目录 🎈 🎈 我的CSDN主页:OTWOL的主页,欢迎!!!👋🏼👋🏼 🎉🎉我的C语言初阶合集:C语言初阶合集,希望能…

深度解析猎板 PCB树脂塞孔工艺

PCB 的树脂塞孔工艺是一种在印制电路板制造过程中广泛应用的重要技术,以下是猎板PCB批量工厂对PCB树脂塞孔该工艺的详细介绍: 猎板 PCB树脂塞孔工艺目的 防止短路:在 PCB 制造中,若过孔未被有效封堵,锡膏可能会从孔内…

扫雷-完整源码(C语言实现)

云边有个稻草人-CSDN博客 在学完C语言函数之后,我们就有能力去实现简易版扫雷游戏了(成就感满满),下面是扫雷游戏的源码,快试一试效果如何吧! 在test.c里面进行扫雷游戏的测试,game.h和game.c…

当前就业形势下C++方向后端开发学习指南

文章目录 1. C后端开发的职业方向1.1 C的应用领域1.2 后端开发的职业选择 2. 当前就业形势分析2.1 C开发者的市场需求2.2 C开发者的薪资水平 3. 学习路线3.1 入门阶段:掌握基础知识3.2 进阶阶段:掌握后端开发的核心技术3.2.1 数据库与C3.2.2 网络编程 3.…

FFmpeg 简介与编译

1. ffmpeg 简介: FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移…

【论文复现】BERT论文解读及情感分类实战

📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀ BERT论文解读及情感分类实战 简介BERT文章主要贡献BERT模型架构技术细节任务1 Masked LM(MLM)任务2 Next Sentence P…

Flink高可用配置(HA)

从Flink架构中我们可以看到,JobManager这个组件非常重要,是中心协调器,负责任务调度和资源管理。默认情况下,每个Flink集群只有一个JobManager实例。这会产生单点故障(SPOF):如果JobManager崩溃,则无法提交新程序,正在运行的程序也会失败。通过JobManager的高可用性,…

【Rabbitmq篇】高级特性----事务,消息分发

目录 事务 消息分发 应用场景 1. 限流 2.负载均衡 事务 RabbitMQ是基于AMQP协议实现的,该协议实现了事务机制,因此RabbitMQ也支持事务机制.SpringAMQP也提供了对事务相关的操作.RabbitMQ事务允许开发者确保消息的发送和接收是原子性的,要么全部成功,要么全部失败. 何为原…

优先算法 —— 双指针系列 - 有效三角形的个数

1. 有效三角形的个数 题目链接: 611. 有效三角形的个数 - 力扣(LeetCode)https://leetcode.cn/problems/valid-triangle-number/description/ 2. 题目解析 以示例1为例: 3. 优化 我们都知道,判断三角形的方法就是两边相…

【H2O2|全栈】Node.js(2)

目录 前言 开篇语 准备工作 npm 概念 常见指令 项目中的包 创建项目 启动项目 服务器搭建 express 基本步骤 搭建应用 创建路由 监听端口 启动服务器 面试相关 结束语 前言 开篇语 本系列博客分享Node.js的相关知识点,本章讲解npm与服务器的简单…

Android 13 Aosp 默认允许应用动态权限

图库 frameworks/base/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java 修改 public void grantDefaultPermissions(int userId) {DelayingPackageManagerCache pm new DelayingPackageManagerCache();grantPermissionsToSysCompon…

【NLP高频面题 - LLM架构篇】LLM对Transformer都有哪些优化?

【NLP高频面题 - LLM架构篇】LLM对Transformer都有哪些优化? ⚠︎ 重要性:★★★ 💯 NLP Github 项目: NLP 项目实践:fasterai/nlp-project-practice 介绍:该仓库围绕着 NLP 任务模型的设计、训练、优化、…

DAY139权限提升-Linux系统权限提升篇Vulnhub辅助项目SUID权限SUDO指令版本漏洞

Linux提权 1、内核溢出提权 2、suid、sudo、nfs、path、ld_preload、cron、lxd、capability、rbash等 3、数据库类型提权 Linux: 系统用户:UID(0-999) 普通用户:UID(1000-*) root用户:UID为0,拥有系统的完全控制…

notepad++文件github下载

1、github下载网址:Releases notepad-plus-plus/notepad-plus-plus GitHub 2、找到操作系统支持的软件: 3、CSDN下载链接:https://download.csdn.net/download/u013083576/90046203

无人机应用板卡详解!

一、核心技术 无人机板卡的核心技术主要包括但不限于以下几种: 通信技术:无人机板卡通常集成了各种通信技术,如无线电通信、卫星通信等,以实现远程控制和数据传输。这些技术确保了无人机能够在复杂环境中保持稳定的通信连接。 …

分布式链路追踪系统

系统现状及需要解决的问题 系统异常无法接收告警 系统总会有这样或者那样的问题,同样的现象可能是不同的系统问题引起的,解决这些问题是研发的基本职责之一。 但是解决问题的前提是发现问题,系统告警就是我们发现感知问题的重要的手段&…

qt音频实战

一、Qt音频基础知识 1、QT multimedia 2、QMediaPlayer类:媒体播放器,主要用于播放歌曲、网络收音机等功能。 3、QMediaPlaylist类:专用于播放媒体内容的列表。 二、界面设计 三、代码 #include "mainwindow.h" #include "…

【Linux】剧幕中的灵魂更迭:探索Shell下的程序替换

🎬 个人主页:谁在夜里看海. 📖 个人专栏:《C系列》《Linux系列》《算法系列》 ⛰️ 一念既出,万山无阻 目录 📖一、进程程序替换 1.替换的演示 ❓替换与执行流 ❓程序替换≠进程替换 2.替换的原理 …

DIY-Tomcat项目 part 1 实现和测试Request以及Response

实现Request package Webserver.src.connector;import java.io.IOException; import java.io.InputStream;/* GET /index.html HTTP/1.1Host: localhost:8888Connection: keep-aliveCache-Control: max-age0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 */public cla…