@palekseii/homebridge-tuya-platform
Version:
Fork version of official Tuya Homebridge plugin. Brings a bunch of bug fix and new device support.
75 lines • 2.94 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.configureAirQuality = void 0;
const TuyaDevice_1 = require("../../device/TuyaDevice");
const util_1 = require("../../util/util");
function configureAirQuality(accessory, service, airQualitySchema, pm2_5Schema, pm10Schema, vocSchema) {
if (!airQualitySchema) {
return;
}
if (!service) {
service = accessory.accessory.getService(accessory.Service.AirQualitySensor)
|| accessory.accessory.addService(accessory.Service.AirQualitySensor);
}
const property = airQualitySchema.property;
const multiple = Math.pow(10, property ? property.scale : 0);
const { UNKNOWN, EXCELLENT, GOOD, FAIR, INFERIOR, POOR } = accessory.Characteristic.AirQuality;
service.getCharacteristic(accessory.Characteristic.AirQuality)
.onGet(() => {
const status = accessory.getStatus(airQualitySchema.code);
if (airQualitySchema.type === TuyaDevice_1.TuyaDeviceSchemaType.Integer) {
const value = (0, util_1.limit)(status.value / multiple, 0, 1000);
if (value <= 10) {
return EXCELLENT;
}
else if (value <= 50) {
return GOOD;
}
else if (value <= 100) {
return FAIR;
}
else if (value <= 200) {
return INFERIOR;
}
else {
return POOR;
}
}
else if (airQualitySchema.type === TuyaDevice_1.TuyaDeviceSchemaType.Enum) {
if (status.value === 'great') {
return EXCELLENT;
}
else if (status.value === 'good') {
return GOOD;
}
else if (status.value === 'mild') {
return FAIR;
}
else if (status.value === 'medium') {
return INFERIOR;
}
else if (status.value === 'severe') {
return POOR;
}
}
return UNKNOWN;
});
pm2_5Schema && configureDensity(accessory, service, accessory.Characteristic.PM2_5Density, pm2_5Schema);
pm10Schema && configureDensity(accessory, service, accessory.Characteristic.PM10Density, pm10Schema);
vocSchema && configureDensity(accessory, service, accessory.Characteristic.VOCDensity, vocSchema);
}
exports.configureAirQuality = configureAirQuality;
function configureDensity(accessory, service, characteristic, schema) {
if (!schema) {
return;
}
const property = schema.property;
const multiple = Math.pow(10, property ? property.scale : 0);
service.getCharacteristic(characteristic)
.onGet(() => {
const status = accessory.getStatus(schema.code);
const value = (0, util_1.limit)(status.value / multiple, 0, 1000);
return value;
});
}
//# sourceMappingURL=AirQuality.js.map