UNPKG

homebridge-better-miot

Version:
67 lines 2.58 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AirPurifierPro = exports.EOperationMode = exports.ESwitchableMode = void 0; const GenericDevice_1 = require("./GenericDevice"); var ESwitchableMode; (function (ESwitchableMode) { ESwitchableMode["ON"] = "on"; ESwitchableMode["OFF"] = "off"; })(ESwitchableMode = exports.ESwitchableMode || (exports.ESwitchableMode = {})); var EOperationMode; (function (EOperationMode) { EOperationMode["AUTO"] = "auto"; EOperationMode["SILENT"] = "silent"; EOperationMode["FAVORITE"] = "favorite"; })(EOperationMode = exports.EOperationMode || (exports.EOperationMode = {})); const DEFAULT_POLLING_INTERVAL_MS = 2.5 * 1000; // 2.5ms class AirPurifierPro extends GenericDevice_1.GenericDevice { constructor(config) { super({ ...config, properties: [ { name: 'power', mapper: (value) => value === ESwitchableMode.ON }, { name: 'mode' }, { name: 'favorite_level', title: 'favoriteLevel' }, { name: 'led', mapper: (value) => value === ESwitchableMode.ON }, { name: 'volume' }, { name: 'aqi', title: 'pm25' }, { name: 'humidity' }, { name: 'temp_dec', title: 'temperature', mapper: (value) => Number(value) / 10 }, { name: 'bright', title: 'illuminance' }, { name: 'filter1_life', title: 'filterLifeRemaining' }, { name: 'motor1_speed', title: 'motorSpeed' }, ], }); this.properties = {}; // TODO: make better poling setInterval(() => { this.fetchProperties(); }, config.pollingIntervalMS || DEFAULT_POLLING_INTERVAL_MS); } setPower(power) { this.call('set_power', [power], ['power', 'mode']); } setMode(mode) { this.call('set_mode', [mode], ['power', 'mode']); } setLed(led) { this.call('set_led', [led], ['led']); } setFavoriteLevel(level) { if (level > 17 || level < 0) { throw Error('Invalid favorite level'); } this.call('set_level_favorite', [level], ['favoriteLevel']); } setVolume(number) { if (number > 100 || number < 0) { throw Error('Invalid favorite level'); } this.call('set_volume', [number], ['volume']); } on(property, cb) { this.subscribe(property, cb); } } exports.AirPurifierPro = AirPurifierPro; //# sourceMappingURL=AirPurifierPro.js.map