UNPKG

homebridge-hatch-baby-rest

Version:
24 lines (23 loc) 1.58 kB
import { hap } from "./hap.js"; import { filter, map } from 'rxjs/operators'; import { BaseAccessory } from "./base-accessory.js"; export class SoundMachineAccessory extends BaseAccessory { constructor(device, accessory) { super(device, accessory); const { Service, Characteristic } = hap, speakerService = this.getService(Service.Speaker, 'Volume'), audioService = this.getService(Service.Fan, 'onBrightness' in device ? 'Audio Track' : undefined), { audioTracks } = device; this.registerCharacteristic(speakerService.getCharacteristic(Characteristic.Volume), device.onVolume, (volume) => device.setVolume(volume)); this.registerCharacteristic(speakerService.getCharacteristic(Characteristic.Mute), device.onVolume.pipe(map((volume) => volume === 0)), (mute) => { device.setVolume(mute ? 0 : 50); }); this.registerCharacteristic(audioService.getCharacteristic(Characteristic.On), device.onAudioPlaying, (on) => device.setAudioPlaying(on)); this.registerCharacteristic(audioService.getCharacteristic(Characteristic.RotationSpeed), device.onAudioTrack.pipe(filter((audioTrack) => Boolean(audioTrack)), map((audioTrack) => audioTracks.indexOf(audioTrack))), (level) => { const audioTrack = audioTracks[level]; if (audioTrack !== undefined) { device.setAudioTrack(audioTrack); } }); audioService .getCharacteristic(Characteristic.RotationSpeed) .setProps({ minValue: 0, maxValue: audioTracks.length - 1 }); } }