@chvdapi/node-red-dlt645
Version:
a node communicate with DLT645-2007 electric energy meter
55 lines (52 loc) • 1.67 kB
JavaScript
const dlt645 = require('./build/Release/dlt645')
module.exports = function(RED) {
function PN6400_DLT645(config) {
RED.nodes.createNode(this,config);
var node = this;
var item = 0;
var address = "AAAAAAAAAAAA";//defalut broadCast
//console.log("path:%s\n" ,config.serialport);
var instructionName = config.instruction;
switch (instructionName ) {
case "energy":
item = 1;
break;
case "current":
item = 2;
break;
case "voltage":
item = 3;
break;
case "power":
item = 4;
break;
case "factor":
item = 5;
break;
case "frequence":
item = 6;
break;
case "reactivePower":
item = 7;
break;
}
if(config.useSelfAddress == true){//unicast
address = config.selfDefAddress;
//console.log("unicast address = %s" , address );//
}
else{
//console.log("broadCastaddress = %s" , address );//broadCast
}
node.on('input', function(msg) {
var value = dlt645.readItem(item, config.baudRate, address , config.serialport);
value = Math.floor(value * 1000) / 1000;
msg.payload =
{
"item": instructionName ,
"value" : value
}
node.send(msg);
});
}
RED.nodes.registerType("PN6400_DLT645",PN6400_DLT645);
}