当前位置: 首页 > news >正文

NodeRed使用心得,实现增删改查等

使用场景介绍

在VUE中使用nodeRed实现对节点的 增删改查等功能,且储存成功之后下点击时启动对应流程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

安装与配置

1.安装NodeRed
npm install -g --unsafe-perm node-red
安装完成后,你可以通过运行以下命令来启动Node-RED
node-red-start2. 配置文件
Node-RED的主要配置文件是settings.js。这个文件位于Node-RED的安装目录下,或者在你的用户目录下的.node-red文件夹中。你可以通过编辑这个文件来自定义Node-RED的行为。

首先就是部署了,要真正的实现且储存成功之后下点击时启动对应流程还是要麻烦后端同学部署一下(具体如何部署我也不清楚)
后端部署之后会提供一个地址 如:

http://192.168.1.19:1880/#flow/ff07562cd6ebb566
http://192.168.1.19:1880 为后端提供的地址,ff07562cd6ebb566为当前流程的ID已启动对应的流程

拖动一些节点右上角后点击部署后,会自动存储一个json文件

[{"id": "8587ac557a88ac60",//流程ID"type": "tab","label": "流程 2", //流程名称"disabled": false,"info": "","env": []},{"id": "de312079982d37a9","type": "debug","z": "8587ac557a88ac60","name": "debug 3",//节点类型"active": true,"tosidebar": true,"console": false,"tostatus": false,"complete": "payload","targetType": "msg","statusVal": "","statusType": "auto","x": 1000,//节点位置"y": 300,//节点位置"wires": []},{"id": "b3f87d7d2496d6b3","type": "http request","z": "8587ac557a88ac60","name": "Get News Details","method": "GET","ret": "obj","paytoqs": "ignore","url": "http://shop.pulisi.sd.cn:8088/pleaseds/stationlist?strwhere=","tls": "","persist": false,"proxy": "","insecureHTTPParser": false,"authType": "","senderr": false,"headers": [],"x": 370,"y": 360,"wires": [["6f54cda79df1511a"]]},{"id": "10a4b6f9d7cb092c","type": "inject","z": "8587ac557a88ac60","name": "","props": [{"p": "payload"},{"p": "topic","vt": "str"}],"repeat": "","crontab": "","once": false,"onceDelay": 0.1,"topic": "","payload": "","payloadType": "date","x": 110,"y": 300,"wires": [["b3f87d7d2496d6b3"]]},{"id": "6f54cda79df1511a","type": "function","z": "8587ac557a88ac60","name": "function 3","func": "\nreturn msg;","outputs": 1,"timeout": 0,"noerr": 0,"initialize": "","finalize": "","libs": [],"x": 680,"y": 360,"wires": [["de312079982d37a9"]]}
]

代码演示增删改查

在以上完成 安装 部署 存储等 就可以进行编程了(完整代码我会贴在我的雨雀笔记!毕竟是公司代码需要一些保密)

查询出对应节点

  getlist() {axios.get('http://192.168.1.19:1880/flows') 这里是替换你后端的api.then(res => {console.log(res, 'res');// 将API返回的数据(res.data)进行过滤和映射处理,生成一个新的数组赋值给this.SceneLinkageListthis.SceneLinkageList = res.data// 过滤出type为'tab'且label存在的项.filter(item => item.type === 'tab' && item.label)// 对过滤后的每一项进行映射,生成新的对象数组.map(item => ({// 新对象的id属性,取自原项的idid: item.id,// 新对象的label属性,取自原项的labellabel: item.label,// 新对象的description属性,取自原项的info,如果info不存在则默认为空字符串description: item.info || '',// 新对象的status属性,根据原项的disabled属性决定,如果disabled为true则为'disabled',否则为'enabled'status: item.disabled ? 'disabled' : 'enabled'}));// 将处理后的SceneLinkageList数组复制一份给filteredSceneLinkageList,用于后续的过滤显示this.filteredSceneLinkageList = [...this.SceneLinkageList]; }).catch(error => {console.error('请求失败:', error);});},

启动对应流程
将上一步的json数据保存后 渲染到页面后点击时传值

launchNodeRED(rule) {console.log(rule, 'rule');if (!rule.id) {console.error('该规则没有关联的流程 ID');this.$message.error('无法启动流程:未指定流程 ID');return;}if (this.currentNodeREDWindow && !this.currentNodeREDWindow.closed) {this.currentNodeREDWindow.close();}const nodeREDUrl = `http://192.168.1.19:1880/#flow/${rule.id}`;console.log('Node-RED URL:', nodeREDUrl);try {this.currentNodeREDWindow = window.open(nodeREDUrl, 'nodeREDWindow');if (!this.currentNodeREDWindow) {throw new Error('弹出窗口被阻止');}} catch (error) {console.error('打开 Node-RED 流程失败:', error);this.$message.error('启动流程失败,请检查您的浏览器设置');}
},

删除

axios.delete(http://192.168.1.19:1880/flow/${rule.id});

新增与编辑
async submitForm() {
try {
const valid = await this.$refs.ruleForm.validate();
if (!valid) return;

    if (this.dialogTitle === '新增规则') {const response = await axios.post('http://192.168.1.19:1880/flow', {label: this.formData.name,info: this.formData.description,nodes: []});const newFlow = response.data;this.SceneLinkageList.push({id: newFlow.id,label: newFlow.label,description: newFlow.info,status: 'enabled'});this.$message.success('新流程创建成功');this.launchNodeRED({ id: newFlow.id });} else {const response = await axios.get(`http://192.168.1.19:1880/flow/${this.formData.id}`);const flow = response.data;flow.label = this.formData.name;flow.info = this.formData.description;await axios.put(`http://192.168.1.19:1880/flow/${this.formData.id}`, flow);const updatedRule = this.SceneLinkageList.find(rule => rule.id === this.formData.id);if (updatedRule) {updatedRule.label = this.formData.name;updatedRule.description = this.formData.description;}this.$message.success('规则修改成功');}this.dialogVisible = false;this.getlist(); // Refresh the list after adding or editing} catch (error) {console.error('提交表单失败:', error);this.$message.error('操作失败,请重试');}
},

这里只做简单的介绍,看不懂把代码喂给AI他也能给你解答

如何在nodeRed中运行想要的结果

关于noderRed如何配置节点并运行?
在这里插入图片描述

1.首先需要一个能触发的节点如 inject 拖到画布中
2.配置HTTP节点,自定义调整 请求方式 URL地址 返回值等 无需过多配置
3.配置function放(可省略)
4.debug节点打印输出的内容
5.将他们如图依次连接后,点击部署后, 点击 inject 左侧按钮即可打印接口返回的结果
在这里插入图片描述

如何个性化配置nodeRed

nodeRed下载后 网页标题与页面标题都是初始化的
在这里插入图片描述
如果要修改则需要去nodeRed安装目录找到settings.js文件

如何找到nodeRed安装目录?常见的默认安装目录:
- Windows: `C:\Users\[用户名]\.node-red`
- Linux: `/home/[用户名]/.node-red`
- Mac: `/Users/[用户名]/.node-red`

找到后打开文件找到 editorTheme: {}在这个里面添加你要的值,如

 page: {title: "规则设计器"},header: {title: "规则设计器"},

最后就是安装个性化插件 以及 设置语言,设置中皆可自定义调整
在这里插入图片描述
在这里插入图片描述

相关文章:

NodeRed使用心得,实现增删改查等

使用场景介绍 在VUE中使用nodeRed实现对节点的 增删改查等功能,且储存成功之后下点击时启动对应流程 安装与配置 1.安装NodeRed npm install -g --unsafe-perm node-red 安装完成后,你可以通过运行以下命令来启动Node-RED node-red-start2. 配置文件 N…...

【docker系列】打造个人私有网盘zfile

1. 介绍 是一个适用于个人的在线网盘(列目录)程序,可以将你各个存储类型的存储源,统一到一个网页中查看、预览、维护,再也不用去登录各种各样的网页登录后管理文件 2. 需要环境 2.1 硬件需求 CPU:至少1核 内存:推荐…...

协议幻变者:DeviceNet转ModbusTCP网关开启机器手臂智能新纪元

技术背景DeviceNet是一种广泛应用于工业自动化领域的现场总线标准,它能够实现控制器与现场设备之间的高效通信,常用于连接各种传感器、执行器以及其他工业设备,如机器人、电机驱动器等,具有实时性强、可靠性高的特点。而ModbusTCP…...

[计算机网络]OSPF协议

开放最短路径优先OSPF 1)OSPF的工作方式 1>和谁交换消息 使用洪泛法,向本自治系统的所有路由器发送消息。 2>交换什么消息 发送的消息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。 链路状态就是说…...

springcloud2023集成 knife4j 4.4.0 如何关闭

openapi3 规范注意微服务关闭springdoc:swagger-ui:enabled: falseapi-docs:enabled: false 网关关闭 knife4j:gateway:enabled: falsestrategy: discoverdiscover:enabled: falseversion: openapi3# 需要排除的微服务(eg:网关服务)excluded-services:- api-gateway- web-www-…...

Springboot项目下面使用Vue3 + ElementPlus搭建侧边栏首页

Springboot项目下面、在html 页面 Vue3 ElementPlus 搭建侧边栏首页 1、效果图 2、static 文件下面的项目结构 3、代码实现 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>首页</title><…...

华为 IPD,究竟有什么特点?(二)

关注作者 &#xff08;四&#xff09;华为版 IPD 特点四&#xff1a;一定要把差异化竞争力持 续建立在平台上 平台不仅带来研发效率的提升&#xff0c;更重要的是&#xff0c;它是技术竞争力的载体&#xff0c;是研发质 量的重要保证。 1&#xff09;为什么很多企业摆脱不了同…...

【Laravel】接口的访问频率限制器

Laravel 接口的访问频率&#xff0c;你可以在 Laravel 中使用速率限制器&#xff08;Rate Limiter&#xff09;。以下是一个详细的步骤&#xff0c;展示如何为这个特定的 API 路由设置速率限制&#xff1a; 1. 配置 RouteServiceProvider 首先&#xff0c;确保在 App\Provide…...

【WRF模拟】如何得到更佳的WRF模拟效果?

【WRF模拟】如何得到更佳的WRF模拟效果&#xff1f; 模型配置&#xff08;The Model Configuration&#xff09;1.1 模拟区域domain设置1.2 分辨率Resolution (horizontal and vertical)案例&#xff1a;The Derecho of 29-30 June 2012 1.3 初始化和spin-up预热过程案例1-有无…...

机械臂的各种标定

文章目录 1. 工具坐标系标定2. 工具手标定3. 手眼标定联系 在工程中&#xff0c;同时使用工具坐标系标定、工具手标定和手眼标定的概念、目的和作用如下&#xff1a; 1. 工具坐标系标定 概念&#xff1a; 工具坐标系标定是指确定工具相对于机器人坐标系的位置和姿态关系的过程…...

Android监听拨打电话

第一步获取权限 Manifest.permission.READ_PHONE_STATEManifest.permission.ANSWER_PHONE_CALLSManifest.permission.READ_CALL_LOG Manifest.permission.READ_CONTACTS第二步 注册监听 private var telephonyManager: TelephonyManager? nullprivate var mPhoneStateList…...

Framework开发入门(一)之源码下载

一、使用Linux操作系统的小伙伴可以跳转到官网链接按提示操作 官网源码地址&#xff1a;下载源代码 | Android Open Source Project 1.创建一个空目录来存放您的工作文件。为其指定一个您喜欢的任意名称&#xff1a; mkdir WORKING_DIRECTORYcdWORKING_DIRECTORY …...

TCP off-path exploits(又一个弄巧成拙的例子)

承接前面几篇文章的观点&#xff0c;本文用一个安全攻击的例子说明为了解决一个伤害很低的低概率问题&#xff0c;会引入多么大的麻烦&#xff0c;这次是可怕的被攻击 (⊙o⊙)。 TCP 端口号只有 16bit&#xff0c;序列号只有 32bit&#xff0c;这意味着在强大攻击算力面前&…...

Ajax总结

引言 这是属于前端的部分了&#xff0c;先是学习了三件套&#xff08;HTML,JS,CSS没怎么学&#xff0c;但是大概能理解&#xff09;之后就开始学习这个了&#xff0c;学习之前应该要知道她是做什么的&#xff0c;但是我没有做这一步&#xff0c;之后会先了解为什么要学习这门技…...

修改网络ip地址方法有哪些?常用的有这四种

在数字时代&#xff0c;IP地址作为网络设备的唯一标识&#xff0c;对于网络连接和通信至关重要。然而&#xff0c;有时候我们可能需要修改设备的IP地址&#xff0c;以满足特定的网络需求或解决网络问题。本文将为您详细介绍几种修改网络IP地址的常用方法&#xff0c;无论是对于…...

SpringBoot获取bean的几种方式

目录 一、BeanFactory与ApplicationContext的区别 二、通过BeanFactory获取 三、通过BeanFactoryAware获取 四、启动获取ApplicationContext 五、通过继承ApplicationObjectSupport 六、通过继承WebApplicationObjectSupport 七、通过WebApplicationContextUtils 八、通…...

Debian12 安装配置 ODBC for GaussDB

第一步 apt install -y unixodbc 第二步下载 dws_8.2.x_odbc_driver_for_x86_redhat.zip 到 /tmp&#xff0c;之后 cd /tmp unzip dws_8.2.x_odbc_driver_for_x86_redhat.zip cp lib/* /usr/local/lib cp odbc/lib/* /usr/local/lib echo /usr/local/lib >> /etc/ld…...

空中绘图板:用 Mediapipe 和 OpenCV 实现的创新手势识别应用

在这个数字化飞速发展的时代&#xff0c;手势识别技术正逐渐走入我们的日常生活&#xff0c;从智能家居到增强现实&#xff0c;无处不在。而今天&#xff0c;我将与大家分享一个充满创意和趣味的项目——空中绘图板。这个项目利用了强大的 Mediapipe 库和 OpenCV&#xff0c;实…...

讲一个自己写的 excel 转 html 的 java 工具

由来 这是一个从开发需求中诞生的工具&#xff0c;在工作中因为有一个 excel 转 html 的任务&#xff0c;又没找到一个专门做这方面的工具&#xff08;其他工具几乎都是简单的转换&#xff0c;无法还原 excel 样式&#xff0c;而且转换的宽高有点儿差距&#xff09;&#xff0…...

前端往后端传递参数的方式有哪些?

文章目录 1. URL 参数1.1. 查询参数&#xff08;Query Parameters)1.2. 路径参数&#xff08;Path Parameters&#xff09; 2. 请求体&#xff08;Request Body&#xff09;2.1. JSON 数据2.2. 表单数据2.3. 文件上传 3. 请求头&#xff08;Headers&#xff09;3.1. 自定义请求…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用&#xff0c;结合SQLite数据库实现联系人管理功能&#xff0c;并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能&#xff0c;同时可以最小化到系统…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...