Created
May 12, 2022 05:45
-
-
Save ThinkPadNL/4dd4e000d94d714a1b62f9ab9530d41e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
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