/** * Air Quality Service Handler * * Implements the HomeKit AirQualitySensor service for Dyson devices. * Provides overall air quality level, PM2.5, PM10, and VOC readings. */ import type { API, Logging, PlatformAccessory, Service } from 'homebridge'; import type { DysonLinkDevice } from '../../devices/dysonLinkDevice.js'; /** * Configuration for AirQualityService */ export interface AirQualityServiceConfig { accessory: PlatformAccessory; device: DysonLinkDevice; api: API; log: Logging; /** Whether device supports NO2 sensor */ hasNo2Sensor?: boolean; /** * Whether device has basic air quality sensor (Link series) * Basic sensors use pact/vact index (0-9 scale) instead of PM2.5 µg/m³ */ basicAirQualitySensor?: boolean; /** Primary service to link this service to */ primaryService?: Service; } /** * AirQualityService handles the HomeKit AirQualitySensor service * * Maps Dyson air quality data to HomeKit characteristics: * - AirQuality (1-5 scale calculated from PM2.5) * - PM2_5Density (µg/m³) * - PM10Density (µg/m³) * - VOCDensity (index value, not actual µg/m³) * - NitrogenDioxideDensity (index value, for Formaldehyde models) */ export declare class AirQualityService { private readonly service; private readonly device; private readonly log; private readonly api; private readonly hasNo2Sensor; private readonly basicAirQualitySensor; private readonly boundHandleStateChange; constructor(config: AirQualityServiceConfig); /** * Get the underlying HomeKit service */ getService(): Service; /** * Clean up event listeners */ destroy(): void; /** * Calculate HomeKit AirQuality level from sensor data * * For advanced sensors: Uses PM2.5 value in µg/m³ * For basic sensors (Link): Uses pact index (0-9 scale) * * @param pm25 - PM2.5 value in µg/m³ or pact index for basic sensors * @param vocIndex - VOC index value for basic sensors * @returns HomeKit AirQuality value (0-5) */ private calculateAirQuality; /** * Calculate air quality from basic sensor pact index (0-9) * Based on reference implementation thresholds */ private calculateBasicPactQuality; /** * Calculate air quality from basic sensor vact index * Based on reference implementation thresholds */ private calculateBasicVactQuality; /** * Handle AirQuality GET request * Returns 0-5 (UNKNOWN to POOR) */ private handleAirQualityGet; /** * Handle PM2.5 Density GET request * Returns µg/m³ */ private handlePM25Get; /** * Handle PM10 Density GET request * Returns µg/m³ */ private handlePM10Get; /** * Handle VOC Density GET request * Note: Dyson provides an index value, not actual µg/m³ */ private handleVOCGet; /** * Handle NO2 Density GET request * Note: Dyson provides an index value, not actual µg/m³ */ private handleNO2Get; /** * Handle device state changes * Updates HomeKit characteristics to reflect current device state */ private handleStateChange; /** * Update characteristics from current device state * Call this after connecting to sync HomeKit with device */ updateFromState(): void; } //# sourceMappingURL=airQualityService.d.ts.map