@palekseii/homebridge-tuya-platform
Version:
Fork version of official Tuya Homebridge plugin. Brings a bunch of bug fix and new device support.
52 lines • 2.09 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const util_1 = require("../util/util");
const BaseAccessory_1 = __importDefault(require("./BaseAccessory"));
const SCHEMA_CODE = {
CO_STATUS: ['co_status', 'co_state'],
CO_LEVEL: ['co_value'],
};
class CarbonMonoxideSensorAccessory extends BaseAccessory_1.default {
requiredSchema() {
return [SCHEMA_CODE.CO_STATUS];
}
configureServices() {
this.configureCarbonMonoxideDetected();
this.configureCarbonMonoxideLevel();
}
mainService() {
return this.accessory.getService(this.Service.CarbonMonoxideSensor)
|| this.accessory.addService(this.Service.CarbonMonoxideSensor);
}
configureCarbonMonoxideDetected() {
const schema = this.getSchema(...SCHEMA_CODE.CO_STATUS);
if (!schema) {
return;
}
const { CO_LEVELS_ABNORMAL, CO_LEVELS_NORMAL } = this.Characteristic.CarbonMonoxideDetected;
this.mainService().getCharacteristic(this.Characteristic.CarbonMonoxideDetected)
.onGet(() => {
const status = this.getStatus(schema.code);
return (status.value === 'alarm' || status.value === '1') ? CO_LEVELS_ABNORMAL : CO_LEVELS_NORMAL;
});
}
configureCarbonMonoxideLevel() {
const schema = this.getSchema(...SCHEMA_CODE.CO_LEVEL);
if (!schema) {
return;
}
const property = schema.property;
const multiple = Math.pow(10, property ? property.scale : 0);
this.mainService().getCharacteristic(this.Characteristic.CarbonMonoxideLevel)
.onGet(() => {
const status = this.getStatus(schema.code);
const value = (0, util_1.limit)(status.value / multiple, 0, 100);
return value;
});
}
}
exports.default = CarbonMonoxideSensorAccessory;
//# sourceMappingURL=CarbonMonoxideSensorAccessory.js.map