{"version":3,"sources":["jsdelivr-header.js","/npm/homebridge-arlo@2.1.0/index.js"],"names":[],"mappings":"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","file":"/npm/homebridge-arlo@2.1.0/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.37.0.\n * Original file: /npm/homebridge-arlo@2.1.0/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict';\n\nconst Arlo = require('node-arlo');\nconst debug = require('debug')('Homebridge-Arlo');\nconst ArloCameraSource = require('./ArloCameraSource.js');\n\nconst DEFAULT_SUBSCRIBE_TIME = 60000;\n\nlet Accessory, PlatformAccessory, Characteristic, Service, StreamController, UUIDGen, HAP;\n\nmodule.exports = function (homebridge) {\n    Accessory = homebridge.hap.Accessory;\n    PlatformAccessory = homebridge.platformAccessory;\n    Characteristic = homebridge.hap.Characteristic;\n    Service = homebridge.hap.Service;\n    StreamController = homebridge.hap.StreamController;\n    UUIDGen = homebridge.hap.uuid;\n    HAP = homebridge.hap;\n\n    homebridge.registerPlatform('homebridge-arlo', 'Arlo', ArloPlatform, true);\n};\n\nclass ArloPlatform {\n    constructor(log, config, api) {\n        if (!config) {\n            log.warn(\"Ignoring Arlo Platform setup because it is not configured\");\n            this.disabled = true;\n            return;\n        }\n\n        this.config = config;\n        this.api = api;\n        if (!api || api.version < 2.1) { throw new Error('Unexpected API version (less than 2.1)') }\n        this.accessories = {};\n        this.log = log;\n\n        this.config = this.config || {};\n\n        let include_cameras = true\n        if (this.config.include_cameras === undefined) {\n            this.config.include_cameras = true\n        }\n\n        this.setupListeners();\n    }\n\n    addAccessory(device) {\n        let deviceName  = device.getName(),\n            deviceModel = device.getModel(),\n            deviceType  = device.getType();\n\n        if (deviceType === Arlo.BASESTATION) {\n            this.log(\"Found: Base Station - %s [%s]\", deviceName, device.id);\n\n            let accessory = new PlatformAccessory(deviceName, UUIDGen.generate(device.id));\n\n            accessory.getService(Service.AccessoryInformation)\n                .setCharacteristic(Characteristic.Manufacturer, \"Arlo\");\n\n            accessory.addService(Service.SecuritySystem, deviceName);\n\n            this.accessories[accessory.UUID] = new ArloBaseStationAccessory(this.log, this.config, accessory, device);\n            this.api.registerPlatformAccessories(\"homebridge-arlo\", \"Arlo\", [accessory]);\n        }\n        else if (deviceType === Arlo.CAMERA && this.config.include_cameras === true) {\n            this.log(\"Found: Camera - %s [%s]\", deviceName, device.id);\n\n            let accessory = new PlatformAccessory(deviceName, UUIDGen.generate(device.id), Accessory.Categories.CAMERA);\n\n            \n            let service = accessory.getService(Service.AccessoryInformation);\n\n            service.setCharacteristic(Characteristic.Manufacturer, \"Arlo\")\n                   .setCharacteristic(Characteristic.Model, deviceModel);\n\n            service.getCharacteristic(Characteristic.FirmwareRevision);\n            service.getCharacteristic(Characteristic.HardwareRevision);\n\n            accessory.addService(Service.BatteryService, deviceName);\n            accessory.addService(Service.MotionSensor, deviceName);\n\n            service = accessory.addService(Service.CameraControl, deviceName);\n            service = accessory.addService(Service.Microphone, deviceName);\n\n            service.addCharacteristic(Characteristic.NightVision);\n            service.addCharacteristic(Characteristic.ImageMirroring);\n            service.addCharacteristic(Characteristic.ImageRotation)\n                    .setProps({\n                        maxValue: 180,\n                        minValue: 0,\n                        minStep: 180\n                    });\n\n            accessory.configureCameraSource(new ArloCameraSource(this.log, accessory, device, HAP, this.config.streaming));\n\n            this.accessories[accessory.UUID] = new ArloCameraAccessory(this.log, accessory, device);\n            this.api.publishCameraAccessories(\"homebridge-arlo\", [accessory]);\n        }\n        else if (deviceType === Arlo.Q && this.config.include_cameras === true) {\n            this.log(\"Found: Camera - %s [%s]\", device.id, device.id);\n\n            let accessory = new PlatformAccessory(device.id, UUIDGen.generate(device.id), Accessory.Categories.CAMERA);\n\n            let service = accessory.getService(Service.AccessoryInformation);\n\n            service.setCharacteristic(Characteristic.Manufacturer, \"Arlo\")\n                   .setCharacteristic(Characteristic.Model, deviceModel);\n\n            service.getCharacteristic(Characteristic.FirmwareRevision);\n            service.getCharacteristic(Characteristic.HardwareRevision);\n\n            accessory.addService(Service.MotionSensor, deviceName);\n\n            service = accessory.addService(Service.CameraControl, deviceName);\n\n            service.addCharacteristic(Characteristic.NightVision);\n            service.addCharacteristic(Characteristic.ImageMirroring);\n            service.addCharacteristic(Characteristic.ImageRotation)\n                    .setProps({\n                        maxValue: 180,\n                        minValue: 0,\n                        minStep: 180\n                    });\n\n            accessory.configureCameraSource(new ArloCameraSource(this.log, accessory, device, HAP, this.config.streaming));\n\n            accessory.addService(Service.SecuritySystem, deviceName);\n\n            this.accessories[accessory.UUID] = new ArloQAccessory(this.log, this.config, accessory, device);\n            this.api.publishCameraAccessories(\"homebridge-arlo\", [accessory]);\n        }\n    }\n\n    configureAccessory(accessory) {\n        this.accessories[accessory.UUID] = accessory;\n    }\n\n    setupListeners() {\n        this.api.on('didFinishLaunching', function() {\n            var arlo = new Arlo();\n\n            arlo.on(Arlo.FOUND, function(device) {\n                let uuid = UUIDGen.generate(device.id);\n                let accessory = this.accessories[uuid];\n\n                if (accessory === undefined) {\n                    this.addAccessory(device);\n                }\n                else if(device.getType() === Arlo.BASESTATION) {\n                    this.log(\"Online: Base Station %s [%s]\", accessory.displayName, device.id);\n                    this.accessories[uuid] = new ArloBaseStationAccessory(this.log, this.config, (accessory instanceof ArloBaseStationAccessory ? accessory.accessory : accessory), device);\n                }\n                else if(device.getType() === Arlo.CAMERA && this.config.include_cameras === true) {\n                    this.log(\"Online: Camera %s [%s]\", accessory.displayName, device.id);\n                    this.accessories[uuid] = new ArloCameraAccessory(this.log, (accessory instanceof ArloCameraAccessory ? accessory.accessory : accessory), device);\n                }\n                else if(device.getType() === Arlo.Q && this.config.include_cameras === true) {\n                    this.log(\"Online: Camera %s [%s]\", accessory.displayName, device.id);\n                    this.accessories[uuid] = new ArloQAccessory(this.log, this.config, (accessory instanceof ArloQAccessory ? accessory.accessory : accessory), device);\n                }\n            }.bind(this));\n\n            arlo.login(this.config.email, this.config.password);\n        }.bind(this));\n    }\n}\n\nclass ArloBaseStationAccessory {\n    constructor(log, config, accessory, device) {\n        this.accessory = accessory;\n        this.device = device;\n        this.log = log;\n        \n        config = config || {};\n\n        this.STAY_ARM = config.stay_arm || Arlo.ARMED;\n        this.NIGHT_ARM = config.night_arm || Arlo.ARMED;\n        this.interval = config.interval || DEFAULT_SUBSCRIBE_TIME;\n\n        this.accessory\n            .getService(Service.AccessoryInformation)\n            .setCharacteristic(Characteristic.Model, device.getModel())\n            .setCharacteristic(Characteristic.SerialNumber, device.getSerialNumber());\n\n        this.setupListeners();\n        this.accessory.updateReachability(true);\n    }\n\n    setupListeners() {\n        this.accessory\n            .getService(Service.SecuritySystem)\n            .getCharacteristic(Characteristic.SecuritySystemTargetState)\n            .on('set', this.setTargetState.bind(this));\n    \n        this.device.on(Arlo.ARMED, function() {\n            this.accessory\n                .getService(Service.SecuritySystem)\n                .getCharacteristic(Characteristic.SecuritySystemTargetState)\n                .updateValue(Characteristic.SecuritySystemTargetState.AWAY_ARM);\n    \n            this.accessory\n                .getService(Service.SecuritySystem)\n                .getCharacteristic(Characteristic.SecuritySystemCurrentState)\n                .updateValue(Characteristic.SecuritySystemCurrentState.AWAY_ARM);\n        }.bind(this));\n        \n        this.device.on(Arlo.DISARMED, function() {\n            this.accessory\n                .getService(Service.SecuritySystem)\n                .getCharacteristic(Characteristic.SecuritySystemTargetState)\n                .updateValue(Characteristic.SecuritySystemTargetState.DISARM);\n    \n            this.accessory\n                .getService(Service.SecuritySystem)\n                .getCharacteristic(Characteristic.SecuritySystemCurrentState)\n                .updateValue(Characteristic.SecuritySystemCurrentState.DISARMED);\n        }.bind(this));\n\n        if (this.STAY_ARM !== Arlo.ARMED) {\n            this.device.on(this.STAY_ARM, function() {\n                this.accessory\n                    .getService(Service.SecuritySystem)\n                    .getCharacteristic(Characteristic.SecuritySystemTargetState)\n                    .updateValue(Characteristic.SecuritySystemTargetState.STAY_ARM);\n        \n                this.accessory\n                    .getService(Service.SecuritySystem)\n                    .getCharacteristic(Characteristic.SecuritySystemCurrentState)\n                    .updateValue(Characteristic.SecuritySystemCurrentState.STAY_ARM);\n            }.bind(this));\n        }\n\n        if (this.NIGHT_ARM !== Arlo.ARMED) {\n            this.device.on(this.NIGHT_ARM, function() {\n                this.accessory\n                    .getService(Service.SecuritySystem)\n                    .getCharacteristic(Characteristic.SecuritySystemTargetState)\n                    .updateValue(Characteristic.SecuritySystemTargetState.NIGHT_ARM);\n        \n                this.accessory\n                    .getService(Service.SecuritySystem)\n                    .getCharacteristic(Characteristic.SecuritySystemCurrentState)\n                    .updateValue(Characteristic.SecuritySystemCurrentState.NIGHT_ARM);\n            }.bind(this));\n        }\n        \n        setInterval(\n            function(){\n                this.device.subscribe();\n            }.bind(this),\n            (this.interval)\n        );\n    }\n\n    setTargetState(state, callback) {\n        switch(state) {\n            case Characteristic.SecuritySystemTargetState.AWAY_ARM:\n                this.device.arm(function() {\n                    callback(null);\n                    this.device.emit(Arlo.ARMED);\n                }.bind(this));\n                break;\n            case Characteristic.SecuritySystemTargetState.DISARM:\n                this.device.disarm(function() {\n                    callback(null);\n                    this.device.emit(Arlo.DISARMED);\n                }.bind(this));\n                break;\n            case Characteristic.SecuritySystemTargetState.STAY_ARM:\n                this.device.setMode(this.STAY_ARM, function() {\n                    callback(null);\n                    this.device.emit(this.STAY_ARM);\n                }.bind(this));\n                break;\n            case Characteristic.SecuritySystemTargetState.NIGHT_ARM:\n                this.device.setMode(this.NIGHT_ARM, function() {\n                    callback(null);\n                    this.device.emit(this.NIGHT_ARM);\n                }.bind(this));\n                break;\n        }\n    }\n}\n\nclass ArloCameraAccessory {\n    constructor(log, accessory, device) {\n        this.accessory = accessory;\n        this.device = device;\n        this.log = log;\n\n        this.accessory\n            .getService(Service.AccessoryInformation)\n            .setCharacteristic(Characteristic.Model, device.getModel())\n            .setCharacteristic(Characteristic.SerialNumber, device.getSerialNumber());\n\n        this.setupListeners();\n        this.device.get();\n    }\n\n    setupListeners() {\n        this.accessory\n            .getService(Service.CameraControl)\n            .getCharacteristic(Characteristic.On)\n            .on('set', this.setPrivacyActive.bind(this));\n\n        this.accessory\n            .getService(Service.CameraControl)\n            .getCharacteristic(Characteristic.ImageMirroring)\n            .on('set', this.setImageMirroring.bind(this));\n\n        this.accessory\n            .getService(Service.CameraControl)\n            .getCharacteristic(Characteristic.ImageRotation)\n            .on('set', this.setImageRotation.bind(this));\n\n        setTimeout(function(){\n            this.device.get();\n        }.bind(this));\n\n        this.device.on(Arlo.BATTERY, this.updateBatteryLevel.bind(this));\n        this.device.on(Arlo.CHARGING, this.updateChargingState.bind(this));\n        this.device.on(Arlo.MOTION, this.updateMotionDetected.bind(this));\n\n        this.device.on(Arlo.UPDATE, function(info) {\n            this.updateInfo(info);\n            this.updateConnectionState(info.connectionState);\n            this.updateImageMirroring(info.mirror);\n            this.updateImageRotation(info.flip);\n            this.updateNightVision(info.nightVisionMode);\n            this.updatePrivacyActive(info.privacyActive);\n        }.bind(this));\n    }\n\n    setImageMirroring(value, callback) {\n        this.device.set({mirror: value}, function() {\n            callback(null);\n        })\n    }\n\n    setImageRotation(value, callback) {\n        this.device.set({flip: (value > 0 ? true : false)}, function() {\n            callback(null);\n        })\n    }\n\n    setPrivacyActive(value, callback) {\n        this.device.set({privacyActive: value == false}, function() {\n            callback(null);\n        })\n    }\n\n    updateInfo(info) {\n        if (info === undefined) {\n            return;\n        }\n\n        let service = this.accessory.getService(Service.AccessoryInformation);\n\n        if (info.modelId) {\n            service.getCharacteristic(Characteristic.Model).updateValue(info.modelId);\n        }\n\n        if (info.serialNumber) {\n            service.getCharacteristic(Characteristic.SerialNumber).updateValue(info.serialNumber);\n        }\n\n        if (info.swVersion) {\n            service.getCharacteristic(Characteristic.FirmwareRevision).updateValue(info.swVersion);\n        }\n\n        if (info.hwVersion) {\n            service.getCharacteristic(Characteristic.HardwareRevision).updateValue(info.hwVersion);\n        }\n    }\n\n    updateBatteryLevel(batteryLevel) {\n        if (batteryLevel === undefined) {\n            return;\n        }\n\n        this.accessory\n            .getService(Service.BatteryService)\n            .getCharacteristic(Characteristic.BatteryLevel)\n            .updateValue(batteryLevel);\n    }\n\n    updateChargingState(value) {\n        let state = Characteristic.ChargingState.NOT_CHARGEABLE;\n\n        if (value !== undefined) {\n            state = value != 'Off' ? Characteristic.ChargingState.CHARGING : Characteristic.ChargingState.NOT_CHARGING;\n        }\n\n        this.accessory\n            .getService(Service.BatteryService)\n            .getCharacteristic(Characteristic.ChargingState)\n            .updateValue(state);\n    }\n\n    updateConnectionState(connectionState) {\n        if (connectionState === undefined) {\n            return;\n        }\n\n        let online = connectionState === 'available';\n        this.log(\"%s: Camera %s [%s]\", (online ? 'Online' : 'Offline'), this.accessory.displayName, this.device.id);\n    }\n\n    updateMotionDetected(motionDetected) {\n        if (motionDetected === undefined) {\n            return;\n        }\n\n        this.accessory\n            .getService(Service.MotionSensor)\n            .getCharacteristic(Characteristic.MotionDetected)\n            .updateValue(motionDetected);\n    }\n\n    updateImageMirroring(mirror) {\n        if (mirror === undefined) {\n            return;\n        }\n\n        this.accessory\n            .getService(Service.CameraControl)\n            .getCharacteristic(Characteristic.ImageMirroring)\n            .updateValue(mirror);\n    }\n\n    updateImageRotation(flip) {\n        if (flip === undefined) {\n            return;\n        }\n\n        this.accessory\n            .getService(Service.CameraControl)\n            .getCharacteristic(Characteristic.ImageRotation)\n            .updateValue(flip === true ? 180 : 0);\n    }\n\n    updateNightVision(nightVisionMode) {\n        if (nightVisionMode === undefined) {\n            return;\n        }\n\n        this.accessory\n            .getService(Service.CameraControl)\n            .getCharacteristic(Characteristic.NightVision)\n            .updateValue(nightVisionMode === 1);\n    }\n\n    updatePrivacyActive(privacyActive) {\n        if (privacyActive === undefined) {\n            return;\n        }\n\n        this.accessory\n            .getService(Service.CameraControl)\n            .getCharacteristic(Characteristic.On)\n            .updateValue(privacyActive == false);\n    }\n}\n\nclass ArloQAccessory {\n    constructor(log, config, accessory, device) {\n        this.accessory = accessory;\n        this.device = device;\n        this.log = log;\n\n        config = config || {};\n\n        this.STAY_ARM = config.stay_arm || Arlo.ARMED;\n        this.NIGHT_ARM = config.night_arm || Arlo.ARMED;\n        this.interval = config.interval || DEFAULT_SUBSCRIBE_TIME;\n\n        this.accessory\n            .getService(Service.AccessoryInformation)\n            .setCharacteristic(Characteristic.Model, device.getModel())\n            .setCharacteristic(Characteristic.SerialNumber, device.getSerialNumber());\n\n        this.setupListeners();\n    }\n\n    setupListeners() {\n        this.accessory\n            .getService(Service.SecuritySystem)\n            .getCharacteristic(Characteristic.SecuritySystemTargetState)\n            .on('set', this.setTargetState.bind(this));\n\n        this.device.on(Arlo.ARMED, function() {\n            this.accessory\n                .getService(Service.SecuritySystem)\n                .getCharacteristic(Characteristic.SecuritySystemTargetState)\n                .updateValue(Characteristic.SecuritySystemTargetState.AWAY_ARM);\n\n            this.accessory\n                .getService(Service.SecuritySystem)\n                .getCharacteristic(Characteristic.SecuritySystemCurrentState)\n                .updateValue(Characteristic.SecuritySystemCurrentState.AWAY_ARM);\n        }.bind(this));\n\n        this.device.on(Arlo.DISARMED, function() {\n            this.accessory\n                .getService(Service.SecuritySystem)\n                .getCharacteristic(Characteristic.SecuritySystemTargetState)\n                .updateValue(Characteristic.SecuritySystemTargetState.DISARM);\n\n            this.accessory\n                .getService(Service.SecuritySystem)\n                .getCharacteristic(Characteristic.SecuritySystemCurrentState)\n                .updateValue(Characteristic.SecuritySystemCurrentState.DISARMED);\n        }.bind(this));\n\n        if (this.STAY_ARM !== Arlo.ARMED) {\n            this.device.on(this.STAY_ARM, function() {\n                this.accessory\n                    .getService(Service.SecuritySystem)\n                    .getCharacteristic(Characteristic.SecuritySystemTargetState)\n                    .updateValue(Characteristic.SecuritySystemTargetState.STAY_ARM);\n\n                this.accessory\n                    .getService(Service.SecuritySystem)\n                    .getCharacteristic(Characteristic.SecuritySystemCurrentState)\n                    .updateValue(Characteristic.SecuritySystemCurrentState.STAY_ARM);\n            }.bind(this));\n        }\n\n        if (this.NIGHT_ARM !== Arlo.ARMED) {\n            this.device.on(this.NIGHT_ARM, function() {\n                this.accessory\n                    .getService(Service.SecuritySystem)\n                    .getCharacteristic(Characteristic.SecuritySystemTargetState)\n                    .updateValue(Characteristic.SecuritySystemTargetState.NIGHT_ARM);\n\n                this.accessory\n                    .getService(Service.SecuritySystem)\n                    .getCharacteristic(Characteristic.SecuritySystemCurrentState)\n                    .updateValue(Characteristic.SecuritySystemCurrentState.NIGHT_ARM);\n            }.bind(this));\n        }\n\n        this.accessory\n            .getService(Service.CameraControl)\n            .getCharacteristic(Characteristic.On)\n            .on('set', this.setPrivacyActive.bind(this));\n\n        this.accessory\n            .getService(Service.CameraControl)\n            .getCharacteristic(Characteristic.ImageMirroring)\n            .on('set', this.setImageMirroring.bind(this));\n\n        this.accessory\n            .getService(Service.CameraControl)\n            .getCharacteristic(Characteristic.ImageRotation)\n            .on('set', this.setImageRotation.bind(this));\n\n        this.accessory\n            .getService(Service.MotionSensor)\n            .getCharacteristic(Characteristic.MotionDetected)\n            .on('get', this.get.bind(this));\n\n        this.device.on(Arlo.MOTION, this.updateMotionDetected.bind(this));\n\n        this.device.on(Arlo.UPDATE, function(info) {\n            this.updateInfo(info);\n            this.updateConnectionState(info.connectionState);\n            this.updateImageMirroring(info.mirror);\n            this.updateImageRotation(info.flip);\n            this.updateNightVision(info.nightVisionMode);\n            this.updatePrivacyActive(info.privacyActive);\n        }.bind(this));\n\n        setInterval(\n            function() {\n                this.device.subscribe();\n            }.bind(this),\n            (this.interval)\n        );\n    }\n\n    get(callback) {\n        if (this.device) {\n            this.device.get();\n        }\n\n        callback(null, null)\n    }\n\n    setImageMirroring(value, callback) {\n        this.device.set({mirror: value}, function() {\n            callback(null);\n        })\n    }\n\n    setImageRotation(value, callback) {\n        this.device.set({flip: (value > 0 ? true : false)}, function() {\n            callback(null);\n        })\n    }\n\n    setPrivacyActive(value, callback) {\n        this.device.set({privacyActive: value == false}, function() {\n            callback(null);\n        })\n    }\n\n    setTargetState(state, callback) {\n        switch(state) {\n            case Characteristic.SecuritySystemTargetState.AWAY_ARM:\n                this.device.arm(function() {\n                    callback(null);\n                    this.device.emit(Arlo.ARMED);\n                }.bind(this));\n                break;\n            case Characteristic.SecuritySystemTargetState.DISARM:\n                this.device.disarm(function() {\n                    callback(null);\n                    this.device.emit(Arlo.DISARMED);\n                }.bind(this));\n                break;\n            case Characteristic.SecuritySystemTargetState.STAY_ARM:\n                this.device.setMode(this.STAY_ARM, function() {\n                    callback(null);\n                    this.device.emit(this.STAY_ARM);\n                }.bind(this));\n                break;\n            case Characteristic.SecuritySystemTargetState.NIGHT_ARM:\n                this.device.setMode(this.NIGHT_ARM, function() {\n                    callback(null);\n                    this.device.emit(this.NIGHT_ARM);\n                }.bind(this));\n                break;\n        }\n    }\n\n    updateInfo(info) {\n        if (info === undefined) {\n            return;\n        }\n\n        let service = this.accessory.getService(Service.AccessoryInformation);\n\n        if (info.modelId) {\n            service.getCharacteristic(Characteristic.Model).updateValue(info.modelId);\n        }\n\n        if (info.serialNumber) {\n            service.getCharacteristic(Characteristic.SerialNumber).updateValue(info.serialNumber);\n        }\n\n        if (info.swVersion) {\n            service.getCharacteristic(Characteristic.FirmwareRevision).updateValue(info.swVersion);\n        }\n\n        if (info.hwVersion) {\n            service.getCharacteristic(Characteristic.HardwareRevision).updateValue(info.hwVersion);\n        }\n    }\n\n    updateConnectionState(connectionState) {\n        if (connectionState === undefined) {\n            return;\n        }\n\n        let online = connectionState === 'available';\n        this.log(\"%s: Camera %s [%s]\", (online ? 'Online' : 'Offline'), this.accessory.displayName, this.device.id);\n    }\n\n    updateMotionDetected(motionDetected) {\n        if (motionDetected === undefined) {\n            return;\n        }\n\n        this.accessory\n            .getService(Service.MotionSensor)\n            .getCharacteristic(Characteristic.MotionDetected)\n            .updateValue(motionDetected);\n    }\n\n    updateImageMirroring(mirror) {\n        if (mirror === undefined) {\n            return;\n        }\n\n        this.accessory\n            .getService(Service.CameraControl)\n            .getCharacteristic(Characteristic.ImageMirroring)\n            .updateValue(mirror);\n    }\n\n    updateImageRotation(flip) {\n        if (flip === undefined) {\n            return;\n        }\n\n        this.accessory\n            .getService(Service.CameraControl)\n            .getCharacteristic(Characteristic.ImageRotation)\n            .updateValue(flip === true ? 180 : 0);\n    }\n\n    updateNightVision(nightVisionMode) {\n        if (nightVisionMode === undefined) {\n            return;\n        }\n\n        this.accessory\n            .getService(Service.CameraControl)\n            .getCharacteristic(Characteristic.NightVision)\n            .updateValue(nightVisionMode === 1);\n    }\n\n    updatePrivacyActive(privacyActive) {\n        if (privacyActive === undefined) {\n            return;\n        }\n\n        this.accessory\n            .getService(Service.CameraControl)\n            .getCharacteristic(Characteristic.On)\n            .updateValue(privacyActive == false);\n    }\n}\n"]}