lib-comfoair
Version:
Library to communicate with Zehnder ComfoAirQ ventilation unit through the ComfoControl gateway
300 lines (299 loc) • 17.5 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.VentilationUnitProperties = exports.UnitTypes = exports.ErrorCodes = exports.NodeTypes = void 0;
const deviceProperties_1 = require("./deviceProperties");
var NodeTypes;
(function (NodeTypes) {
NodeTypes[NodeTypes["VENTILATION_UNIT"] = 1] = "VENTILATION_UNIT";
NodeTypes[NodeTypes["OPTION_BOX"] = 2] = "OPTION_BOX";
NodeTypes[NodeTypes["COMFOCONTROL_GATEWAY"] = 55] = "COMFOCONTROL_GATEWAY";
})(NodeTypes || (exports.NodeTypes = NodeTypes = {}));
var ErrorCodes;
(function (ErrorCodes) {
ErrorCodes[ErrorCodes["NO_ERROR"] = 0] = "NO_ERROR";
ErrorCodes[ErrorCodes["UNKNOWN_COMMAND"] = 11] = "UNKNOWN_COMMAND";
ErrorCodes[ErrorCodes["UNKNOWN_UNIT"] = 12] = "UNKNOWN_UNIT";
ErrorCodes[ErrorCodes["UNKNOWN_SUBUNIT"] = 13] = "UNKNOWN_SUBUNIT";
ErrorCodes[ErrorCodes["UNKNOWN_PROPERTY"] = 14] = "UNKNOWN_PROPERTY";
ErrorCodes[ErrorCodes["TYPE_CANNOT_HAVE_RANGE"] = 15] = "TYPE_CANNOT_HAVE_RANGE";
ErrorCodes[ErrorCodes["VALUE_NOT_IN_RANGE"] = 30] = "VALUE_NOT_IN_RANGE";
ErrorCodes[ErrorCodes["PROPERTY_NOT_GETTABLE_OR_SETTABLE"] = 32] = "PROPERTY_NOT_GETTABLE_OR_SETTABLE";
ErrorCodes[ErrorCodes["INTERNAL_ERROR"] = 40] = "INTERNAL_ERROR";
ErrorCodes[ErrorCodes["INTERNAL_ERROR_COMMAND_WRONG"] = 41] = "INTERNAL_ERROR_COMMAND_WRONG";
})(ErrorCodes || (exports.ErrorCodes = ErrorCodes = {}));
/**
* Enum representing different node types.
*/
var UnitTypes;
(function (UnitTypes) {
/** NODE: Represents the general node with attributes like serial nr, etc. (1 SubUnit) */
UnitTypes[UnitTypes["NODE"] = 1] = "NODE";
/** COMFOBUS: Unit responsible for comfobus-communication. Probably stores the ID's of connected devices. (1 SubUnit) */
UnitTypes[UnitTypes["COMFOBUS"] = 2] = "COMFOBUS";
/** ERROR: Stores errors, allows errors to be reset (1 SubUnit) */
UnitTypes[UnitTypes["ERROR"] = 3] = "ERROR";
/** SCHEDULE: Responsible for managing Timers, the schedule, etc. Check here for level, bypass etc. (10 SubUnits) */
UnitTypes[UnitTypes["SCHEDULE"] = 21] = "SCHEDULE";
/** VALVE: ??? Bypass PreHeater and Extract (2 SubUnits) */
UnitTypes[UnitTypes["VALVE"] = 22] = "VALVE";
/** FAN: Represents the two fans (supply, exhaust) (2 SubUnits) */
UnitTypes[UnitTypes["FAN"] = 23] = "FAN";
/** POWERSENSOR: Counts the actual wattage of ventilation and accumulates to year and since factory reset (1 SubUnit) */
UnitTypes[UnitTypes["POWERSENSOR"] = 24] = "POWERSENSOR";
/** PREHEATER: Represents the optional preheater (1 SubUnit) */
UnitTypes[UnitTypes["PREHEATER"] = 25] = "PREHEATER";
/** HMI: Represents the Display + Buttons (1 SubUnit) */
UnitTypes[UnitTypes["HMI"] = 26] = "HMI";
/** RFCOMMUNICATION: Wireless-communication with attached devices (1 SubUnit) */
UnitTypes[UnitTypes["RFCOMMUNICATION"] = 27] = "RFCOMMUNICATION";
/** FILTER: Counts the days since last filter change (1 SubUnit) */
UnitTypes[UnitTypes["FILTER"] = 28] = "FILTER";
/** TEMPHUMCONTROL: Controls the target temperature, if its cooling or heating period and some settings (1 SubUnit) */
UnitTypes[UnitTypes["TEMPHUMCONTROL"] = 29] = "TEMPHUMCONTROL";
/** VENTILATIONCONFIG: Responsible for managing various configuration options of the ventilation (1 SubUnit) */
UnitTypes[UnitTypes["VENTILATIONCONFIG"] = 30] = "VENTILATIONCONFIG";
/** NODECONFIGURATION: Manages also some options (1 SubUnit) */
UnitTypes[UnitTypes["NODECONFIGURATION"] = 32] = "NODECONFIGURATION";
/** TEMPERATURESENSOR: Represents the 6 temperature sensors in the ventilation (6 SubUnits) */
UnitTypes[UnitTypes["TEMPERATURESENSOR"] = 33] = "TEMPERATURESENSOR";
/** HUMIDITYSENSOR: Represents the 6 humidity sensors (6 SubUnits) */
UnitTypes[UnitTypes["HUMIDITYSENSOR"] = 34] = "HUMIDITYSENSOR";
/** PRESSURESENSOR: Represents both pressure sensors (2 SubUnits) */
UnitTypes[UnitTypes["PRESSURESENSOR"] = 35] = "PRESSURESENSOR";
/** PERIPHERALS: Stores the ID of the ComfoCool attached, can reset peripheral errors here (1 SubUnit) */
UnitTypes[UnitTypes["PERIPHERALS"] = 36] = "PERIPHERALS";
/** ANALOGINPUT: Provides data and functionality for the analog inputs, also the scaling for the voltages (4 SubUnits) */
UnitTypes[UnitTypes["ANALOGINPUT"] = 37] = "ANALOGINPUT";
/** COOKERHOOD: "Dummy" unit, probably represents the ComfoHood if attached (1 SubUnit) */
UnitTypes[UnitTypes["COOKERHOOD"] = 38] = "COOKERHOOD";
/** POSTHEATER: Represents the optional post heater attached (temperature sens, config) (1 SubUnit) */
UnitTypes[UnitTypes["POSTHEATER"] = 39] = "POSTHEATER";
/** COMFOFOND: "Dummy" unit, represents the optional comfofond (1 SubUnit) */
UnitTypes[UnitTypes["COMFOFOND"] = 40] = "COMFOFOND";
})(UnitTypes || (exports.UnitTypes = UnitTypes = {}));
/**
* Known properties of each subunit.
*/
exports.VentilationUnitProperties = {
NODE: {
// "UNKNOWN_1": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.NODE, propertyId: 0x01, dataType: PropertyDataType.CN_UINT8 },
// "UNKNOWN_2": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.NODE, propertyId: 0x02, dataType: PropertyDataType.CN_UINT8 },
// "UNKNOWN_3": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.NODE, propertyId: 0x03, dataType: PropertyDataType.CN_UINT8 },
SERIAL_NUMBER: {
node: NodeTypes.VENTILATION_UNIT,
unit: UnitTypes.NODE,
propertyId: 0x04,
dataType: deviceProperties_1.PropertyDataType.CN_STRING,
access: 'ro',
},
// "UNKNOWN_5": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.NODE, propertyId: 0x05, dataType: PropertyDataType.CN_UINT8 },
FIRMWARE_VERSION: {
node: NodeTypes.VENTILATION_UNIT,
unit: UnitTypes.NODE,
propertyId: 0x06,
dataType: deviceProperties_1.PropertyDataType.CN_UINT32,
access: 'ro',
},
// "UNKNOWN_7": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.NODE, propertyId: 0x07, dataType: PropertyDataType.CN_UINT32 },
MODEL_NUMBER: {
node: NodeTypes.VENTILATION_UNIT,
unit: UnitTypes.NODE,
propertyId: 0x08,
dataType: deviceProperties_1.PropertyDataType.CN_STRING,
access: 'ro',
},
// "UNKNOWN_9": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.NODE, propertyId: 0x09, dataType: PropertyDataType.CN_UINT32 },
// "UNKNOWN_10": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.NODE, propertyId: 0x0A, dataType: PropertyDataType.CN_UINT32 },
ARTICLE_NUMBER: {
node: NodeTypes.VENTILATION_UNIT,
unit: UnitTypes.NODE,
propertyId: 0x0b,
dataType: deviceProperties_1.PropertyDataType.CN_STRING,
access: 'ro',
},
// "UNKNOWN_12": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.NODE, propertyId: 0x0C, dataType: PropertyDataType.CN_STRING },
CURRENT_COUNTRY: {
node: NodeTypes.VENTILATION_UNIT,
unit: UnitTypes.NODE,
propertyId: 0x0d,
dataType: deviceProperties_1.PropertyDataType.CN_STRING,
access: 'ro',
},
VENTILATION_UNIT_NAME: {
node: NodeTypes.VENTILATION_UNIT,
unit: UnitTypes.NODE,
propertyId: 0x14,
dataType: deviceProperties_1.PropertyDataType.CN_STRING,
access: 'ro',
},
},
TEMPHUMCONTROL: {
// "UNKNOWN_1": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.TEMPHUMCONTROL, propertyId: 0x01, dataType: PropertyDataType.CN_UINT8 },
RMOT_HEATING_PERIOD: {
node: NodeTypes.VENTILATION_UNIT,
unit: UnitTypes.TEMPHUMCONTROL,
propertyId: 0x02,
dataType: deviceProperties_1.PropertyDataType.CN_INT16,
access: 'rw',
},
RMOT_COOLING_PERIOD: {
node: NodeTypes.VENTILATION_UNIT,
unit: UnitTypes.TEMPHUMCONTROL,
propertyId: 0x03,
dataType: deviceProperties_1.PropertyDataType.CN_INT16,
access: 'rw',
},
PASSIVE_TEMPERATURE_CONTROL: {
node: NodeTypes.VENTILATION_UNIT,
unit: UnitTypes.TEMPHUMCONTROL,
propertyId: 0x04,
dataType: deviceProperties_1.PropertyDataType.CN_UINT8,
access: 'rw',
},
// "UNKNOWN_5": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.TEMPHUMCONTROL, propertyId: 0x05, dataType: PropertyDataType.CN_UINT8, access: "rw" },
HUMIDITY_COMFORT_CONTROL: {
node: NodeTypes.VENTILATION_UNIT,
unit: UnitTypes.TEMPHUMCONTROL,
propertyId: 0x06,
dataType: deviceProperties_1.PropertyDataType.CN_UINT8,
access: 'rw',
},
HUMIDITY_PROTECTION: {
node: NodeTypes.VENTILATION_UNIT,
unit: UnitTypes.TEMPHUMCONTROL,
propertyId: 0x07,
dataType: deviceProperties_1.PropertyDataType.CN_UINT8,
access: 'rw',
},
// "UNKNOWN_8": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.TEMPHUMCONTROL, propertyId: 0x08, dataType: PropertyDataType.CN_UINT8, access: "rw" },
TARGET_TEMPERATURE_HEATING: {
node: NodeTypes.VENTILATION_UNIT,
unit: UnitTypes.TEMPHUMCONTROL,
propertyId: 0x0a,
dataType: deviceProperties_1.PropertyDataType.CN_INT16,
access: 'rw',
},
TARGET_TEMPERATURE_NORMAL: {
node: NodeTypes.VENTILATION_UNIT,
unit: UnitTypes.TEMPHUMCONTROL,
propertyId: 0x0b,
dataType: deviceProperties_1.PropertyDataType.CN_INT16,
access: 'rw',
},
TARGET_TEMPERATURE_COOLING: {
node: NodeTypes.VENTILATION_UNIT,
unit: UnitTypes.TEMPHUMCONTROL,
propertyId: 0x0c,
dataType: deviceProperties_1.PropertyDataType.CN_INT16,
access: 'rw',
},
// "UNKNOWN_13": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.TEMPHUMCONTROL, propertyId: 0x0D, dataType: PropertyDataType.CN_UINT8 },
},
VENTILATIONCONFIG: {
// "UNKNOWN_1": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.VENTILATIONCONFIG, propertyId: 0x01, dataType: PropertyDataType.CN_UINT8 },
// "UNKNOWN_2": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.VENTILATIONCONFIG, propertyId: 0x02, dataType: PropertyDataType.CN_UINT8 },
VENTILATION_SPEED_AWAY: {
node: NodeTypes.VENTILATION_UNIT,
unit: UnitTypes.VENTILATIONCONFIG,
propertyId: 0x03,
dataType: deviceProperties_1.PropertyDataType.CN_INT16,
access: 'rw',
},
VENTILATION_SPEED_LOW: {
node: NodeTypes.VENTILATION_UNIT,
unit: UnitTypes.VENTILATIONCONFIG,
propertyId: 0x04,
dataType: deviceProperties_1.PropertyDataType.CN_INT16,
access: 'rw',
},
VENTILATION_SPEED_MEDIUM: {
node: NodeTypes.VENTILATION_UNIT,
unit: UnitTypes.VENTILATIONCONFIG,
propertyId: 0x05,
dataType: deviceProperties_1.PropertyDataType.CN_INT16,
access: 'rw',
},
VENTILATION_SPEED_HIGH: {
node: NodeTypes.VENTILATION_UNIT,
unit: UnitTypes.VENTILATIONCONFIG,
propertyId: 0x06,
dataType: deviceProperties_1.PropertyDataType.CN_INT16,
access: 'rw',
},
HEIGHT_ABOVE_SEA_LEVEL: {
node: NodeTypes.VENTILATION_UNIT,
unit: UnitTypes.VENTILATIONCONFIG,
propertyId: 0x07,
dataType: deviceProperties_1.PropertyDataType.CN_UINT8,
},
// "UNKNOWN_8": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.VENTILATIONCONFIG, propertyId: 0x08, dataType: PropertyDataType.CN_INT16 },
VENTILATION_CONTROL_MODE: {
node: NodeTypes.VENTILATION_UNIT,
unit: UnitTypes.VENTILATIONCONFIG,
propertyId: 0x09,
dataType: deviceProperties_1.PropertyDataType.CN_UINT8,
},
// "UNKNOWN_10": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.VENTILATIONCONFIG, propertyId: 0x0A, dataType: PropertyDataType.CN_INT16 },
BATHROOM_SWITCH_ACTIVATION_DELAY: {
node: NodeTypes.VENTILATION_UNIT,
unit: UnitTypes.VENTILATIONCONFIG,
propertyId: 0x0b,
dataType: deviceProperties_1.PropertyDataType.CN_INT16,
},
BATHROOM_SWITCH_DEACTIVATION_DELAY: {
node: NodeTypes.VENTILATION_UNIT,
unit: UnitTypes.VENTILATIONCONFIG,
propertyId: 0x0c,
dataType: deviceProperties_1.PropertyDataType.CN_UINT8,
},
BATHROOM_SWITCH_MODE: {
node: NodeTypes.VENTILATION_UNIT,
unit: UnitTypes.VENTILATIONCONFIG,
propertyId: 0x0d,
dataType: deviceProperties_1.PropertyDataType.CN_UINT8,
},
// "UNKNOWN_14": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.VENTILATIONCONFIG, propertyId: 0x0E, dataType: PropertyDataType.CN_UINT8 },
// "UNKNOWN_15": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.VENTILATIONCONFIG, propertyId: 0x0F, dataType: PropertyDataType.CN_UINT8 },
// "UNKNOWN_17": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.VENTILATIONCONFIG, propertyId: 0x11, dataType: PropertyDataType.CN_INT16 },
UNBALANCE: {
node: NodeTypes.VENTILATION_UNIT,
unit: UnitTypes.VENTILATIONCONFIG,
propertyId: 0x12,
dataType: deviceProperties_1.PropertyDataType.CN_INT16,
},
// "UNKNOWN_19": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.VENTILATIONCONFIG, propertyId: 0x13, dataType: PropertyDataType.CN_INT16 },
// "UNKNOWN_20": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.VENTILATIONCONFIG, propertyId: 0x14, dataType: PropertyDataType.CN_INT16 },
// "UNKNOWN_21": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.VENTILATIONCONFIG, propertyId: 0x15, dataType: PropertyDataType.CN_INT16 },
// "UNKNOWN_22": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.VENTILATIONCONFIG, propertyId: 0x16, dataType: PropertyDataType.CN_INT16 },
// "UNKNOWN_23": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.VENTILATIONCONFIG, propertyId: 0x17, dataType: PropertyDataType.CN_INT16 },
// "UNKNOWN_24": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.VENTILATIONCONFIG, propertyId: 0x18, dataType: PropertyDataType.CN_INT16 },
// "UNKNOWN_25": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.VENTILATIONCONFIG, propertyId: 0x19, dataType: PropertyDataType.CN_INT16 },
// "UNKNOWN_26": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.VENTILATIONCONFIG, propertyId: 0x1A, dataType: PropertyDataType.CN_INT16 },
// "UNKNOWN_27": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.VENTILATIONCONFIG, propertyId: 0x1B, dataType: PropertyDataType.CN_INT16 },
// "UNKNOWN_28": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.VENTILATIONCONFIG, propertyId: 0x1C, dataType: PropertyDataType.CN_INT16 },
// "UNKNOWN_29": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.VENTILATIONCONFIG, propertyId: 0x1D, dataType: PropertyDataType.CN_INT16 },
// "UNKNOWN_30": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.VENTILATIONCONFIG, propertyId: 0x1E, dataType: PropertyDataType.CN_INT16 },
},
NODECONFIGURATION: {
// "UNKNOWN_1": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.NODECONFIGURATION, propertyId: 0x01, dataType: PropertyDataType.CN_UINT8 },
MAINTAINER_PASSWORD: {
node: NodeTypes.VENTILATION_UNIT,
unit: UnitTypes.NODECONFIGURATION,
propertyId: 0x03,
dataType: deviceProperties_1.PropertyDataType.CN_STRING,
},
ORIENTATION: {
node: NodeTypes.VENTILATION_UNIT,
unit: UnitTypes.NODECONFIGURATION,
propertyId: 0x04,
dataType: deviceProperties_1.PropertyDataType.CN_UINT8,
},
// "UNKNOWN_5": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.NODECONFIGURATION, propertyId: 0x05, dataType: PropertyDataType.CN_UINT8 },
// "UNKNOWN_6": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.NODECONFIGURATION, propertyId: 0x06, dataType: PropertyDataType.CN_UINT8 },
// "UNKNOWN_7": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.NODECONFIGURATION, propertyId: 0x07, dataType: PropertyDataType.CN_UINT8 },
// "UNKNOWN_8": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.NODECONFIGURATION, propertyId: 0x08, dataType: PropertyDataType.CN_UINT8 },
// "UNKNOWN_10": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.NODECONFIGURATION, propertyId: 0x0A, dataType: PropertyDataType.CN_UINT8 },
// "UNKNOWN_11": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.NODECONFIGURATION, propertyId: 0x0B, dataType: PropertyDataType.CN_UINT8 },
// "UNKNOWN_12": { node: NodeTypes.VENTILATION_UNIT, unit: UnitTypes.NODECONFIGURATION, propertyId: 0x0C, dataType: PropertyDataType.CN_UINT8 },
},
};