【N8N数据转换:MQTT-MYSQL】

N8N数据转换:MQTT-MYSQL

背景说明

复制代码
 n8n是一个控制颗粒度可以很细的智能工作流编排工具,本文章的使用场景:订阅MQTT数据,检查MQTT数据,写入MYSQL,整个过程可视化操作,效率比写代码更高;

流程图

ParseDataPackets数据解析

  • 对两种数据包做了判断,若有新的增加新的判断代码即可;
javascript 复制代码
var result={currProduction:0,Cid:""};
if ($input.first().json.message.hasOwnProperty('paraslist')==false){
  return result;
}
   if ($input.first().json.message.paraslist.hasOwnProperty('productionCount')==false){
     return result;      
}
var Cid=$input.first().json.message.collectorid;
result.Cid=Cid;
result.currProduction=Number($input.first().json.message.paraslist.productionCount);
return result;  

ProductionCale节点 产量计算

javascript 复制代码
var result={Count:0,Cid:$('ParseDataPackets').first().json.Cid};
var currProduction=$('ParseDataPackets').first().json.currProduction;
if ($input.first().json.Production==null){    
    result.Count=0;
}else{
  var lastProduction=Number($input.first().json.Production) || 0;
  if (currProduction==lastProduction){
    result.Count=0;    
  }else if (currProduction>lastProduction){
    result.Count=currProduction-lastProduction;    
  }else {
    result.Count=currProduction;    
  }    
}
return result;  

SplicingSql SQL拼接

javascript 复制代码
var result={sql:""};
console.log(result);
var Cid=$('ParseDataPackets').first().json.Cid;
var Countstr=String($('ProductionCale').first().json.Count);
if ($input.first().json.hasOwnProperty(Cid)){
  var cfg=$input.first().json[Cid];
  result.sql=`update PLC_T_Data set Sys_time=NOW(),PLC_time=NOW(),${cfg.plc}=${cfg.plc}+${Countstr} where devID=${cfg.devid}`;
}
console.log(result);
return result;

Redis的使用

在产量计算过程中,需要通过redis节点读取上一次产量,redis节点存储当前产量;n8n有全局变量,但使用过程中并不能持久化,使用redis更好;

redis写入节点

通过Redis读写数据,然后通过redis客户端,能提供很好的数据观测性

相关推荐
todoitbo10 分钟前
我在 Mac 上用 Docker 部署 Nexent:从拉取镜像到接入模型
macos·docker·大模型·ai智能体·nexent·快速入门与环境准备
Goboy1 小时前
夯爆了,我被一个一句话接入的免费可观测平台策反了,那一刻我决定放弃用了3年的Prometheus
后端·docker·kubernetes
java_logo12 小时前
Docker 部署 Liquibase:轻松搭建数据库变更管理
数据库·docker·容器·数据库管理·liquibase·轩辕镜像·数据库变更
IT利刃出鞘19 小时前
Docker Compose--解决修改配置后不生效的问题
运维·docker·容器
java_logo19 小时前
Docker 部署 CloudBeaver:轻松搭建网页数据库管理平台
数据库·docker·容器·数据库管理·dbeaver·轩辕镜像·cloudbeaver
Lsetea19 小时前
Docker更新SSL证书后容器仍读旧文件:单文件挂载与目录挂载排查
运维·nginx·docker·https·ssl证书
好用斋21 小时前
拾光坞安装网盘聚合LitePan:把Docker命令翻译成图形界面
运维·docker·容器
对象存储与RustFS21 小时前
Velero 接 RustFS 实操:K8s 集群备份落到自建对象存储
后端·docker·云原生
70后写java的老码农1 天前
docker-compose 部署 Redis Stack Server 6.2.6-v19
redis·docker
方便面不加香菜1 天前
Docker Container -- 容器命令详解
运维·docker·容器