ThingsBoard规则链节点:GCP Pub/Sub 节点详解

news2024/11/28 14:52:12

目录

引言

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 节点的用法、含义以及在实际项目中的应用场景。

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

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【工具变量】城市供应链创新试点数据(2007-2023年)

一、测算方式:参考C刊《经济管理》沈坤荣和乔刚老师(2024)的做法,使用“供应链创新与应用试点”的政策虚拟变量(TreatPost)表征。若样本城市为试点城市,则赋值为 1,否则为 0&#xf…

小程序租赁系统开发的优势与应用解析

内容概要 随着科技的迅猛发展,小程序租赁系统应运而生,成为许多企业优化业务的重要工具。首先,它提升了用户体验。想象一下,用户只需轻轻一点,就能够浏览和租赁心仪的商品,这种便捷的过程使繁琐的操作大大…

Spring MVC练习(前后端分离开发实例)

White graces:个人主页 🙉专栏推荐:Java入门知识🙉 🐹今日诗词:二十五弦弹夜月,不胜清怨却飞来🐹 ⛳️点赞 ☀️收藏⭐️关注💬卑微小博主🙏 ⛳️点赞 ☀️收藏⭐️关注&#x1f4…

使用IDEA构建springboot项目+整合Mybatis

目录 目录 1.Springboot简介 2.SpringBoot的工作流程 3.SpringBoot框架的搭建和配置 4.用Springboot实现一个基本的select操作 5.SpringBoot项目部署非常简单,springBoot内嵌了 Tomcat、Jetty、Undertow 三种容器,其默认嵌入的容器是 Tomcat,…

不玩PS抠图了,改玩Python抠图

网上找了两个苏轼的印章图片: 把这两个印章抠出来的话,对于不少PS高手来说是相当容易,但是要去掉其中的水印,可能要用仿制图章慢慢描绘,图章的边缘也要慢慢勾画或者用通道抠图之类来处理,而且印章的红色也不…

ElasticSearch的下载和基本使用(通过apifox)

1.概述 一个开源的高扩展的分布式全文检索引擎,近乎实时的存储,检索数据 2.安装路径 Elasticsearch 7.8.0 | Elastic 安装后启动elasticsearch-7.8.0\bin里的elasticsearch.bat文件, 启动后就可以访问本地的es库http://localhost:9200/ …

26届JAVA 学习日记——Day16

2024.11.27 周三 尽量在抽出时间做项目,持续学习优化简历,等到基础的八股都熟悉、leetcode热题100刷完、苍穹外卖项目AI项目彻底完成投简历,目标是找到日常实习,然后边做边准备暑期实习。 八股 WebSocket WebSocket是什么&…

Javaweb 前端 HTML css 案例 总结

顶部导航栏 弹性布局 搜索表单区域 表单标签 表单标签,表单项 复选,一次选多个 隐藏域,看不到,但会传参数 text输入框 radio单选 男女,是 前端页面上显示的值 搜索表单区域 button 按钮 表格数据展示区域 fo…

每日一练:【动态规划算法】斐波那契数列模型之使用最小花费爬楼梯(easy)

1. 题目链接:746. 使用最小花费爬楼梯 2. 题目描述 根据一般的思维,我们会认为本题中数组的最后一个位置是楼顶,但是根据第一个例子,如果最后一个位置是楼顶,花费最少应该为10,但是结果是15,因…

HCIP——堆叠技术实验配置

目录 一、堆叠的理论知识 二、堆叠技术实验配置 三、总结 一、堆叠的理论知识 1.1堆叠概述: 是指将两台交换机通过堆叠线缆连接在一起,从逻辑上变成一台交换设备,作为一个整体参与数据的转发。 1.2堆叠的基本概念 堆叠系统中所有的单台…

微软正在测试 Windows 11 对第三方密钥的支持

微软目前正在测试 WebAuthn API 更新,该更新增加了对使用第三方密钥提供商进行 Windows 11 无密码身份验证的支持。 密钥使用生物特征认证,例如指纹和面部识别,提供比传统密码更安全、更方便的替代方案,从而显著降低数据泄露风险…

ubuntu 安装proxychains

在Ubuntu上安装Proxychains,你可以按照以下步骤操作: 1、更新列表 sudo apt-update 2、安装Proxychains sudo apt-get install proxychains 3、安装完成后,你可以通过编辑/etc/proxychains.conf文件来配置代理规则 以下是一个简单的配置示例&…

数组学习后记——递归

数组这块学得有点乱,条理性欠佳。这次正好总结一下。上周的课堂内容没有更新, 因为小白自己也还没来得及吸收呢qwq。也解释一下为什么文中有这么多例题。因为我呢喜欢就着题去分析和学习,直接灌输知识不太能理解,有例子就能及时检验和应用了的。 先看看B3817 基础的双数组…

螺旋矩阵(java)

题目描述 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 代码思路&#xff1a; class Solution {public List<Integer> spiralOrder(int[][] matrix) {List<Integer> list new ArrayList<>(); …

【C#设计模式(16)——解释器模式(Interpreter Pattern)】

前言 解释器模式是用来解释和执行特定的语法或表达式。它将一种表达式的规则和语义进行抽象和封装&#xff0c;然后通过解释器来解析和执行这些规则&#xff0c;将其转化为可执行的操作。 代码 //抽象表达式public interface Expression{int Interpret(Context context); //解释…

OpenHarmony属性信息怎么修改?触觉智能RK3566鸿蒙开发板来演示

本文介绍在开源鸿蒙OpenHarmony系统下&#xff0c;修改产品属性信息的方法&#xff0c;触觉智能Purple Pi OH鸿蒙开发板演示&#xff0c;搭载了瑞芯微RK3566四核处理器&#xff0c;Laval鸿蒙社区推荐开发板&#xff0c;已适配全新OpenHarmony5.0 Release系统&#xff0c;感兴趣…

Python学习35天

# 定义父类 class Computer: CPUNone MemoryNone diskNone def __init__(self,CPU,Memory,disk): self.disk disk self.Memory Memory self.CPU CPU def get_details(self): return f"CPU:{self.CPU}\tdisk:{self.disk}\t…

基础入门-Web应用架构类别源码类别镜像容器建站模版编译封装前后端分离

知识点&#xff1a; 1、基础入门-Web应用-搭建架构上的技术要点 2、基础入门-Web应用-源码类别上的技术要点 一、演示案例-架构类别-模版&分离&集成&容器&镜像 1、套用模版型 csdn / cnblog / github / 建站系统等 安全测试思路上的不同&#xff1a; 一般…

数据库操作、锁特性

1. DML、DDL和DQL是数据库操作语言的三种主要类型 1.1 DML&#xff08;Data Manipulation Language&#xff09;数据操纵语言 DML是用于检索、插入、更新和删除数据库中数据的SQL语句。 主要的DML语句包括&#xff1a; SELECT&#xff1a;用于查询数据库中的数据。 INSERT&a…

七牛智能CDN视频优化方案,展现企业长期价值

随着智能设备和视频分享平台的日益普及,视频已成为现代人记录和分享生活不可或缺的方式。这一趋势不仅使得视频制作变得简单快捷,也促使视频内容在互联网上呈现爆炸式增长。然而,这一增长同时也为企业带来了诸多挑战,包括视频文件体积增大、加载速度受限、存储和传输成本提升,以…