@pst-on-npm/homebridge-enocean
Version:
Integrate EnOcean® devices into Homebridge.
60 lines • 3.38 kB
JavaScript
"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