This project is looking for a new maintainer. Let me know if you are interested.
Fork of Charles Blonde's libpurecoolink library: link
This Python 3.4+ library allows you to control Dyson fan/purifier devices and Dyson 360 Eye robot vacuum device.
This library is becoming quite stable but backward compatibility is not yet guaranteed.
Device firmware is occasionally updated along with the Dyson API, so functionality may be disrupted while we interpret the changes.
https://libpurecool.readthedocs.io
- Dyson pure cool tower (TP04)
- Dyson pure cool desk (DP04)
- Dyson pure cool link devices (Tower and Desk)
- Dyson pure cool+hot devices (HP02 and HP04)
- Dyson 360 Eye robot vacuum
The following feature are supported:
- Purifier/fan devices
- Connect to the device using discovery or manually with IP Address
- Turn on/off
- Set speed
- Turn on/off oscillation
- Set Auto mode
- Set night mode
- Set sleep timer
- Set Air Quality target (Normal, High, Better)
- Enable/disable standby monitoring (the device continue to update sensors when in standby)
- Reset filter life
- Adjust oscillation angle (TP04/DP04)
- Cool+Hot purifier/fan devices
- Set heat mode
- Set heat target
- Set fan focus mode (HP02)
- 360 Eye device (robot vacuum)
- Set power mode (Quiet/Max)
- Start cleaning
- Pause cleaning
- Resume cleaning
- Abort cleaning
The following sensors are available for fan/purifier devices:
- Humidity
- Temperature in Kelvin
- Dust (unknown metric)
- Air quality (unknown metric)
Please read official documentation
Dyson devices use many different protocols in order to work:
- HTTPS to Dyson API in order to get devices information (credentials, historical data, etc ...)
- MDNS to discover devices on the local network
- MQTT (with auth) to get device status and send commands
To my knowledge, no public technical information about API/MQTT are available so all the work was done by testing and a lot of properties are unknown at this time.
This library comes with a modified version of Zeroconf because the Dyson MDNS implementation is not valid.
This documentation helped me understand some of return values.
- Better protocol understanding
- Better technical documentation on how it is working
- Get historical data from the API (air quality, etc ...)