UNPKG

matterbridge-dyson-robot

Version:

A Matterbridge plugin that connects Dyson robot vacuums and air treatment devices to the Matter smart home ecosystem via their local or cloud MQTT APIs.

122 lines 6 kB
// Matterbridge plugin for Dyson robot vacuum and air treatment devices // Copyright © 2025-2026 Alexander Thoukydides import { DysonDeviceAirBase } from './dyson-device-air-base.js'; import { DysonDeviceAirHeatMixin } from './dyson-device-air-heat.js'; // ============================================================================= // Dyson Pure (Hot)+Cool Link family... // Dyson Pure Cool Link export class DysonDeviceAirCoolLink extends DysonDeviceAirBase { static model = { type: '475', number: 'TP02', name: 'Pure Cool Link' }; static filters = { hepa: ['972426-01'] }; } // Dyson Pure Cool Link alias without significant functional differences export class DysonDeviceAirCoolLinkDesk extends DysonDeviceAirCoolLink { static model = { type: '469', number: 'DP01', name: 'Pure Cool Link Desk' }; static filters = { hepa: ['972425-01'] }; } // ----------------------------------------------------------------------------- // Dyson Pure Hot+Cool Link export class DysonDeviceAirHotCoolLink extends DysonDeviceAirHeatMixin(DysonDeviceAirCoolLink) { static model = { type: '455', number: 'HP02', name: 'Pure Hot+Cool Link' }; static filters = { hepa: ['972425-01'] }; } // Dyson Pure Hot+Cool Link alias without significant functional differences export class DysonDeviceAirHotCoolLinkA extends DysonDeviceAirHotCoolLink { static model = { type: '455A', number: 'HP02', name: 'Pure Hot+Cool Link' }; } // ============================================================================= // Dyson Pure Cool family... // Common base class for Dyson Pure (Humidify|Hot+)Cool family devices export class DysonDeviceAirCoolBase extends DysonDeviceAirBase { static filters = { hepa: ['965432-01'] }; } // ----------------------------------------------------------------------------- // Dyson Pure Cool export class DysonDeviceAirCool extends DysonDeviceAirCoolBase { static model = { type: '438', number: 'TP04/TP06', name: 'Pure Cool' }; } // Dyson Pure Cool aliases without significant functional differences export class DysonDeviceAirCoolE extends DysonDeviceAirCool { static model = { type: '438E', number: 'TP07/TP09', name: 'Pure Cool Formaldehyde' }; } export class DysonDeviceAirCoolK extends DysonDeviceAirCool { static model = { type: '438K', number: 'TP07/TP09/TP12/PC2', name: 'Pure Cool Formaldehyde' }; } export class DysonDeviceAirCoolM extends DysonDeviceAirCool { static model = { type: '438M', number: 'TP11/PC1', name: 'Pure Cool' }; } export class DysonDeviceAirCoolDesk extends DysonDeviceAirCool { static model = { type: '520', number: 'DP04', name: 'Pure Cool Desk' }; } // ----------------------------------------------------------------------------- // Dyson Pure Humidify+Cool export class DysonDeviceAirHumidifyCool extends DysonDeviceAirCoolBase { static model = { type: '358', number: 'PH01/PH02', name: 'Pure Humidify+Cool' }; } // Dyson Pure Humidify+Cool aliases without significant functional differences export class DysonDeviceAirHumidifyCoolE extends DysonDeviceAirHumidifyCool { static model = { type: '358E', number: 'PH03/PH04', name: 'Pure Humidify+Cool' }; } export class DysonDeviceAirHumidifyCoolK extends DysonDeviceAirHumidifyCool { static model = { type: '358K', number: 'PH04/PH05', name: 'Pure Humidify+Cool Formaldehyde' }; } // ----------------------------------------------------------------------------- // Dyson Pure Hot+Cool export class DysonDeviceAirHotCool extends DysonDeviceAirHeatMixin(DysonDeviceAirCool) { static model = { type: '527', number: 'HP04/HP06', name: 'Pure Hot+Cool' }; } // Dyson Pure Hot+Cool aliases without significant functional differences export class DysonDeviceAirHotCoolE extends DysonDeviceAirHotCool { static model = { type: '527E', number: 'HP07', name: 'Purifier Hot+Cool' }; } export class DysonDeviceAirHotCoolK extends DysonDeviceAirHotCool { static model = { type: '527K', number: 'HP09', name: 'Purifier Hot+Cool Formaldehyde' }; } export class DysonDeviceAirHotCoolM extends DysonDeviceAirHotCool { static model = { type: '527M', number: 'HP1/HP11', name: 'Purifier Hot+Cool' }; } // ============================================================================= // Dyson Big+Quiet family... // All Dyson Big+Quiet devices share the same type code export class DysonDeviceAirBigQuiet extends DysonDeviceAirBase { static model = { type: '664', number: 'BP02/BP03/BP04/BP06', name: 'Purifier Big+Quiet Series' }; static filters = { hepa: ['972132-01'], carbon: ['972133-03'] }; } // ============================================================================= // Dyson Cool family... (fan only; no purification) // Dyson Cool export class DysonDeviceCool extends DysonDeviceAirBase { static model = { type: '739', number: 'CF1/AM12', name: 'Cool' }; static filters = {}; } // ============================================================================= // Dyson HushJet family... (fan only; no purification) // Dyson HushJet Purifier Compact export class DysonDeviceAirHushJet extends DysonDeviceAirBase { static model = { type: '897', number: 'HJ10', name: 'HushJet Purifier Compact' }; static filters = { hepa: ['975060-01'], carbon: ['975061-01'] }; } // ============================================================================= // List of constructors for Dyson air treatment devices export const DYSON_DEVICE_TYPES_AIR = [ DysonDeviceAirCool, DysonDeviceAirCoolDesk, DysonDeviceAirCoolE, DysonDeviceAirCoolK, DysonDeviceAirCoolM, DysonDeviceAirCoolLink, DysonDeviceAirCoolLinkDesk, DysonDeviceAirHotCool, DysonDeviceAirHotCoolE, DysonDeviceAirHotCoolK, DysonDeviceAirHotCoolM, DysonDeviceAirHotCoolLink, DysonDeviceAirHotCoolLinkA, DysonDeviceAirHumidifyCool, DysonDeviceAirHumidifyCoolE, DysonDeviceAirHumidifyCoolK, DysonDeviceAirBigQuiet, DysonDeviceCool, DysonDeviceAirHushJet ]; //# sourceMappingURL=dyson-device-air.js.map