homebridge
Version:
HomeKit support for the impatient
119 lines • 4.05 kB
TypeScript
/**
* Cluster State Map
*
* Maps Matter cluster names to their typed state interfaces.
* Provides IDE autocomplete and type safety for plugin developers when
* working with cluster attributes via api.matter?.updateAccessoryState()
* and api.matter?.getAccessoryState().
*
* State interfaces are defined in clusterTypes.ts and derived from
* @matter/main/clusters where possible.
*/
import type { ColorControlState, DoorLockState, FanControlState, LevelControlState, OnOffState, PowerSourceState, RvcCleanModeState, RvcOperationalState, RvcRunModeState, ServiceAreaState, ThermostatState, ValveConfigurationAndControlState, WindowCoveringState } from './clusterTypes.js';
/**
* Maps known cluster names to their typed state interfaces.
*
* Plugin developers get autocomplete for known clusters while unknown clusters
* fall back to `Record<string, unknown>`.
*
* @example
* ```typescript
* // With typed overload on api.matter:
* await api.matter?.updateAccessoryState(uuid, 'onOff', { onOff: true })
* // ^-- autocomplete!
*
* const state = await api.matter?.getAccessoryState(uuid, 'levelControl')
* // state is Partial<LevelControlState> | undefined
* ```
*/
export interface ClusterStateMap {
onOff: OnOffState;
levelControl: LevelControlState;
colorControl: ColorControlState;
doorLock: DoorLockState;
windowCovering: WindowCoveringState;
thermostat: ThermostatState;
fanControl: FanControlState;
rvcOperationalState: RvcOperationalState;
rvcRunMode: RvcRunModeState;
rvcCleanMode: RvcCleanModeState;
serviceArea: ServiceAreaState;
powerSource: PowerSourceState;
temperatureMeasurement: {
measuredValue: number | null;
minMeasuredValue?: number | null;
maxMeasuredValue?: number | null;
};
relativeHumidityMeasurement: {
measuredValue: number | null;
minMeasuredValue?: number | null;
maxMeasuredValue?: number | null;
};
illuminanceMeasurement: {
measuredValue: number | null;
minMeasuredValue?: number | null;
maxMeasuredValue?: number | null;
};
occupancySensing: {
occupancy: {
occupied: boolean;
};
occupancySensorType?: number;
occupancySensorTypeBitmap?: {
pir?: boolean;
ultrasonic?: boolean;
physicalContact?: boolean;
};
};
booleanState: {
stateValue: boolean;
};
valveConfigurationAndControl: ValveConfigurationAndControlState;
airQuality: {
airQuality: number;
};
carbonMonoxideConcentrationMeasurement: {
measuredValue: number | null;
minMeasuredValue?: number | null;
maxMeasuredValue?: number | null;
measurementMedium: number;
measurementUnit?: number;
};
nitrogenDioxideConcentrationMeasurement: {
measuredValue: number | null;
minMeasuredValue?: number | null;
maxMeasuredValue?: number | null;
measurementMedium: number;
measurementUnit?: number;
};
ozoneConcentrationMeasurement: {
measuredValue: number | null;
minMeasuredValue?: number | null;
maxMeasuredValue?: number | null;
measurementMedium: number;
measurementUnit?: number;
};
pm10ConcentrationMeasurement: {
measuredValue: number | null;
minMeasuredValue?: number | null;
maxMeasuredValue?: number | null;
measurementMedium: number;
measurementUnit?: number;
};
pm25ConcentrationMeasurement: {
measuredValue: number | null;
minMeasuredValue?: number | null;
maxMeasuredValue?: number | null;
measurementMedium: number;
measurementUnit?: number;
};
switch: {
currentPosition: number;
numberOfPositions?: number;
};
identify: {
identifyTime: number;
identifyType: number;
};
}
//# sourceMappingURL=clusterStateMap.d.ts.map