Skip to content

Instantly share code, notes, and snippets.

@ThinkPadNL
Created May 12, 2022 05:45
Show Gist options
  • Save ThinkPadNL/4dd4e000d94d714a1b62f9ab9530d41e to your computer and use it in GitHub Desktop.
Save ThinkPadNL/4dd4e000d94d714a1b62f9ab9530d41e to your computer and use it in GitHub Desktop.
/*
This code (use in Node-RED function node) will parse the data coming from an Envertech Enverbridge EVB202 solar panel monitoring device.
Created by 'ThinkPadNL' 12-05-2022. Feel free to use
*/
var bridge = msg.payload;
if (bridge.length > 60) {
var mi1_id = bridge.readUInt32BE(20).toString(16);
var mi2_id = bridge.readUInt32BE(52).toString(16);
var mi3_id = bridge.readUInt32BE(84).toString(16);
var dc1 = parseFloat((bridge.readUInt16BE(26)/512).toFixed(2));
var dc2 = parseFloat((bridge.readUInt16BE(58)/512).toFixed(2));
var dc3 = parseFloat((bridge.readUInt16BE(90)/512).toFixed(2));
var power1 = parseFloat((bridge.readUInt16BE(28)/64).toFixed(2));
var power2 = parseFloat((bridge.readUInt16BE(60)/64).toFixed(2));
var power3 = parseFloat((bridge.readUInt16BE(92)/64).toFixed(2));
var total1 = parseFloat((bridge.readUInt32BE(30)/8192).toFixed(2));
var total2 = parseFloat((bridge.readUInt32BE(62)/8192).toFixed(2));
var total3 = parseFloat((bridge.readUInt32BE(94)/8192).toFixed(2));
var temp1 = parseFloat(((((bridge.readUInt8(34)*256)+bridge.readUInt8(35))/128)-40).toFixed(2));
var temp2 = parseFloat(((((bridge.readUInt8(66)*256)+bridge.readUInt8(67))/128)-40).toFixed(2));
var temp3 = parseFloat(((((bridge.readUInt8(98)*256)+bridge.readUInt8(99))/128)-40).toFixed(2));
var ac1 = parseFloat((bridge.readUInt16BE(36)/64).toFixed(2));
var ac2 = parseFloat((bridge.readUInt16BE(68)/64).toFixed(2));
var ac3 = parseFloat((bridge.readUInt16BE(100)/64).toFixed(2));
var freq1 = parseFloat((bridge.readUInt8(38) + (bridge.readUInt8(39)/256)).toFixed(2));
var freq2 = parseFloat((bridge.readUInt8(70) + (bridge.readUInt8(71)/256)).toFixed(2));
var freq3 = parseFloat((bridge.readUInt8(102) + (bridge.readUInt8(103)/256)).toFixed(2));
msg.payload = {
[mi1_id]: {
"pac": power1,
"vpv": dc1,
"vac": ac1,
"freq": freq1,
"etotal": total1,
"temperature": temp1
},
[mi2_id]: {
"pac": power2,
"vpv": dc2,
"vac": ac2,
"freq": freq2,
"etotal": total2,
"temperature": temp2
},
[mi3_id]: {
"pac": power3,
"vpv": dc3,
"vac": ac3,
"freq": freq3,
"etotal": total3,
"temperature": temp3
}
}
var nodestate = {
text: 'Pac1: ' + power1 + 'W Pac2: ' + power2 + 'W Pac3: ' + power3 + 'W'
};
node.status(nodestate);
return msg;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment