skills$openclaw/dyson-cli
tmustier67

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.

67 stars7.4k forksSecurity L1
Updated Feb 7, 2026Created Feb 7, 2026devops

Skill Snapshot

namedyson-cli
descriptionControl 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.
ownertmustier
repositorytmustier/dyson-cli
languageMarkdown
licenseMIT
topics
securityL1
installopenclaw add @tmustier/dyson-cli
last updatedFeb 7, 2026

Maintainer

tmustier

tmustier

Maintains dyson-cli in the OpenClaw Skills directory.

View GitHub profile
File Explorer
9 files
.
src
dyson_cli
__init__.py
86 B
cli.py
21.5 KB
config.py
1.6 KB
_meta.json
280 B
pyproject.toml
1.5 KB
README.md
4.1 KB
SKILL.md
2.2 KB
SKILL.md

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

  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:

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:

  1. Check device is online: dyson list --check
  2. Ensure on same WiFi network as the Dyson
  3. Re-run setup if credentials expired: dyson setup

For installation, device setup, and full documentation, see README.md.

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:

  1. Send an OTP to your Dyson account email
  2. Prompt for OTP and your Dyson account password
  3. Fetch your device credentials
  4. 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

CommandDescription
dyson setupConfigure device credentials
dyson listList configured devices
dyson list --checkList with online/offline status
dyson statusShow device status
dyson onTurn device on
dyson offTurn 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|offControl 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.