iobroker.gree-hvac
Version:
Adapter for Gree and C&H conditioners
171 lines (170 loc) • 8.65 kB
JavaScript
"use strict";
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var properties_map_exports = {};
__export(properties_map_exports, {
PropertyMapItem: () => PropertyMapItem,
default: () => properties_map_default
});
module.exports = __toCommonJS(properties_map_exports);
class PropertyMapItem {
name;
hvacName;
definition;
fromConverter;
toConverter;
constructor(name, hvacName, definition, fromConverter = null, toConverter = null) {
this.name = name;
this.hvacName = hvacName;
this.definition = definition;
this.fromConverter = fromConverter;
this.toConverter = toConverter;
}
isReadOnly() {
const definition = JSON.parse(this.definition);
return !definition.common.write;
}
}
function temperatureConverter(values, value) {
const tempUnit = values.TemUn;
if (tempUnit === 0) {
return value;
}
let fahrenheitValue = value * 1.8 + 32;
const tempRec = values.TemRec;
if (tempRec === 0) {
fahrenheitValue = Math.floor(fahrenheitValue);
} else {
fahrenheitValue = Math.ceil(fahrenheitValue);
}
return fahrenheitValue;
}
const propertiesMap = [
new PropertyMapItem(
"power",
"Pow",
'{"type": "state", "common": { "name": "Power", "desc": "Power state of conditioner", "type": "number", "role": "switch", "read": true, "write": true, "min": 0, "max": 1,"states": {"0": "OFF", "1": "ON"} }, "native": {} }'
),
new PropertyMapItem(
"mode",
"Mod",
'{"type": "state", "common": { "name": "Conditioner mode ", "desc": "Conditioner mode(0: Auto, 1: Cooling, 4: Heating, 3: Ventilation, 2: Drying) ", "type": "number", "role": "level.mode.airconditioner", "read": true, "write": true, "min": 0, "max": 4, "states": {"0": "Auto", "1": "Cooling", "4": "Heating", "3": "Ventilation", "2": "Drying"}}, "native": {} }'
),
new PropertyMapItem(
"temperature-unit",
"TemUn",
'{"type": "state", "common": { "name": "Temperature unit","desc": "Temperature unit: 0 - \xB0C, 1 - \xB0F","type": "number", "role": "state", "read": true, "write": true, "min": 0, "max": 1, "states": {"0": "\xB0C", "1": "\xB0F"} }, "native": {} }'
),
new PropertyMapItem(
"target-temperature",
"SetTem",
'{"type": "state", "common": { "name": "Temperature","type": "number", "role": "value.temperature", "read": true, "write": true, "min": 16, "max": 86}, "native": {} }',
temperatureConverter,
(payload) => {
if (payload.TemUn === 1) {
const celsius = Math.round((payload.SetTem - 32) * 5 / 9);
const tempRec = (payload.SetTem - 32) * 5 / 9 - celsius >= 0 ? 1 : 0;
payload.TemRec = tempRec;
payload.SetTem = celsius;
}
return payload;
}
),
new PropertyMapItem(
"temp-rec",
"TemRec",
'{"type": "state", "common": { "name": "TempRec", "desc": "This bit is used to distinguish between two Fahrenheit values", "type": "number", "role": "state", "read": true, "write": true, "min": 0, "max": 1}, "native": {} }'
),
new PropertyMapItem(
"fan-speed",
"WdSpd",
'{"type": "state", "common": { "name": "Fan speed", "desc": "Fan speed, 0 - Auto, 1, 2, 3, 4","type": "number", "role": "level.mode.fan", "read": true, "write": true, "min": 0, "max": 4, "states": {"0": "Auto", "1": "1", "2": "2", "3": "3", "4": "4"} }, "native": {"valuesMap": [{"value": 0, "targetValue": 0},{"value": 1, "targetValue": 1},{"value": 2, "targetValue": 3},{"value": 3, "targetValue": 5}]} }'
),
new PropertyMapItem(
"air-mode",
"Air",
'{"type": "state", "common": { "name": "Fresh air valve state", "desc": "Controls the state of the fresh air valve (not available on all units) On(1)/Off(0)","type": "number", "role": "switch", "read": true, "write": true, "min": 0, "max": 1, "states": {"0": "OFF", "1": "ON"} }, "native": {} }'
),
new PropertyMapItem(
"x-fan-mode",
"Blo",
'{"type": "state", "common": { "name": "X-Fan mode", "desc": "X-Fan mode, this function keeps the fan running for a while after shutting down. On(1)/Off(0)","type": "number", "role": "switch", "read": true, "write": true, "min": 0, "max": 1, "states": {"0": "OFF", "1": "ON"} }, "native": {} }'
),
new PropertyMapItem(
"health-mode",
"Health",
'{"type": "state", "common": { "name": "Health (Cold plasma) mode", "desc": "Health (Cold plasma) mode, only for devices equipped with anion generator. On(1)/Off(0)","type": "number", "role": "switch", "read": true, "write": true, "min": 0, "max": 1, "states": {"0": "OFF", "1": "ON"} }, "native": {} }'
),
new PropertyMapItem(
"sleep-mode",
"SwhSlp",
'{"type": "state", "common": { "name": "Sleep mode", "desc": "Sleep mode, which gradually changes the temperature. On(1)/Off(0)","type": "number", "role": "switch", "read": true, "write": true, "min": 0, "max": 1, "states": {"0": "OFF", "1": "ON"} }, "native": {} }'
),
new PropertyMapItem(
"display-state",
"Lig",
'{"type": "state", "common": { "name": "Display state", "desc": "Display On(1)/Off(0)","type": "number", "role": "switch", "read": true, "write": true, "min": 0, "max": 1, "states": {"0": "OFF", "1": "ON"} }, "native": {} }'
),
new PropertyMapItem(
"swing-left-right",
"SwingLfRig",
'{"type": "state", "common": { "name": "Swing left/right", "desc": "Swing left/right On(1)/Off(0), Fixed position(2-6) ","type": "number", "role": "level.mode.swing", "read": true, "write": true, "min": 0, "max": 6, "states": {"0": "OFF", "1": "ON", "2": "2", "3": "3", "4": "4", "5": "5", "6": "6"} }, "native": {} }'
),
new PropertyMapItem(
"swing-up-down",
"SwUpDn",
'{"type": "state", "common": { "name": "Swing up/down", "desc": "Swing up/down On(1)/Off(0), Fixed position(2-6) ","type": "number", "role": "level.mode.swing", "read": true, "write": true, "min": 0, "max": 6, "states": {"0": "OFF", "1": "ON", "2": "2", "3": "3", "4": "4", "5": "5", "6": "6"} }, "native": {} }'
),
new PropertyMapItem(
"quiet",
"Quiet",
'{"type": "state", "common": { "name": "Quiet mode", "desc": "Quiet mode On(1/2)/Off(0)","type": "number", "role": "switch", "read": true, "write": true, "min": 0, "max": 2, "states": {"0": "OFF", "1": "ON", "2": "ON"} }, "native": {} }'
),
new PropertyMapItem(
"turbo",
"Tur",
'{"type": "state", "common": { "name": "Turbo", "desc": "Turbo On(1)/Off(0)","type": "number", "role": "switch", "read": true, "write": true, "min": 0, "max": 1, "states": {"0": "OFF", "1": "ON"} }, "native": {} }'
),
new PropertyMapItem(
"maintain-room-temperature",
"StHt",
'{"type": "state", "common": { "name": "Maintain the room temperature", "desc": "Maintain the room temperature steadily at 8\xB0C and prevent the room from freezing by heating operation. On(1)/Off(0)","type": "number", "role": "switch", "read": true, "write": true, "min": 0, "max": 1, "states": {"0": "OFF", "1": "ON"} }, "native": {} }'
),
new PropertyMapItem(
"room-temperature",
"TemSen",
'{"type": "state", "common": { "name": "Room temperature", "type": "number", "role": "value.temperature", "read": true }, "native": {} }',
temperatureConverter
),
new PropertyMapItem(
"energy-saving",
"SvSt",
'{"type": "state", "common": { "name": "Energy saving mode", "desc": "Energy saving mode. On(1)/Off(0)","type": "number", "role": "switch", "read": true, "write": true, "min": 0, "max": 1, "states": {"0": "OFF", "1": "ON"} }, "native": {} }'
),
new PropertyMapItem(
"date-time",
"time",
'{"type": "state", "common": { "name": "Device date and time", "desc": "Device date and time, format YYYY-MM-DD hh:mm","type": "string", "role": "date", "read": true, "write": true }, "native": {} }'
)
];
var properties_map_default = propertiesMap;
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
PropertyMapItem
});
//# sourceMappingURL=properties_map.js.map