Skip to content

Repository files navigation

Dyson Integration for Home Assistant

Dyson Logo

GitHub Release GitHub Activity License hacs Codecov

A core-ready Home Assistant integration for Dyson air purifiers, heaters, humidifiers, fans, lights, and robotic vacuums featuring real-time MQTT communication, BLE proxy compatibility, and complete platform coverage.

Current Features

All Supported Devices

  • Cloud Discovery - Automatic device detection via Dyson API
  • Manual Setup - Sticker-based or network-isolated configuration for local devices
  • Static IP Configuration - Bypass mDNS with static IP/hostname for reliable connectivity
  • Capability Based Detection - Automatic platform setup based on device features

Environmental Cleaners (Fans/Purifiers)

  • Fan Control - Speed adjustment (1-10), on/off, night mode
  • Air Quality Monitoring - PM2.5, PM10, real-time sensor data
  • Smart Controls - Auto mode, oscillation
  • Status Monitoring - Connectivity, filter life, fault detection, firmware version
  • Precise Adjustments - Timers, oscillation angles
  • Heating Support - Climate Control with Heater mode, Heater Thermostat, and Fan Direction
  • Humidifier Support Humidifier entity with set point, current level and empty tank alerts
  • Climate Control - Climate Control with Humidistat (Experimental)

Robotic Vacuums

  • Start Controls - Individual buttons for room cleaning in addition to support for zone cleaning introduced in Home Assistant 2026.3.0. Start button on the device object cleans all configured spaces.
  • Mid-run Controls - Pause, Resume, and Stop (Return to Dock)
  • Vacuum Status - Battery level, Unique Identifier for Current Cleaning Session (for future use)

Lights

  • Basic Controls - Lights may be set to on/off/color temp/brightness
  • Scene Support - Lights may be controlled as part of a Home Assistant Scene
  • Active BLE Proxy connections - Lights may be added as their own hub and connect through Bluetooth Proxies

Quick Start

Installation

  1. Install Integration via HACS

    • Open HACS in Home Assistant
    • Search for "Dyson"
    • Click Download
    • Restart Home Assistant

    Can't find it? If the integration does not appear in HACS search, you can add it manually as a custom repository:

    • Go to Settings (three dots menu) in HACS
    • Select Custom repositories
    • Add repository URL: https://github.com/cmgrayb/hass-dyson
    • Select category: Integration
    • Click Add, then search for and download Dyson as above

Setup

  1. Go to SettingsDevices & ServicesAdd Integration
  2. Search for "Dyson"
  3. Choose setup method:
    • Cloud Discovery - Enter Dyson account credentials
    • Manual Setup - Enter device details from sticker or information gained through the Get Cloud Devices Action, or external tooling such as libdyson-rest or opendyson

Configuration

Cloud Account Configuration (Recommended)

When selecting Cloud Discovery, you'll be guided through the following steps:

Step 1: Account Credentials

  • Email or Mobile Number: Your Dyson account email address or mobile number if in CN region

  • Country: Verify your country and culture (affects API region and localization)

  • Password: Your Dyson account password if using email

  • OTP: The one-time password sent to your email by Dyson if using email, or the one-time password sent to your mobile device if not

Step 2: Default Connection Method

Choose your preferred default connection method for your devices:

  • Local Only: Talks to the device only through the device's MQTT server

    • Maximum privacy, can be used without internet access for the device
    • Susceptible to local device MQTT server failures and mDNS resolution issues
    • Note: This mode is most similar to the ha-dyson integration
    • When using this approach, we highly recommend assigning a DHCP reservation or using a static IP to minimize mDNS broadcast issues
  • Local with Cloud Fallback: Stays local until and unless the local server cannot be reached, then reconnects to the device through the Dyson-hosted MQTT Proxy service.

    • Balances privacy and uptime by only using cloud when necessary
    • Attempts to reconnect to local periodically
    • Allows the user to reconnect to local manually through the Reconnect button
  • Cloud with Local Fallback: Stays on the Dyson MQTT Proxy service until and unless internet access is lost, then reconnects to the device directly

    • Uses an encrypted connection as often as possible but switches to local to maintain connectivity in the event of internet outage
    • Attempts to reconnect to cloud periodically
    • Allows the user to reconnect to cloud manually through the Reconnect button
  • Cloud Only: Stays on the Dyson MQTT Proxy

    • Useful for environments which cannot support mDNS
    • Can be used to control Dyson devices on other networks for remote management
    • All communication with the device is encrypted in transit

Note: Each device may individually override its preferred connection method once discovered

Step 3: Device Discovery Configuration

Choose your preference for level of control of discovery:

  • Poll for New Devices: If selected, the API will be queried for new devices periodically, making them available for discovery
  • Automatically Add Discovered Devices: Uses the information from polling your Dyson account to connect to the devices using your Default Connection Method

Scenarios:

  1. I want my Dyson devices to show up in Home Assistant as soon as they are found

    • Leave both checkboxes selected
  2. I want Home Assistant to ask me to add my devices as they are found so I can choose which ones to add or ignore

    • Only select Poll for New Devices, leave Automatically Add Discovered Devices unchecked.
  3. I want to add my Dyson devices individually and manually or I am only interested in using the Get Cloud Devices Action

    • Deselect both checkboxes
    • For more information, see: Actions

Expected Entities Per Device

Based on your device capabilities and category, you'll automatically get:

All Devices (Basic Support):

  • Basic binary sensors (online/offline, faults)

WiFi-Enabled Devices (EC/Robot Categories):

  • Connection status sensor (Local/Cloud/Disconnected)
  • Reconnect button to attempt to re-establish preferred connectivity
  • WiFi signal strength sensor (diagnostic)
  • Temperature sensor
  • Humidity sensor
  • Carbon filter sensors
  • HEPA filter sensors

Air Quality Models (ExtendedAQ Capability):

  • PM2.5 air quality sensor
  • PM10 air quality sensor
  • HEPA filter life sensor (%)
  • HEPA filter type sensor
  • Carbon filter life sensor (%)
  • Carbon filter type sensor
  • VOC sensor
  • NO2/NOx sensor
  • CO2 sensor
  • HCHO/Formaldehyde sensor

Heating models (Heating Capability):

  • Climate control platform
  • HVAC Controls:
    • Mode control: Heat/Fan only/Off
    • Heat minimum temperature (thermostat)

Humidifier models (Humidifier Capability):

  • Climate control platform
  • Humidifier Controls:
    • Mode control: Humidify/Fan only/Off
    • Humidifier minimum humidity (humidistat)
    • Empty tank diagnostic sensor

Robotic Vacuum models (Robot Category) (360/Heurist/Vis Nav, etc.):

  • Vacuum platform
    • Start Controls - Clean Zone, Clean Room, Clean Global
    • Mid-run Controls - Pause, Resume, and Stop (Return to Dock)
    • Vacuum Status - Battery level, Unique Identifier for Current Cleaning Session

Setup Time

  • Initial connection: 10-30 seconds
  • Device discovery: 5-15 seconds per device
  • Entity creation: Values may take a minute or two to show up after new device creation or boot

Troubleshooting Cloud Setup

  • Invalid credentials: Verify email/password and account region
  • No devices found: Ensure devices are registered in Dyson app
  • Connection timeout: Check internet connection and Dyson API status
  • Partial device data: Some devices may need additional setup time

Manual/Sticker Setup (Advanced Use Case such as isolated network)

Please note: some features (like Firmware version) will not work without access to the Cloud API

Required information from device sticker, libdyson-rest, or opendyson:

  • Serial Number (e.g., MOCK-SERIAL-TEST123)
  • Device Password (from sticker)
  • MQTT Prefix (e.g., 438M for Pure Cool models)
  • Device Type (e.g., EC for air purifiers)

YAML Configuration (Optional, Not Recommended)

hass_dyson:
  devices:
    - serial_number: "MOCK-SERIAL-TEST123"
      discovery_method: "sticker"
      hostname: "192.168.1.100" # Optional: IP address
      credential: "your_device_password"
      device_type: "ec"
      mqtt_prefix: "438M"
      capabilities: ["AdvanceOscillationDay1", "Scheduling", "ExtendedAQ"]

Documentation

Additional Information

  • Actions - Information on included Home Assistant Actions
  • Controls - Information on included controls for devices
  • Device Compatibility Matrix - Complete breakdown of which entities are available for each device type and capability
  • Device Management - Information on device discovery and configuration
  • Entities - Information on entities to expect for a given device type
  • Sensors - Information on included sensors for devices
  • Lights - Information on Active BLE lights
  • Supported Devices - Information on devices tested and known to be supported

Quick References

For Developers

Requirements

  • Home Assistant 2025.12+
  • Python 3.11+
  • Dependencies (auto-installed):
    • libdyson-rest>=0.12.1
    • paho-mqtt>=2.1.0
    • cryptography>=45.0.7

Acknowledgments

  • libshenxn - For getting the Dyson community started with the original libdyson
  • dotvezz - For maintaining the libdyson-wg working group, ha-dyson, and opendyson, the inspiration for this integration
  • libdyson-wg - For maintaining excellent documentation and tooling without which this integration would not have been possible
  • paho-mqtt - Reliable MQTT communication library
  • Home Assistant - Amazing home automation platform
  • Dyson - For making great products worth putting in the work for

Star History

Star History Chart

If you like our work, please give us a star!

Sponsorship

This integration is provided free of charge and there is no requirement expressed or implied to donate. Any money contributed through the sponsorship button as a gift goes to development devices to further improve this integration.

License

This project is licensed under the MIT License - see the LICENSE file for details.


⚠️ Disclaimer: This is an unofficial integration not affiliated with Dyson Ltd. Use at your own risk.

About

Unofficial Home Assistant integration for Dyson fans, vacuums, and lights

Topics

Resources

Stars

85 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages