@1st-setup/cul
Version:
Module to interact with Busware CUL / culfw
44 lines (35 loc) • 1.53 kB
JavaScript
;
// ESA protocol implementation for ESA energy counter @Michael Lorenz 4.3.2018 V0.3
module.exports.parse = function (raw) {
const message = {};
// --- setup the device ---------------------
message.protocol = 'ESA';
message.device = 'ESAunknown'; // Devicetyp
message.address = raw.slice(3, 7); // Device
// --- setup the state data
message.data = {};
message.data.seq = raw.slice(1, 3); // Sequenz, message counter
message.data.dev = raw.slice(3, 7); // Device
message.data.code = raw.slice(7, 11); // Code tells us which Device we have
// --- setup the Device like Code -----------
if (message.data.code === '011E') {
message.device = 'ESA2000';
message.data.devtyp = 'ESA2000';
}
if (message.data.code === '031E') {
message.device = 'ESA1000';
message.data.devtyp = 'ESA1000';
}
// --- setup the values --------------------
message.data.tictotal = Number.parseInt(raw.slice(11, 19), 16);
message.data.ticact = Number.parseInt(raw.slice(19, 23), 16);
message.data.tictime = Number.parseInt(raw.slice(23, 29), 16);
message.data.tickwh = Number.parseInt(raw.slice(29, 33), 16);
// --- show the implemented esa protocol version for debugging
// message.data.ProtVer = 'V0.3.1';
return message;
};
// --------------- export function ----------------------------------------------
module.exports.cmd = function (code, address, command) {
return 'S' + code + address + command;
};