UNPKG

@koush/ring-client-api

Version:

Unofficial API for Ring doorbells, cameras, security alarm system and smart lighting

48 lines (47 loc) 2.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FloodFreezeSensor = void 0; const base_device_accessory_1 = require("./base-device-accessory"); const hap_1 = require("./hap"); const operators_1 = require("rxjs/operators"); class FloodFreezeSensor extends base_device_accessory_1.BaseDeviceAccessory { constructor(device, accessory, logger, config) { super(); this.device = device; this.accessory = accessory; this.logger = logger; this.config = config; const { Characteristic: { LeakDetected, OccupancyDetected }, Service: { LeakSensor, OccupancySensor }, } = hap_1.hap, leakService = this.getService(LeakSensor, `${device.name} Flood Sensor`), freezeService = this.getService(OccupancySensor, `${device.name} Freeze Sensor`), onFloodDetected = device.onData.pipe((0, operators_1.map)((data) => { return data.flood && data.flood.faulted ? LeakDetected.LEAK_DETECTED : LeakDetected.LEAK_NOT_DETECTED; }), (0, operators_1.distinctUntilChanged)()), onFreezeDetected = device.onData.pipe((0, operators_1.map)((data) => { return data.freeze && data.freeze.faulted ? OccupancyDetected.OCCUPANCY_DETECTED : OccupancyDetected.OCCUPANCY_NOT_DETECTED; }), (0, operators_1.distinctUntilChanged)()); this.initSensorService(leakService); this.registerObservableCharacteristic({ characteristicType: LeakDetected, serviceType: leakService, onValue: onFloodDetected, }); onFloodDetected .pipe((0, operators_1.filter)((faulted) => Boolean(faulted))) .subscribe(() => { this.logger.info(device.name + ' Detected Flooding'); }); this.initSensorService(freezeService); this.registerObservableCharacteristic({ characteristicType: OccupancyDetected, serviceType: freezeService, onValue: onFreezeDetected, }); onFreezeDetected .pipe((0, operators_1.filter)((faulted) => Boolean(faulted))) .subscribe(() => { this.logger.info(device.name + ' Detected Freezing'); }); } } exports.FloodFreezeSensor = FloodFreezeSensor;