UNPKG

homebridge-miot

Version:

Homebridge plugin for devices supporting the miot protocol

68 lines (55 loc) 2.88 kB
const GenericDevice = require('../modules/generic/GenericDevice.js'); const FanFactory = require('../modules/fan/FanFactory.js'); const HeaterFactory = require('../modules/heater/HeaterFactory.js'); const HumidifierFactory = require('../modules/humidifier/HumidifierFactory.js'); const AirPurifierFactory = require('../modules/airpurifier/AirPurifierFactory.js'); const CeilingFanFactory = require('../modules/ceilingfan/CeilingFanFactory.js'); const OutletFactory = require('../modules/outlet/OutletFactory.js'); const CurtainFactory = require('../modules/curtain/CurtainFactory.js'); const FreshAirSystemFactory = require('../modules/freshairsystem/FreshAirSystemFactory.js'); const RobotCleanerFactory = require('../modules/robotcleaner/RobotCleanerFactory.js'); const DehumidifierFactory = require('../modules/dehumidifier/DehumidifierFactory.js'); const LightFactory = require('../modules/light/LightFactory.js'); const AirConditionerFactory = require('../modules/airconditioner/AirConditionerFactory.js'); const AirerFactory = require('../modules/airer/AirerFactory.js'); const OvenFactory = require('../modules/oven/OvenFactory.js'); const CoffeeMachineFactory = require('../modules/coffeemachine/CoffeeMachineFactory.js'); const CameraFactory = require('../modules/camera/CameraFactory.js'); const BathHeaterFactory = require('../modules/bathheater/BathHeaterFactory.js'); const KettleFactory = require('../modules/kettle/KettleFactory.js'); const ThermostatFactory = require('../modules/thermostat/ThermostatFactory.js'); const SwitchFactory = require('../modules/switch/SwitchFactory.js'); const allFactories = [FanFactory, HeaterFactory, HumidifierFactory, AirPurifierFactory, CeilingFanFactory, OutletFactory, CurtainFactory, FreshAirSystemFactory, RobotCleanerFactory, DehumidifierFactory, LightFactory, AirConditionerFactory, AirerFactory, OvenFactory, CoffeeMachineFactory, CameraFactory, BathHeaterFactory, KettleFactory, ThermostatFactory, SwitchFactory ]; class DeviceFactory { static createDevice(deviceModel, deviceId, name, logger) { let miotDevice = null; if (deviceModel) { logger.debug(`Device Factory - Creating device instance by model: ${deviceModel}!`); var deviceClass = null; // search in all device factories if the device is implemented for (let factory of allFactories) { deviceClass = factory.getDeviceClassForModel(deviceModel); if (deviceClass) { break; } } // generic if (!deviceClass) { deviceClass = GenericDevice; } if (deviceClass) { miotDevice = new deviceClass(deviceModel, deviceId, name, logger); } } if (!miotDevice) { logger.error(`Device Factory - Something went wrong. Could not create a miot device instance!`); } return miotDevice; } } module.exports = DeviceFactory;