UNPKG

homebridge

Version:
304 lines 8.08 kB
/** * Cluster State Types * * TypeScript interfaces for Matter cluster state objects. * These are used in behavior files to avoid repeated 'as any' casts. * * Types are derived from @matter/main/clusters where possible. */ import type { WindowCovering } from '@matter/main/clusters'; /** * Base interface for any cluster state */ export interface ClusterState { [key: string]: unknown; } /** * OnOff cluster state */ export interface OnOffState { onOff?: boolean; } /** * LevelControl cluster state */ export interface LevelControlState { currentLevel?: number; minLevel?: number; maxLevel?: number; remainingTime?: number; onLevel?: number | null; options?: number; } /** * ColorControl cluster state * Based on @matter/main/clusters ColorControl * * Note: We use a flexible interface to accommodate both ColorMode and EnhancedColorMode * from Matter.js, which are distinct types in the spec but functionally compatible */ export interface ColorControlState { colorTemperatureMireds?: number; colorTempPhysicalMinMireds?: number; colorTempPhysicalMaxMireds?: number; currentHue?: number; currentSaturation?: number; enhancedCurrentHue?: number; currentX?: number; currentY?: number; colorX?: number; colorY?: number; colorMode?: number; enhancedColorMode?: number; options?: number; coupleColorTempToLevelMinMireds?: number; transitionTime?: number; } /** * Partial state interfaces for specific color control operations * These are used when we only need to read/write specific properties * from the complex Matter.js ColorControl state */ /** * Color temperature specific state */ export interface ColorTemperatureState { colorTemperatureMireds?: number; } /** * Hue and saturation specific state */ export interface HueSaturationState { currentHue?: number; currentSaturation?: number; } /** * XY color specific state */ export interface XYColorState { currentX?: number; currentY?: number; } /** * Hue specific state (including enhanced hue) */ export interface HueState { currentHue?: number; enhancedCurrentHue?: number; } /** * Saturation specific state */ export interface SaturationState { currentSaturation?: number; } /** * WindowCovering cluster state * Based on @matter/main/clusters WindowCovering */ export interface WindowCoveringState { type?: WindowCovering.WindowCoveringType; configStatus?: { operational?: boolean; onlineReserved?: boolean; online?: boolean; liftMovementReversed?: boolean; liftPositionAware?: boolean; tiltPositionAware?: boolean; liftEncoderControlled?: boolean; tiltEncoderControlled?: boolean; }; targetPositionLiftPercent100ths?: number | null; currentPositionLiftPercent100ths?: number | null; targetPositionTiltPercent100ths?: number | null; currentPositionTiltPercent100ths?: number | null; operationalStatus?: { global: number; lift: number; tilt: number; }; safetyStatus?: number; endProductType?: number; mode?: number; } /** * FanControl cluster state */ export interface FanControlState { fanMode?: number; fanModeSequence?: number; percentSetting?: number | null; percentCurrent?: number; speedMax?: number; speedSetting?: number | null; speedCurrent?: number; rockSupport?: number; rockSetting?: number; windSupport?: number; windSetting?: number; } /** * Thermostat cluster state */ export interface ThermostatState { localTemperature?: number | null; externalMeasuredIndoorTemperature?: number | null; outdoorTemperature?: number | null; occupancy?: { occupied?: boolean; }; externallyMeasuredOccupancy?: boolean; absMinHeatSetpointLimit?: number; absMaxHeatSetpointLimit?: number; absMinCoolSetpointLimit?: number; absMaxCoolSetpointLimit?: number; occupiedCoolingSetpoint?: number; occupiedHeatingSetpoint?: number; unoccupiedCoolingSetpoint?: number; unoccupiedHeatingSetpoint?: number; minHeatSetpointLimit?: number; maxHeatSetpointLimit?: number; minCoolSetpointLimit?: number; maxCoolSetpointLimit?: number; minSetpointDeadBand?: number; remoteSensing?: number; controlSequenceOfOperation?: number; systemMode?: number; thermostatRunningMode?: number; startOfWeek?: number; numberOfWeeklyTransitions?: number; numberOfDailyTransitions?: number; } /** * DoorLock cluster state */ export interface DoorLockState { lockState?: number | null; lockType?: number; actuatorEnabled?: boolean; operatingMode?: number; doorState?: number | null; doorOpenEvents?: number; doorClosedEvents?: number; openPeriod?: number; } /** * RVC (Robotic Vacuum Cleaner) Operational State */ export interface RvcOperationalState { phaseList?: string[] | null; currentPhase?: number | null; countdownTime?: number | null; operationalStateList?: Array<{ operationalStateId: number; operationalStateLabel?: string; }>; operationalState?: number; operationalError?: { errorStateId: number; errorStateLabel?: string; errorStateDetails?: string; }; } /** * RVC Run Mode state */ export interface RvcRunModeState { supportedModes?: Array<{ label: string; mode: number; modeTags?: Array<{ value: number; }>; }>; currentMode?: number; startUpMode?: number | null; onMode?: number | null; } /** * RVC Clean Mode state */ export interface RvcCleanModeState { supportedModes?: Array<{ label: string; mode: number; modeTags?: Array<{ value: number; }>; }>; currentMode?: number; startUpMode?: number | null; onMode?: number | null; } /** * ValveConfigurationAndControl cluster state */ export interface ValveConfigurationAndControlState { openDuration?: number | null; defaultOpenDuration?: number | null; remainingDuration?: number | null; currentState?: number | null; targetState?: number | null; valveFault?: number; } /** * Service Area state */ export interface ServiceAreaState { supportedAreas?: Array<{ areaId: number; mapId: number | null; areaInfo: { locationInfo?: { locationName?: string; floorNumber?: number | null; areaType?: number | null; } | null; landmarkInfo?: { landmarkTag?: number; positionTag?: number | null; relativePositionTag?: number | null; } | null; }; }>; supportedMaps?: Array<{ mapId: number; name: string; }>; selectedAreas?: number[]; currentArea?: number | null; estimatedEndTime?: number | null; progress?: Array<{ areaId: number; status: number; totalOperationalTime?: number | null; }>; } /** * Power Source state * @see {@link https://matter-standard.github.io/matter/specification/latest/#ref-power-source-cluster} * * `batPercentRemaining` is encoded as double the percentage (0–200), so 100% = 200. * `batChargeLevel`: 0 = Ok, 1 = Warning, 2 = Critical */ export interface PowerSourceState { status?: number; order?: number; description?: string; batVoltage?: number | null; batPercentRemaining?: number | null; batTimeRemaining?: number | null; batChargeLevel?: number; batReplacementNeeded?: boolean; batReplaceability?: number; batPresent?: boolean; activeBatFaults?: number[]; batReplacementDescription?: string; batQuantity?: number; batChargeState?: number; batTimeToFullCharge?: number | null; batFunctionalWhileCharging?: boolean; batChargingCurrent?: number | null; activeBatChargeFaults?: number[]; } //# sourceMappingURL=clusterTypes.d.ts.map