homebridge-hatch-baby-rest
Version:
Homebridge plugin for Hatch Rest/Restore WiFi sound machines
28 lines (27 loc) • 1.82 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SoundMachineAccessory = void 0;
const hap_1 = require("./hap");
const operators_1 = require("rxjs/operators");
const base_accessory_1 = require("./base-accessory");
class SoundMachineAccessory extends base_accessory_1.BaseAccessory {
constructor(device, accessory) {
super(device, accessory);
const { Service, Characteristic } = hap_1.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((0, operators_1.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((0, operators_1.filter)((audioTrack) => Boolean(audioTrack)), (0, operators_1.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 });
}
}
exports.SoundMachineAccessory = SoundMachineAccessory;