@palekseii/homebridge-tuya-platform
Version:
Fork version of official Tuya Homebridge plugin. Brings a bunch of bug fix and new device support.
59 lines • 2.84 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const BaseAccessory_1 = __importDefault(require("./BaseAccessory"));
class TemperatureHumiditySensorAccessory extends BaseAccessory_1.default {
configureServices() {
const { temperatureSchemas, humiditySchemas } = this.getDynamicSchemaCodes();
temperatureSchemas.forEach((schema, index) => {
const serviceName = `Temperature Sensor ${index + 1}`;
const serviceSubtype = `temperature_sensor_${index + 1}`;
const service = this.accessory.getServiceById(this.Service.TemperatureSensor, serviceSubtype) ||
this.accessory.addService(this.Service.TemperatureSensor, serviceName, serviceSubtype);
service
.getCharacteristic(this.Characteristic.CurrentTemperature)
.onGet(() => {
var _a;
const status = this.getStatus(schema.code);
if (status) {
const property = (_a = this.getSchema(schema.code)) === null || _a === void 0 ? void 0 : _a.property;
const multiple = Math.pow(10, property.scale || 0);
return Math.min(Math.max(status.value / multiple, -100), 100);
}
return 0; // Default value if no status is found
});
});
humiditySchemas.forEach((schema, index) => {
const serviceName = `Humidity Sensor ${index + 1}`;
const serviceSubtype = `humidity_sensor_${index + 1}`;
const service = this.accessory.getServiceById(this.Service.HumiditySensor, serviceSubtype) ||
this.accessory.addService(this.Service.HumiditySensor, serviceName, serviceSubtype);
service
.getCharacteristic(this.Characteristic.CurrentRelativeHumidity)
.onGet(() => {
const status = this.getStatus(schema.code);
if (status) {
return status.value;
}
return 0; // Default value if no status is found
});
});
}
getDynamicSchemaCodes() {
const temperatureSchemas = [];
const humiditySchemas = [];
this.device.schema.forEach((schema) => {
if (schema.code.includes('ToutCh')) {
temperatureSchemas.push(schema);
}
else if (schema.code.includes('HoutCh')) {
humiditySchemas.push(schema);
}
});
return { temperatureSchemas, humiditySchemas };
}
}
exports.default = TemperatureHumiditySensorAccessory;
//# sourceMappingURL=WeatherStationAccessory.js.map