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
JavaScript
'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;
};