knxultimate
Version:
KNX IP protocol implementation for Node. This is the ENGINE of Node-Red KNX-Ultimate node.
69 lines • 2.71 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const utils_1 = require("../utils");
const KnxLog_1 = require("../KnxLog");
const logger = (0, KnxLog_1.module)('DPT222');
const config = {
id: 'DPT222',
formatAPDU: (value) => {
const apdu_data = Buffer.alloc(6);
if (typeof value === 'object' &&
(0, utils_1.hasProp)(value, 'Comfort') &&
value.Comfort >= -273 &&
value.Comfort <= 670760 &&
(0, utils_1.hasProp)(value, 'Standby') &&
value.Standby >= -273 &&
value.Standby <= 670760 &&
(0, utils_1.hasProp)(value, 'Economy') &&
value.Economy >= -273 &&
value.Economy <= 670760) {
const ArrComfort = (0, utils_1.getHex)(value.Comfort);
apdu_data[0] = ArrComfort[0];
apdu_data[1] = ArrComfort[1];
const ArrStandby = (0, utils_1.getHex)(value.Standby);
apdu_data[2] = ArrStandby[0];
apdu_data[3] = ArrStandby[1];
const ArrEconomy = (0, utils_1.getHex)(value.Economy);
apdu_data[4] = ArrEconomy[0];
apdu_data[5] = ArrEconomy[1];
return apdu_data;
}
logger.error('Must supply a payload like, for example: {Comfort:21, Standby:20, Economy:14}');
return null;
},
fromBuffer: (buf) => {
if (buf.length !== 6) {
logger.warn('fromBuffer: buf should be 3x2 bytes long (got %d bytes)', buf.length);
return null;
}
const fComfort = (0, utils_1.getFloat)(buf[0], buf[1]);
const fStandby = (0, utils_1.getFloat)(buf[2], buf[3]);
const fEconomy = (0, utils_1.getFloat)(buf[4], buf[5]);
return { Comfort: fComfort, Standby: fStandby, Economy: fEconomy };
},
basetype: {
bitlength: 48,
valuetype: 'basic',
desc: '3x16-bit floating point value',
help: `// Set the temperature setpoints or setpoint shift
msg.payload = {Comfort:21.4, Standby:20, Economy:18.2};
return msg;`,
helplink: 'https://github.com/Supergiovane/node-red-contrib-knx-ultimate/wiki/-Sample---DPT222',
},
subtypes: {
100: {
desc: 'DPT_TempRoomSetpSetF16[3]',
name: 'Room temperature setpoint (Comfort, Standby and Economy)',
unit: '°C',
range: [-273, 670760],
},
101: {
desc: 'DPT_TempRoomSetpSetShiftF16[3]',
name: 'Room temperature setpoint shift (Comfort, Standby and Economy)',
unit: 'K',
range: [-670760, 670760],
},
},
};
exports.default = config;
//# sourceMappingURL=dpt222.js.map