/** * Dyson Link Accessory * * HomeKit accessory handler for all Dyson purifier devices. * Supports Pure Cool, Hot+Cool, Humidify+Cool, and Big+Quiet models. */ import type { API, Logging, PlatformAccessory } from 'homebridge'; import { DysonAccessory } from './dysonAccessory.js'; import { FanService } from './services/fanService.js'; import { TemperatureService } from './services/temperatureService.js'; import { HumidityService } from './services/humidityService.js'; import { NightModeService } from './services/nightModeService.js'; import { ContinuousMonitoringService } from './services/continuousMonitoringService.js'; import { AirQualityService } from './services/airQualityService.js'; import { FilterService } from './services/filterService.js'; import { ThermostatService } from './services/thermostatService.js'; import { HumidifierControlService } from './services/humidifierControlService.js'; import { JetFocusService } from './services/jetFocusService.js'; import { HeaterCoolerService } from './services/heaterCoolerService.js'; import type { DysonLinkDevice } from '../devices/dysonLinkDevice.js'; import type { DeviceState } from '../devices/types.js'; /** * Configuration options for device features */ export interface DeviceOptions { /** Temperature offset in Celsius */ temperatureOffset?: number; /** Humidity offset percentage */ humidityOffset?: number; /** Disable temperature sensor */ isTemperatureIgnored?: boolean; /** Disable humidity sensor */ isHumidityIgnored?: boolean; /** Disable air quality sensor */ isAirQualityIgnored?: boolean; /** Use Fahrenheit for temperature display */ useFahrenheit?: boolean; /** Disable heating controls */ isHeatingDisabled?: boolean; /** * Heating service type to expose in HomeKit * - 'thermostat': Traditional Thermostat service (matches reference plugin) * - 'heater-cooler': HeaterCooler service (modern HomeKit approach) * - 'both': Expose both services (default for backwards compatibility) */ heatingServiceType?: 'thermostat' | 'heater-cooler' | 'both'; /** Enable full humidity range (0-100%) for humidifier */ fullRangeHumidity?: boolean; /** Enable night mode switch */ isNightModeEnabled?: boolean; /** Enable jet focus switch */ isJetFocusEnabled?: boolean; /** Enable continuous monitoring switch */ isContinuousMonitoringEnabled?: boolean; /** Disable filter status service */ isFilterStatusDisabled?: boolean; /** Disable humidifier control service */ isHumidifierDisabled?: boolean; } /** * Configuration for DysonLinkAccessory */ export interface DysonLinkAccessoryConfig { accessory: PlatformAccessory; device: DysonLinkDevice; api: API; log: Logging; /** Device-specific options */ options?: DeviceOptions; } /** * DysonLinkAccessory handles HomeKit integration for all Dyson purifier devices * * Features: * - Fan control (power, speed, oscillation, auto mode) * - Temperature and humidity sensors (with offset support) * - Air quality sensors (PM2.5, PM10, VOC, NO2) * - Filter maintenance status * - Night mode and continuous monitoring switches * - Thermostat/HeaterCooler for HP models (heating control) * - Humidifier control for PH models * - Jet Focus (front airflow) switch */ export declare class DysonLinkAccessory extends DysonAccessory { private fanService; private temperatureService?; private humidityService?; private nightModeService?; private continuousMonitoringService?; private airQualityService?; private filterService?; private thermostatService?; private humidifierControlService?; private jetFocusService?; private heaterCoolerService?; private options; /** * Create a new DysonLinkAccessory * * @param config - Accessory configuration */ constructor(config: DysonLinkAccessoryConfig); /** * Set up device-specific services based on device features * * Creates all HomeKit services based on device features. */ protected setupServices(): void; /** * Handle device state changes * * Services handle their own state updates via event subscription. * * @param state - New device state */ protected handleStateChange(state: DeviceState): void; /** * Handle device disconnection * * When device disconnects, HomeKit will show "Not Responding" * automatically when characteristic gets return errors. */ protected handleDisconnect(): void; /** * Handle device connection * * When device reconnects, sync HomeKit state with device. */ protected handleConnect(): void; /** * Clean up all service event listeners */ destroy(): void; /** * Get the FanService instance */ getFanService(): FanService; /** * Get the TemperatureService instance (if enabled) */ getTemperatureService(): TemperatureService | undefined; /** * Get the HumidityService instance (if enabled) */ getHumidityService(): HumidityService | undefined; /** * Get the NightModeService instance (if enabled) */ getNightModeService(): NightModeService | undefined; /** * Get the ContinuousMonitoringService instance (if enabled) */ getContinuousMonitoringService(): ContinuousMonitoringService | undefined; /** * Get the HeaterCoolerService instance (if enabled) */ getHeaterCoolerService(): HeaterCoolerService | undefined; /** * Get the ThermostatService instance (if device supports heating) */ getThermostatService(): ThermostatService | undefined; /** * Get the HumidifierControlService instance (if device supports humidification) */ getHumidifierControlService(): HumidifierControlService | undefined; /** * Get the JetFocusService instance (if device supports jet focus) */ getJetFocusService(): JetFocusService | undefined; /** * Get the AirQualityService instance (if device supports air quality) */ getAirQualityService(): AirQualityService | undefined; /** * Get the FilterService instance (if device has filters) */ getFilterService(): FilterService | undefined; } //# sourceMappingURL=dysonLinkAccessory.d.ts.map