homebridge-ring
Version:
Homebridge plugin for Ring doorbells, cameras, security alarm system and smart lighting
32 lines (31 loc) • 1.23 kB
JavaScript
import { BaseDeviceAccessory } from "./base-device-accessory.js";
import { hap } from "./hap.js";
import { distinctUntilChanged, filter, map } from 'rxjs/operators';
import { logInfo } from 'ring-client-api/util';
export class FreezeSensor extends BaseDeviceAccessory {
device;
accessory;
config;
constructor(device, accessory, config) {
super();
this.device = device;
this.accessory = accessory;
this.config = config;
const { Characteristic: { OccupancyDetected }, Service: { OccupancySensor }, } = hap, onFreezeDetected = device.onData.pipe(map((data) => {
return data.faulted
? OccupancyDetected.OCCUPANCY_DETECTED
: OccupancyDetected.OCCUPANCY_NOT_DETECTED;
}), distinctUntilChanged());
this.initSensorService(OccupancySensor);
this.registerObservableCharacteristic({
characteristicType: OccupancyDetected,
serviceType: OccupancySensor,
onValue: onFreezeDetected,
});
onFreezeDetected
.pipe(filter((faulted) => Boolean(faulted)))
.subscribe(() => {
logInfo(device.name + ' Detected Freezing');
});
}
}