UNPKG

homebridge-virtual-accessories

Version:
67 lines 2.75 kB
import { MeasurementSensor } from './measurementSensor.js'; import { InvalidSensorValueType, SensorValueUpdateNotAllowed } from '../errors.js'; import { TemperatureUnit } from '../configuration/schema.js'; /** * TemperatureSensor - Sensor implementation */ export class TemperatureSensor extends MeasurementSensor { static ACCESSORY_TYPE_NAME = 'TemperatureSensor'; static DEFAULT_TEMPERATURE_CELSIUS = 20; constructor(platform, accessory, accessoryConfiguration) { super(platform, accessory, accessoryConfiguration); } getService() { return this.platform.Service.TemperatureSensor; } getMeasurementCharacteristic() { return this.platform.Characteristic.CurrentTemperature; } getDefaultValue() { return TemperatureSensor.DEFAULT_TEMPERATURE_CELSIUS; } getAccessoryTypeName() { return TemperatureSensor.ACCESSORY_TYPE_NAME; } getDegreeUnits() { let units; switch (this.states.SensorUnits) { case undefined: { units = 'º'; break; } case TemperatureUnit.Celsius: { units = 'ºC'; break; } case TemperatureUnit.Fahrenheit: { units = 'ºF'; break; } default: { units = 'º'; } } return units; } toCelsius(temperature) { const temperatureCelsius = (this.states.SensorUnits === TemperatureUnit.Celsius) ? temperature : (temperature - 32) * 5 / 9; return Math.round(temperatureCelsius * 10) / 10; } // Updatable Sensor interface updateMeasurementSensor(value, accessoryId) { this.log.debug(`[${this.accessoryConfiguration.accessoryName}] Request update humidity sensor to ${value}${this.getDegreeUnits()}`); if (accessoryId !== this.accessoryConfiguration.accessoryID) { this.log.error(`[${this.accessoryConfiguration.accessoryName}] Accessory Id ${accessoryId} is not valid for this accessory`); throw new SensorValueUpdateNotAllowed(`Invalid accessory id: ${accessoryId}`); } else if (typeof value !== 'number') { this.log.error(`[${this.accessoryConfiguration.accessoryName}] Value ${value} is not valid for Heater/Cooler sensor`); throw new InvalidSensorValueType(`Invalid sensor value: ${value}`); } else { this.log.debug(`[${this.accessoryConfiguration.accessoryName}] Updating temperature sensor to ${value}${this.getDegreeUnits()}`); this.states.SensorValue = this.toCelsius(value); } } } //# sourceMappingURL=virtualSensorTemperature.js.map