knxultimate
Version:
KNX IP protocol implementation for Node. This is the ENGINE of Node-Red KNX-Ultimate node.
68 lines • 2.71 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const KnxLog_1 = require("../KnxLog");
const utils_1 = require("../utils");
const logger = (0, KnxLog_1.module)('DPT21');
const config = {
id: 'DPT21',
formatAPDU: (value) => {
if (!value) {
logger.error('cannot write null value');
return null;
}
if (typeof value === 'object' &&
(0, utils_1.hasProp)(value, 'outOfService') &&
typeof value.outOfService === 'boolean' &&
(0, utils_1.hasProp)(value, 'fault') &&
typeof value.fault === 'boolean' &&
(0, utils_1.hasProp)(value, 'overridden') &&
typeof value.overridden === 'boolean' &&
(0, utils_1.hasProp)(value, 'inAlarm') &&
typeof value.inAlarm === 'boolean' &&
(0, utils_1.hasProp)(value, 'alarmUnAck') &&
typeof value.alarmUnAck === 'boolean') {
const bitVal = parseInt(`0000${value.alarmUnAck ? '1' : '0'}${value.inAlarm ? '1' : '0'}${value.overridden ? '1' : '0'}${value.fault ? '1' : '0'}${value.outOfService ? '1' : '0'}`, 2);
return Buffer.from([bitVal]);
}
logger.error('Must supply a right payload: {outOfService:true-false, fault:true-false, overridden:true-false, inAlarm:true-false, alarmUnAck:true-false}');
return null;
},
fromBuffer: (buf) => {
if (buf.length !== 1) {
logger.error('Buffer should be 8 bit long, got', buf.length);
return null;
}
const sBit = Array.from(parseInt(buf.toString('hex').toUpperCase(), 16)
.toString(2)
.padStart(8, '0'));
const ret = {
outOfService: sBit[7] === '1',
fault: sBit[6] === '1',
overridden: sBit[5] === '1',
inAlarm: sBit[4] === '1',
alarmUnAck: sBit[3] === '1',
};
return ret;
},
basetype: {
bitlength: 8,
valuetype: 'basic',
desc: 'General Status',
help: `// This represents a general status
// outOfService:true-false, fault:true-false, overridden:true-false, inAlarm:true-false, alarmUnAck:true-false
msg.payload={outOfService:false, fault:false, overridden:false, inAlarm:true, alarmUnAck:false};
return msg;`,
helplink: '',
},
subtypes: {
'001': {
desc: 'outOfService:true-false, fault:true-false, overridden:true-false, inAlarm:true-false, alarmUnAck:true-false',
name: 'General Status',
unit: '',
scalar_range: [,],
range: [,],
},
},
};
exports.default = config;
//# sourceMappingURL=dpt21.js.map