knxultimate
Version:
KNX IP protocol implementation for Node. This is the ENGINE of Node-Red KNX-Ultimate node.
67 lines • 2.69 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const KnxLog_1 = require("../KnxLog");
const utils_1 = require("../utils");
const dpt9_1 = __importDefault(require("./dpt9"));
const logger = (0, KnxLog_1.module)('DPT275');
const config = {
id: 'DPT275',
formatAPDU(value) {
if (typeof value === 'object' &&
(0, utils_1.hasProp)(value, 'comfort') &&
(0, utils_1.hasProp)(value, 'standby') &&
(0, utils_1.hasProp)(value, 'economy') &&
(0, utils_1.hasProp)(value, 'buildingProtection')) {
const comfort = dpt9_1.default.formatAPDU(value.comfort);
const standby = dpt9_1.default.formatAPDU(value.standby);
const economy = dpt9_1.default.formatAPDU(value.economy);
const buildingProtection = dpt9_1.default.formatAPDU(value.buildingProtection);
return Buffer.concat([
comfort,
standby,
economy,
buildingProtection,
]);
}
logger.error('formatAPDU: Must supply all values, for example {comfort:22, standby:21.5, economy:21, buildingProtection:15}');
return null;
},
fromBuffer(buf) {
if (buf.length !== 8) {
logger.warn('fromBuffer: buf should be 8 bytes long (got %d bytes)', buf.length);
return null;
}
const comfort = dpt9_1.default.fromBuffer(buf.subarray(0, 2));
const standby = dpt9_1.default.fromBuffer(buf.subarray(2, 4));
const economy = dpt9_1.default.fromBuffer(buf.subarray(4, 6));
const buildingProtection = dpt9_1.default.fromBuffer(buf.subarray(6, 8));
return {
comfort,
standby,
economy,
buildingProtection,
};
return null;
},
basetype: {
bitlength: 64,
valuetype: 'basic',
desc: 'Quadruple setpoints (comfort,standby,economy,buildingProtection) (4 float with 16 Bit)',
help: `// Send comfort, standby, economy mode and buildingProtection temperatures, as n.4 DPT9.001.
msg.payload = {comfort:22, standby:21.5, economy:21, buildingProtection:15};
return msg;`,
},
subtypes: {
100: {
name: 'Quadruple setpoints (comfort,standby,economy,buildingProtection) (4 float with 16 Bit)',
desc: 'DPT_TempRoomSetpSetF16[4]',
unit: '°C',
range: [-273, 670760],
},
},
};
exports.default = config;
//# sourceMappingURL=dpt275.js.map