UNPKG

@pst-on-npm/homebridge-enocean

Version:
60 lines • 3.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AccessoryFactory = void 0; const StatelessProgrammableSwitchAccessory_1 = require("./StatelessProgrammableSwitchAccessory"); const TemperatureSensorAccessory_1 = require("./TemperatureSensorAccessory"); const OutletAccessory_1 = require("./OutletAccessory"); const MotionSensorAccessory_1 = require("./MotionSensorAccessory"); const WindowCoveringAccessory_1 = require("./WindowCoveringAccessory"); const ContactSensorAccessory_1 = require("./ContactSensorAccessory"); const LeakSensorAccessory_1 = require("./LeakSensorAccessory"); const LightbulbAccessory_1 = require("./LightbulbAccessory"); class AccessoryFactory { classMap = new Map(); constructor() { this.registerClass('F6', StatelessProgrammableSwitchAccessory_1.StatelessProgrammableSwitchAccessory); this.registerClass('A5-02', TemperatureSensorAccessory_1.TemperatureSensorAccessory); this.registerClass('A5-04', TemperatureSensorAccessory_1.TemperatureSensorAccessory); this.registerClass('A5-08', MotionSensorAccessory_1.MotionSensorAccessory); this.registerClass('A5-10', LeakSensorAccessory_1.LeakSensorAccessory); this.registerClass('A5-14', ContactSensorAccessory_1.ContactSensorAccessory); this.registerClass('A5-38-08', OutletAccessory_1.OutletAccessory); this.registerClass('A5-3F-7F', WindowCoveringAccessory_1.WindowCoveringAccessory); this.registerClass('D2-05-00', WindowCoveringAccessory_1.WindowCoveringAccessory); this.registerClass('contactSensor', ContactSensorAccessory_1.ContactSensorAccessory); this.registerClass('leakSensor', LeakSensorAccessory_1.LeakSensorAccessory); this.registerClass('lightbulb', LightbulbAccessory_1.LightbulbAccessory); this.registerClass('motionSensor', MotionSensorAccessory_1.MotionSensorAccessory); this.registerClass('outlet', OutletAccessory_1.OutletAccessory); this.registerClass('statelessProgrammableSwitch', StatelessProgrammableSwitchAccessory_1.StatelessProgrammableSwitchAccessory); this.registerClass('temperatureSensor', TemperatureSensorAccessory_1.TemperatureSensorAccessory); this.registerClass('windowCovering', WindowCoveringAccessory_1.WindowCoveringAccessory); } registerClass(id, classRef) { this.classMap.set(id, classRef); } newAccessory(eep, platform, accessory, config) { let classRef = undefined; if (config.accessoryKind !== undefined && config.accessoryKind.toLowerCase() !== 'auto') { classRef = this.classMap.get(config.accessoryKind); if (classRef === undefined) { throw new Error(`New accessory: ${config.accessoryKind}: Accessory kind not supported`); } } else { classRef = this.classMap.get(eep); if (!classRef) { classRef = this.classMap.get(eep.substring(0, 5)); } if (!classRef) { classRef = this.classMap.get(eep.substring(0, 2)); } } if (!classRef) { throw new Error(`New accessory: ${eep}: EEP not supported`); } return new classRef(platform, accessory, config); } } exports.AccessoryFactory = AccessoryFactory; //# sourceMappingURL=AccessoryFactory.js.map