UNPKG

homebridge-eveatmo

Version:

Homebridge plugin which adds a Netatmo weatherstation as HomeKit device and tries to act like Elgato Eve Room/Weather

53 lines (42 loc) 1.74 kB
'use strict'; var homebridge; var Characteristic; module.exports = function(pHomebridge) { if (pHomebridge && !homebridge) { homebridge = pHomebridge; Characteristic = homebridge.hap.Characteristic; } class CarbonDioxideService extends homebridge.hap.Service.CarbonDioxideSensor { constructor(accessory) { super(accessory.name + ' Carbon Dioxide'); this.accessory = accessory; this.getCharacteristic(Characteristic.CarbonDioxideDetected) .on('get', this.getCarbonDioxideDetected.bind(this)) .eventEnabled = true; var co2LevelCharacteristic = this.getCharacteristic(Characteristic.CarbonDioxideLevel) || this.addCharacteristic(Characteristic.CarbonDioxideLevel); co2LevelCharacteristic.on('get', this.getCarbonDioxideLevel.bind(this)) .eventEnabled = true; } updateCharacteristics() { this.getCharacteristic(Characteristic.CarbonDioxideDetected) .updateValue(this.transformCO2ToCarbonDioxideDetected()); this.getCharacteristic(Characteristic.CarbonDioxideLevel) .updateValue(this.accessory.co2); } getCarbonDioxideDetected(callback) { this.accessory.refreshData((err,data) => { callback(err, this.transformCO2ToCarbonDioxideDetected()); }); } getCarbonDioxideLevel(callback) { this.accessory.refreshData((err,data) => { callback(err, this.accessory.co2); }); } transformCO2ToCarbonDioxideDetected() { return (this.accessory.co2 >= this.accessory.config.co2_alert_threshold ? Characteristic.CarbonDioxideDetected.CO2_LEVELS_ABNORMAL : Characteristic.CarbonDioxideDetected.CO2_LEVELS_NORMAL); } } return CarbonDioxideService; };