homebridge-vesync-v2
Version:
A Homebridge plugin for controlling VeSync smart devices including outlets, air purifiers, and humidifiers
34 lines (31 loc) • 1.72 kB
JavaScript
;
const deviceTypes = require('./devices/deviceTypes');
const BaseDevice = require('./devices/BaseDevice');
const FanDevice = require('./devices/FanDevice');
const AirPurifierDevice = require('./devices/AirPurifierDevice');
const HumidifierDevice = require('./devices/HumidifierDevice');
const LightbulbDevice = require('./devices/LightbulbDevice');
const OutletDevice = require('./devices/OutletDevice');
module.exports = {
createDevice(accessory, client, log, debug, Service, Characteristic) {
const type = accessory.context.type;
log("[1] DeviceFactory: type=" + type);
log("[2] DeviceFactory: context=" + JSON.stringify({name: accessory?.context?.name, id: accessory?.context?.id}));
if (deviceTypes.isDeviceType(type, 'fan')) {
log("[3] Creating: Fan");
return new FanDevice(accessory, client, log, debug, Service, Characteristic);
} else if (deviceTypes.isDeviceType(type, 'airPurifier')) {
log("[3] Creating: AirPurifier");
return new AirPurifierDevice(accessory, client, log, debug, Service, Characteristic);
} else if (deviceTypes.isDeviceType(type, 'humidifier')) {
log("[3] Creating: Humidifier");
return new HumidifierDevice(accessory, client, log, debug, Service, Characteristic);
} else if (deviceTypes.isDeviceType(type, 'lightbulb')) {
log("[3] Creating: Lightbulb");
return new LightbulbDevice(accessory, client, log, debug, Service, Characteristic);
} else {
log("[3] Creating: Outlet (default)");
return new OutletDevice(accessory, client, log, debug, Service, Characteristic);
}
}
};