67★by tmustier
dyson-cli – OpenClaw Skill
dyson-cli is an OpenClaw Skills integration for devops workflows. Control Dyson air purifiers, fans, and heaters via local MQTT. Use when asked to control Dyson devices, adjust fan speed, set temperature/heat, enable oscillation, or check room temperature/humidity. Requires being on the same WiFi network as the device.
Skill Snapshot
| name | dyson-cli |
| description | Control Dyson air purifiers, fans, and heaters via local MQTT. Use when asked to control Dyson devices, adjust fan speed, set temperature/heat, enable oscillation, or check room temperature/humidity. Requires being on the same WiFi network as the device. OpenClaw Skills integration. |
| owner | tmustier |
| repository | tmustier/dyson-cli |
| language | Markdown |
| license | MIT |
| topics | |
| security | L1 |
| install | openclaw add @tmustier/dyson-cli |
| last updated | Feb 7, 2026 |
Maintainer

name: dyson-cli description: Control Dyson air purifiers, fans, and heaters via local MQTT. Use when asked to control Dyson devices, adjust fan speed, set temperature/heat, enable oscillation, or check room temperature/humidity. Requires being on the same WiFi network as the device.
Dyson CLI
Prerequisites
- CLI installed at
~/dyson-cliwith venv - Must be on same WiFi as the Dyson - local MQTT only, won't work remotely
Quick check:
cd ~/dyson-cli && source .venv/bin/activate && dyson list --check
Commands
Power
dyson on # Turn on
dyson off # Turn off
Fan Control
dyson fan speed 5 # Speed 1-10
dyson fan speed auto # Auto mode
dyson fan oscillate on # Enable oscillation
dyson fan oscillate on -a 90 # 90° sweep (45/90/180/350)
dyson fan oscillate off # Disable oscillation
Heat Control (Hot+Cool models)
dyson heat on # Enable heating
dyson heat off # Disable heating
dyson heat target 22 # Set target temp (°C)
Other
dyson night on # Night mode on
dyson night off # Night mode off
dyson status # Show current state
dyson status --json # JSON output
Multiple Devices
Use -d <name> to target a specific device:
dyson on -d "Bedroom"
dyson fan speed auto -d "Office"
Common Patterns
# "Turn on the Dyson and set to auto"
dyson on && dyson fan speed auto
# "Heat to 23 degrees"
dyson heat on && dyson heat target 23
# "Turn on with gentle oscillation"
dyson on && dyson fan speed 3 && dyson fan oscillate on -a 45
# "What's the current temperature?"
dyson status --json | python3 -c "import sys,json; d=json.load(sys.stdin); print(f\"Temp: {d['temperature']-273:.1f}°C, Humidity: {d['humidity']}%\")"
Troubleshooting
If commands fail:
- Check device is online:
dyson list --check - Ensure on same WiFi network as the Dyson
- Re-run setup if credentials expired:
dyson setup
For installation, device setup, and full documentation, see README.md.
dyson-cli
A command-line interface for controlling Dyson air purifiers, fans, and heaters.
Features
- 🔌 Local control - Communicates directly with your Dyson device over MQTT (no cloud required after setup)
- 🌡️ Full control - Power, fan speed, oscillation angles, heat mode, target temperature
- 📊 Status monitoring - View current state, air quality, and environmental data
- 🔐 Easy setup - Fetch credentials automatically via your Dyson account
Supported Devices
- Dyson Pure Cool Link (TP02, DP01)
- Dyson Pure Cool (TP04, DP04)
- Dyson Pure Hot+Cool Link (HP02)
- Dyson Pure Hot+Cool (HP04, HP06, HP07)
- Dyson Purifier Hot+Cool Formaldehyde (HP09)
- Dyson Pure Humidify+Cool (PH01, PH03, PH04)
- Dyson Purifier Big+Quiet (BP02, BP03, BP04)
Installation
pip install git+https://github.com/tmustier/dyson-cli.git
Or install from source:
git clone https://github.com/tmustier/dyson-cli.git
cd dyson-cli
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
Quick Start
1. Setup (one-time)
Fetch your device credentials via your Dyson account:
dyson setup --email you@example.com --region GB
This will:
- Send an OTP to your Dyson account email
- Prompt for OTP and your Dyson account password
- Fetch your device credentials
- Save them to
~/.dyson/config.json
Note: Use country codes for region (GB, US, DE, FR, etc.), not "EU".
2. List devices
dyson list # Show configured devices
dyson list --check # Also check if devices are online
3. Control your device
# Power
dyson on
dyson off
# Fan
dyson fan speed 5 # Set speed (1-10)
dyson fan speed auto # Auto mode
dyson fan oscillate on # Enable oscillation
dyson fan oscillate on -a 90 # 90° oscillation range
dyson fan oscillate on -a 180 # 180° sweep
dyson fan oscillate off # Disable
# Heat (Hot+Cool models only)
dyson heat on
dyson heat off
dyson heat target 22 # Set target temperature (°C)
# Night mode
dyson night on
dyson night off
# Status
dyson status # Show current state
dyson status --json # JSON output for scripting
Commands
| Command | Description |
|---|---|
dyson setup | Configure device credentials |
dyson list | List configured devices |
dyson list --check | List with online/offline status |
dyson status | Show device status |
dyson on | Turn device on |
dyson off | Turn device off |
dyson fan speed <1-10|auto> | Set fan speed or auto mode |
dyson fan oscillate <on|off> [-a ANGLE] | Control oscillation (45/90/180/350°) |
dyson heat on|off | Control heat mode |
dyson heat target <temp> | Set target temperature (1-37°C) |
dyson night <on|off> | Control night mode |
dyson default <name> | Set default device |
dyson remove <name> | Remove a device from config |
Multiple Devices
If you have multiple Dyson devices, use -d to target a specific one:
dyson status -d "Bedroom"
dyson on -d "Living Room"
dyson fan speed 5 -d "Office"
Set a default device:
dyson default "Living Room"
Configuration
Credentials are stored in ~/.dyson/config.json:
{
"devices": [
{
"name": "Living Room",
"serial": "XXX-XX-XXXXXXXX",
"credential": "...",
"product_type": "527K",
"ip": "192.168.1.100"
}
],
"default_device": "Living Room"
}
The IP address is auto-discovered on first dyson status call via mDNS.
How It Works
Dyson devices communicate locally via MQTT on port 1883. After initial setup (which requires your Dyson account), all control happens directly on your local network - no cloud required.
Important: You must be connected to the same WiFi network as your Dyson device. The CLI will not work remotely or from a different network.
Credits
Built on top of libdyson-neon, the actively maintained fork of libdyson that powers the Home Assistant Dyson integration.
License
MIT
Permissions & Security
Security level L1: Low-risk skills with minimal permissions. Review inputs and outputs before running in production.
Requirements
1. CLI installed at `~/dyson-cli` with venv 2. **Must be on same WiFi as the Dyson** - local MQTT only, won't work remotely **Quick check:** ```bash cd ~/dyson-cli && source .venv/bin/activate && dyson list --check ```
FAQ
How do I install dyson-cli?
Run openclaw add @tmustier/dyson-cli in your terminal. This installs dyson-cli into your OpenClaw Skills catalog.
Does this skill run locally or in the cloud?
OpenClaw Skills execute locally by default. Review the SKILL.md and permissions before running any skill.
Where can I verify the source code?
The source repository is available at https://github.com/openclaw/skills/tree/main/skills/tmustier/dyson-cli. Review commits and README documentation before installing.
