UNPKG

homebridge-vwconnectid

Version:
212 lines 12.9 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.WeConnectIDPlatform = void 0; const settings_1 = require("./settings"); const chargingAccessory_1 = require("./chargingAccessory"); const climatisationAccessory_1 = require("./climatisationAccessory"); const settingsAccessory_1 = require("./settingsAccessory"); const locationMotionSensorAccessory_1 = require("./locationMotionSensorAccessory"); const eventMotionSensorAccessory_1 = require("./eventMotionSensorAccessory"); const destinationSwitchAccessory_1 = require("./destinationSwitchAccessory"); const vwapi = __importStar(require("npm-vwconnectidapi")); class WeConnectIDPlatform { constructor(log, config, api) { this.log = log; this.config = config; this.api = api; this.Service = this.api.hap.Service; this.Characteristic = this.api.hap.Characteristic; this.vwLog = new vwapi.Log(); this.vwConn = new vwapi.VwWeConnect(); this.idStatusEmitter = vwapi.idStatusEmitter; this.idLogEmitter = vwapi.idLogEmitter; this.accessories = []; this.log.info('Finished initializing platform:', this.config.name); this.vwConn.setLogLevel(this.config.options.logLevel || 'ERROR', true); //this.vwConn.setLogLevel() this.idLogEmitter.on('DEBUG', (data) => { this.log.info(data); }); this.idLogEmitter.on('ERROR', (data) => { this.log.error(data); }); this.idLogEmitter.on('INFO', (data) => { this.log.info(data); }); this.idLogEmitter.on('WARN', (data) => { this.log.warn(data); }); this.vwConn.setCredentials(this.config.weconnect.username, this.config.weconnect.password); if (this.config.options.apiPort) { this.vwConn.enableApi(this.config.options.apiPort); } this.api.on('didFinishLaunching', () => { log.info('Executed didFinishLaunching callback'); this.vwConn.getData() .then(() => { this.vwConn.setActiveVin(this.config.weconnect.vin); this.discoverDevices(); }) .catch((error) => { log.error(error); process.exit(1); }); }); } configureAccessory(accessory) { this.log.info('Loading accessory from cache:', accessory.displayName); this.accessories.push(accessory); } discoverDevices() { //Charging accessory const chargingUuid = this.api.hap.uuid.generate('charging'); const existingChargingAccessory = this.accessories.find(accessory => accessory.UUID === chargingUuid); if (existingChargingAccessory) { this.log.info('Restoring existing charging accessory from cache:', existingChargingAccessory.displayName); new chargingAccessory_1.ChargingAccessory(this, existingChargingAccessory); } else { if (this.config.options.chargingAccessory !== undefined) { this.log.info('Adding new charging accessory:', this.config.options.chargingAccessory || 'Charging'); const accessory = new this.api.platformAccessory(this.config.options.chargingAccessory || 'Charging', chargingUuid); new chargingAccessory_1.ChargingAccessory(this, accessory); this.api.registerPlatformAccessories(settings_1.PLUGIN_NAME, settings_1.PLATFORM_NAME, [accessory]); } } const remainingRangeUuid = this.api.hap.uuid.generate('remainingRange'); const existingRemainingRangeAccessory = this.accessories.find(accessory => accessory.UUID === remainingRangeUuid); if (existingRemainingRangeAccessory) { this.log.info('Restoring existing remaining range accessory from cache:', existingRemainingRangeAccessory.displayName); new chargingAccessory_1.RemainingRangeAccessory(this, existingRemainingRangeAccessory); } else { if (this.config.options.remainingRangeAccessory !== undefined) { this.log.info('Adding new remaining range accessory:', this.config.options.remainingRangeAccessory || 'Remaining range'); const accessory = new this.api.platformAccessory(this.config.options.remainingRangeAccessory || 'Remaining range', remainingRangeUuid); new chargingAccessory_1.RemainingRangeAccessory(this, accessory); this.api.registerPlatformAccessories(settings_1.PLUGIN_NAME, settings_1.PLATFORM_NAME, [accessory]); } } // climatisation accessory const climatisationUuid = this.api.hap.uuid.generate('climatisation'); const existingClimatisationAccessory = this.accessories.find(accessory => accessory.UUID === climatisationUuid); if (existingClimatisationAccessory) { this.log.info('Restoring existing climatisation accessory from cache:', existingClimatisationAccessory.displayName); new climatisationAccessory_1.ClimatisationAccessory(this, existingClimatisationAccessory); } else { if (this.config.options.climatisationAccessory !== undefined) { this.log.info('Adding new climatisation accessory:', this.config.options.climatisationAccessory || 'Climatisation'); const accessory = new this.api.platformAccessory(this.config.options.climatisationAccessory || 'Climatisation', climatisationUuid); new climatisationAccessory_1.ClimatisationAccessory(this, accessory); this.api.registerPlatformAccessories(settings_1.PLUGIN_NAME, settings_1.PLATFORM_NAME, [accessory]); } } // location based stuff if (typeof this.config.options.destinations !== 'undefined') { if (typeof this.config.options.locationMotionSensors !== 'undefined') { this.log.error('You have both \'destinations\' and \'locationMotionSensors\' blocks in your config. The latter is not processed, please remove.'); } for (const device of this.config.options.destinations) { // destination switches if (typeof device.address !== 'undefined') { const uuid = this.api.hap.uuid.generate(device.name + '-dest'); const existingAccessory = this.accessories.find(accessory => accessory.UUID === uuid); if (existingAccessory) { this.log.info('Restoring existing accessory from cache:', existingAccessory.displayName); new destinationSwitchAccessory_1.DestinationSwitchAccessory(this, existingAccessory); } else { this.log.info('Adding new accessory:', device.name); const accessory = new this.api.platformAccessory(device.name, uuid); accessory.context.device = device; new destinationSwitchAccessory_1.DestinationSwitchAccessory(this, accessory); this.api.registerPlatformAccessories(settings_1.PLUGIN_NAME, settings_1.PLATFORM_NAME, [accessory]); } } // destination motion sensors if (typeof device.notificationRadius !== 'undefined') { const uuid = this.api.hap.uuid.generate(device.name); const existingAccessory = this.accessories.find(accessory => accessory.UUID === uuid); if (existingAccessory) { this.log.info('Restoring existing accessory from cache:', existingAccessory.displayName); new locationMotionSensorAccessory_1.LocationMotionSensorAccessory(this, existingAccessory); } else { this.log.info('Adding new accessory:', device.name); const accessory = new this.api.platformAccessory(device.name, uuid); accessory.context.device = device; new locationMotionSensorAccessory_1.LocationMotionSensorAccessory(this, accessory); this.api.registerPlatformAccessories(settings_1.PLUGIN_NAME, settings_1.PLATFORM_NAME, [accessory]); } } } } else if (typeof this.config.options.locationMotionSensors !== 'undefined') { this.log.error('Location aware functionality has changed. Please update your config.json. You\'re missing out on a cool new feature! See https://github.com/adhyh/homebridge-vwconnectid#upgrading-from-105-to-110 for details.'); for (const device of this.config.options.locationMotionSensors) { const uuid = this.api.hap.uuid.generate(device.name); const existingAccessory = this.accessories.find(accessory => accessory.UUID === uuid); if (existingAccessory) { this.log.info('Restoring existing location motion sensor accessory from cache:', existingAccessory.displayName); new locationMotionSensorAccessory_1.LocationMotionSensorAccessory(this, existingAccessory); } else { this.log.info('Adding new location motion sensor accessory:', device.name); const accessory = new this.api.platformAccessory(device.name, uuid); accessory.context.device = device; new locationMotionSensorAccessory_1.LocationMotionSensorAccessory(this, accessory); this.api.registerPlatformAccessories(settings_1.PLUGIN_NAME, settings_1.PLATFORM_NAME, [accessory]); } } } for (const device of this.config.options.eventMotionSensors) { const uuid = this.api.hap.uuid.generate(device.name); const existingAccessory = this.accessories.find(accessory => accessory.UUID === uuid); if (existingAccessory) { this.log.info('Restoring existing event motions sensor accessory from cache:', existingAccessory.displayName); new eventMotionSensorAccessory_1.EventMotionSensorAccessory(this, existingAccessory); } else { this.log.info('Adding new event motion sensor accessory:', device.name); const accessory = new this.api.platformAccessory(device.name, uuid); accessory.context.device = device; new eventMotionSensorAccessory_1.EventMotionSensorAccessory(this, accessory); this.api.registerPlatformAccessories(settings_1.PLUGIN_NAME, settings_1.PLATFORM_NAME, [accessory]); } } for (const device of this.config.options.settingSwitches) { const uuid = this.api.hap.uuid.generate(device.name); const existingAccessory = this.accessories.find(accessory => accessory.UUID === uuid); if (existingAccessory) { this.log.info('Restoring existing setting switch accessory from cache:', existingAccessory.displayName); new settingsAccessory_1.SettingAccessory(this, existingAccessory); } else { this.log.info('Adding new setting switch accessory:', device.name); const accessory = new this.api.platformAccessory(device.name, uuid); accessory.context.device = device; new settingsAccessory_1.SettingAccessory(this, accessory); this.api.registerPlatformAccessories(settings_1.PLUGIN_NAME, settings_1.PLATFORM_NAME, [accessory]); } } } } exports.WeConnectIDPlatform = WeConnectIDPlatform; //# sourceMappingURL=platform.js.map