N8N数据转换:MQTT-MYSQL
-
- 背景说明
- 流程图
- ParseDataPackets数据解析
- [ProductionCale节点 产量计算](#ProductionCale节点 产量计算)
- [SplicingSql SQL拼接](#SplicingSql SQL拼接)
- Redis的使用
背景说明
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客户端,能提供很好的数据观测性
