@palekseii/homebridge-tuya-platform
Version:
Fork version of official Tuya Homebridge plugin. Brings a bunch of bug fix and new device support.
233 lines • 10.9 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const BaseAccessory_1 = __importDefault(require("./BaseAccessory"));
const LightAccessory_1 = __importDefault(require("./LightAccessory"));
const DimmerAccessory_1 = __importDefault(require("./DimmerAccessory"));
const OutletAccessory_1 = __importDefault(require("./OutletAccessory"));
const SwitchAccessory_1 = __importDefault(require("./SwitchAccessory"));
const WirelessSwitchAccessory_1 = __importDefault(require("./WirelessSwitchAccessory"));
const SceneSwitchAccessory_1 = __importDefault(require("./SceneSwitchAccessory"));
const FanAccessory_1 = __importDefault(require("./FanAccessory"));
const GarageDoorAccessory_1 = __importDefault(require("./GarageDoorAccessory"));
const WindowAccessory_1 = __importDefault(require("./WindowAccessory"));
const WindowCoveringAccessory_1 = __importDefault(require("./WindowCoveringAccessory"));
const LockAccessory_1 = __importDefault(require("./LockAccessory"));
const ThermostatAccessory_1 = __importDefault(require("./ThermostatAccessory"));
const HeaterAccessory_1 = __importDefault(require("./HeaterAccessory"));
const ValveAccessory_1 = __importDefault(require("./ValveAccessory"));
const ContactSensorAccessory_1 = __importDefault(require("./ContactSensorAccessory"));
const LeakSensorAccessory_1 = __importDefault(require("./LeakSensorAccessory"));
const CarbonMonoxideSensorAccessory_1 = __importDefault(require("./CarbonMonoxideSensorAccessory"));
const CarbonDioxideSensorAccessory_1 = __importDefault(require("./CarbonDioxideSensorAccessory"));
const SmokeSensorAccessory_1 = __importDefault(require("./SmokeSensorAccessory"));
const TemperatureHumiditySensorAccessory_1 = __importDefault(require("./TemperatureHumiditySensorAccessory"));
const LightSensorAccessory_1 = __importDefault(require("./LightSensorAccessory"));
const MotionSensorAccessory_1 = __importDefault(require("./MotionSensorAccessory"));
const AirQualitySensorAccessory_1 = __importDefault(require("./AirQualitySensorAccessory"));
const HumanPresenceSensorAccessory_1 = __importDefault(require("./HumanPresenceSensorAccessory"));
const HumidifierAccessory_1 = __importDefault(require("./HumidifierAccessory"));
const DehumidifierAccessory_1 = __importDefault(require("./DehumidifierAccessory"));
const DiffuserAccessory_1 = __importDefault(require("./DiffuserAccessory"));
const AirPurifierAccessory_1 = __importDefault(require("./AirPurifierAccessory"));
const ExtractionHoodAccessory_1 = __importDefault(require("./ExtractionHoodAccessory"));
const CameraAccessory_1 = __importDefault(require("./CameraAccessory"));
const SceneAccessory_1 = __importDefault(require("./SceneAccessory"));
const AirConditionerAccessory_1 = __importDefault(require("./AirConditionerAccessory"));
const IRControlHubAccessory_1 = __importDefault(require("./IRControlHubAccessory"));
const IRGenericAccessory_1 = __importDefault(require("./IRGenericAccessory"));
const IRAirConditionerAccessory_1 = __importDefault(require("./IRAirConditionerAccessory"));
const SecuritySystemAccessory_1 = __importDefault(require("./SecuritySystemAccessory"));
const VibrationSensorAccessory_1 = __importDefault(require("./VibrationSensorAccessory"));
const WeatherStationAccessory_1 = __importDefault(require("./WeatherStationAccessory"));
const DoorbellAccessory_1 = __importDefault(require("./DoorbellAccessory"));
const PetFeederAccessory_1 = __importDefault(require("./PetFeederAccessory"));
const WhiteNoiseLightAccessory_1 = __importDefault(require("./WhiteNoiseLightAccessory"));
class AccessoryFactory {
static createAccessory(platform, accessory, device) {
var _a;
let handler;
switch (device.category) {
// Lighting
case 'dj':
case 'dsd':
case 'xdd':
case 'fwd':
case 'dc':
case 'dd':
case 'gyd':
case 'tyndj':
case 'sxd':
handler = new LightAccessory_1.default(platform, accessory);
break;
case 'tgq':
case 'tgkg':
handler = new DimmerAccessory_1.default(platform, accessory);
break;
// Electrical Products
case 'dlq':
case 'kg':
case 'tdq':
case 'qjdcz':
case 'szjqr':
handler = new SwitchAccessory_1.default(platform, accessory);
break;
case 'cz':
case 'pc':
case 'wkcz':
handler = new OutletAccessory_1.default(platform, accessory);
break;
case 'wxkg':
handler = new WirelessSwitchAccessory_1.default(platform, accessory);
break;
case 'cjkg':
handler = new SceneSwitchAccessory_1.default(platform, accessory);
break;
case 'bzyd':
handler = new WhiteNoiseLightAccessory_1.default(platform, accessory);
break;
// Large Home Appliances
case 'kt':
case 'ktkzq':
handler = new AirConditionerAccessory_1.default(platform, accessory);
break;
// Small Home Appliances
case 'qn':
handler = new HeaterAccessory_1.default(platform, accessory);
break;
case 'kj':
handler = new AirPurifierAccessory_1.default(platform, accessory);
break;
case 'xxj':
handler = new DiffuserAccessory_1.default(platform, accessory);
break;
case 'ckmkzq':
handler = new GarageDoorAccessory_1.default(platform, accessory);
break;
case 'cl':
case 'clkg':
handler = new WindowCoveringAccessory_1.default(platform, accessory);
break;
case 'cwwsq':
handler = new PetFeederAccessory_1.default(platform, accessory);
break;
case 'mc':
handler = new WindowAccessory_1.default(platform, accessory);
break;
case 'wk':
case 'wkf':
handler = new ThermostatAccessory_1.default(platform, accessory);
break;
case 'ggq':
case 'sfkzq':
handler = new ValveAccessory_1.default(platform, accessory);
break;
case 'jsq':
handler = new HumidifierAccessory_1.default(platform, accessory);
break;
case 'cs':
handler = new DehumidifierAccessory_1.default(platform, accessory);
break;
case 'fs':
case 'fsd':
case 'fskg':
handler = new FanAccessory_1.default(platform, accessory);
break;
case 'yyj':
handler = new ExtractionHoodAccessory_1.default(platform, accessory);
break;
// Security & Video Surveillance
case 'sp':
handler = new CameraAccessory_1.default(platform, accessory);
break;
case 'ywbj':
handler = new SmokeSensorAccessory_1.default(platform, accessory);
break;
case 'mcs':
handler = new ContactSensorAccessory_1.default(platform, accessory);
break;
case 'zd':
handler = new VibrationSensorAccessory_1.default(platform, accessory);
break;
case 'rqbj':
case 'jwbj':
case 'sj':
handler = new LeakSensorAccessory_1.default(platform, accessory);
break;
case 'cobj':
case 'cocgq':
handler = new CarbonMonoxideSensorAccessory_1.default(platform, accessory);
break;
case 'co2bj':
case 'co2cgq':
handler = new CarbonDioxideSensorAccessory_1.default(platform, accessory);
break;
case 'wsdcg':
handler = new TemperatureHumiditySensorAccessory_1.default(platform, accessory);
break;
case 'ldcg':
handler = new LightSensorAccessory_1.default(platform, accessory);
break;
case 'pir':
handler = new MotionSensorAccessory_1.default(platform, accessory);
break;
case 'pm25':
case 'pm2.5':
case 'pm25cgq':
case 'hjjcy':
handler = new AirQualitySensorAccessory_1.default(platform, accessory);
break;
case 'hps':
handler = new HumanPresenceSensorAccessory_1.default(platform, accessory);
break;
case 'ms':
case 'jtmspro':
handler = new LockAccessory_1.default(platform, accessory);
break;
case 'mal':
handler = new SecuritySystemAccessory_1.default(platform, accessory);
break;
case 'wxml':
handler = new DoorbellAccessory_1.default(platform, accessory);
break;
case 'qxj':
handler = new WeatherStationAccessory_1.default(platform, accessory);
break;
// Other
case 'scene':
handler = new SceneAccessory_1.default(platform, accessory);
break;
}
// IR Control Hub
if (device.isIRControlHub()) {
handler = new IRControlHubAccessory_1.default(platform, accessory);
}
// IR Remote Control
if (device.isIRRemoteControl()) {
switch ((_a = device.remote_keys) === null || _a === void 0 ? void 0 : _a.category_id) {
case 5: // AC
handler = new IRAirConditionerAccessory_1.default(platform, accessory);
break;
default:
handler = new IRGenericAccessory_1.default(platform, accessory);
break;
}
}
if (handler && !handler.checkRequirements()) {
handler = undefined;
}
if (!handler) {
platform.log.warn(`Unsupported device: ${device.name}.`);
handler = new BaseAccessory_1.default(platform, accessory);
}
handler.configureServices();
handler.configureStatusActive();
handler.updateAllValues();
handler.intialized = true;
return handler;
}
}
exports.default = AccessoryFactory;
//# sourceMappingURL=AccessoryFactory.js.map