/* 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; }