UNPKG

knxultimate

Version:

KNX IP protocol implementation for Node. This is the ENGINE of Node-Red KNX-Ultimate node.

68 lines 2.71 kB
"use strict"; 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