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,究竟有什么特点?(二)
关注作者 (四)华为版 IPD 特点四:一定要把差异化竞争力持 续建立在平台上 平台不仅带来研发效率的提升,更重要的是,它是技术竞争力的载体,是研发质 量的重要保证。 1)为什么很多企业摆脱不了同…...
【Laravel】接口的访问频率限制器
Laravel 接口的访问频率,你可以在 Laravel 中使用速率限制器(Rate Limiter)。以下是一个详细的步骤,展示如何为这个特定的 API 路由设置速率限制: 1. 配置 RouteServiceProvider 首先,确保在 App\Provide…...

【WRF模拟】如何得到更佳的WRF模拟效果?
【WRF模拟】如何得到更佳的WRF模拟效果? 模型配置(The Model Configuration)1.1 模拟区域domain设置1.2 分辨率Resolution (horizontal and vertical)案例:The Derecho of 29-30 June 2012 1.3 初始化和spin-up预热过程案例1-有无…...
机械臂的各种标定
文章目录 1. 工具坐标系标定2. 工具手标定3. 手眼标定联系 在工程中,同时使用工具坐标系标定、工具手标定和手眼标定的概念、目的和作用如下: 1. 工具坐标系标定 概念: 工具坐标系标定是指确定工具相对于机器人坐标系的位置和姿态关系的过程…...
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操作系统的小伙伴可以跳转到官网链接按提示操作 官网源码地址:下载源代码 | Android Open Source Project 1.创建一个空目录来存放您的工作文件。为其指定一个您喜欢的任意名称: mkdir WORKING_DIRECTORYcdWORKING_DIRECTORY …...

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

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

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

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,之后 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 实现的创新手势识别应用
在这个数字化飞速发展的时代,手势识别技术正逐渐走入我们的日常生活,从智能家居到增强现实,无处不在。而今天,我将与大家分享一个充满创意和趣味的项目——空中绘图板。这个项目利用了强大的 Mediapipe 库和 OpenCV,实…...
讲一个自己写的 excel 转 html 的 java 工具
由来 这是一个从开发需求中诞生的工具,在工作中因为有一个 excel 转 html 的任务,又没找到一个专门做这方面的工具(其他工具几乎都是简单的转换,无法还原 excel 样式,而且转换的宽高有点儿差距)࿰…...
前端往后端传递参数的方式有哪些?
文章目录 1. URL 参数1.1. 查询参数(Query Parameters)1.2. 路径参数(Path Parameters) 2. 请求体(Request Body)2.1. JSON 数据2.2. 表单数据2.3. 文件上传 3. 请求头(Headers)3.1. 自定义请求…...

手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...

基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...

srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...

免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...