Skip to main content

CLI for managing and controlling Shelly devices

Project description

shelly

A fast CLI for discovering, monitoring, and controlling Shelly smart home devices.

CI crates.io PyPI License: MIT

Features

  • Auto-discovery of Shelly devices on the local network (with subnet auto-detection)
  • Unified Gen1 + Gen2/Gen3 support (transparent protocol handling)
  • RGB / RGBW / CCT / dimmable light control (shelly light, Gen2/Gen3)
  • Multi-channel device support, per-plug control via --id (e.g., Shelly 2.5 dual relays, PowerStrip)
  • Interactive watch dashboard with live power, temperature, WiFi monitoring -- and switch control
  • Energy consumption tracking (total kWh per device)
  • Detailed device info view (model, firmware, uptime, WiFi, temperature)
  • Device health checks (temperature, WiFi signal, firmware, uptime)
  • Device authentication (--password flag or config file)
  • Device groups with filter-based and name-based definitions
  • Firmware check and update across all devices
  • Config backup and restore with network-safe defaults
  • Schedule and webhook inspection (Gen2/Gen3)
  • Device renaming and configuration from the CLI
  • Structured JSON output for scripting and AI agent integration
  • Shell completions with dynamic device name suggestions (bash, zsh, fish)
  • Fuzzy device name matching with "did you mean?" suggestions
  • Color output with automatic detection

Install

uv (recommended)

uv tool install shelly-cli

Homebrew (macOS/Linux)

brew install rvben/tap/shelly-cli

pip

pip install shelly-cli

Cargo

cargo install shelly-cli

Pre-built binaries

Download from GitHub Releases.

Quick Start

# 1. Discover devices (auto-detects your subnet)
shelly discover

# 2. See what you found
shelly devices

# 3. Check device health
shelly health

Usage

Device control

shelly on "Kitchen Light"          # Turn on
shelly off "Kitchen Light"         # Turn off
shelly toggle -n "Living Room"     # Toggle
shelly status -n "Kitchen Light"   # Get status

For multi-channel devices (dual relays, power strips), select a specific plug/channel with --id (defaults to 0). The available switch IDs are listed by shelly info.

shelly info -n "Office Strip"           # Lists Switch 0, Switch 1, ...
shelly on  -n "Office Strip" --id 1     # Turn on plug 1
shelly off -n "Office Strip" --id 3     # Turn off plug 3
shelly switch status -n "Office Strip" --id 2   # Status of plug 2

Light control (Gen2/Gen3 RGB / RGBW / CCT / dimmable)

shelly light on  -n "Desk Lamp" --color '#00ff88'        # RGB color (hex)
shelly light on  -n "Desk Lamp" --color warm             # named color
shelly light on  -n "Desk Lamp" --rgb 0,255,136 --brightness 80
shelly light set -n "Desk Lamp" --brightness 40          # change brightness, keep power state
shelly light on  -n "Strip" --rgb 255,0,0 --white 0      # RGBW: color + white channel
shelly light on  -n "Bulb" --temp 3000 --brightness 60   # CCT: color temperature (Kelvin)
shelly light off -n "Desk Lamp"
shelly light toggle -n "Desk Lamp"
shelly light status -n "Desk Lamp"

--id selects the component on multi-light devices (default 0). Brightness is 1-100 for RGB/RGBW and 0-100 for CCT/dimmable. --color accepts hex (#rrggbb) or a name (red, green, blue, white, warm, cyan, magenta, yellow, orange, purple, pink, off); --rgb takes r,g,b each 0-255.

Monitoring

shelly watch                       # Interactive dashboard
shelly health                      # Health check all devices
shelly power -a                    # Power usage for all devices
shelly energy -a                   # Total energy (kWh) per device
shelly info -n "Kitchen Light"     # Detailed device info

Device management

shelly rename -n "old-name" "New Name"    # Rename device
shelly firmware check -a                   # Check for updates
shelly firmware update -a                  # Update all firmware
shelly reboot -n "Kitchen Light"          # Reboot device

Configuration

shelly config get -n "Kitchen"                  # Get device config (JSON)
shelly config get -a                            # Get config for all devices
shelly config set -n "Kitchen" eco_mode true    # Set a config value
shelly config set -n "Kitchen" name "New Name"  # Rename via config

Supported config keys: name, eco_mode, led_status_disable.

Backup and restore

shelly backup -n "Kitchen"         # Backup single device
shelly backup -a                   # Backup all devices to shelly-backups/
shelly backup -a -o ~/backups      # Custom output directory

shelly restore -n "Kitchen" shelly-backups/kitchen-2025-01-15.json

Restore skips network/WiFi/MQTT/cloud settings to avoid bricking devices.

Schedules and webhooks

shelly schedule list -n "Kitchen"  # View device schedules (Gen2/Gen3)
shelly schedule list -a            # View all device schedules

shelly webhook list -n "Kitchen"   # View device webhooks
shelly webhook list -a             # View all device webhooks

Groups

shelly group add lights "Kitchen" "Living Room" "Bedroom"
shelly group list
shelly group show lights
shelly -g lights off               # Turn off all lights
shelly -g lights status            # Status of all lights
shelly -g gen3 firmware check      # Check firmware for Gen3 devices

Authentication

For devices with authentication enabled:

# Per-command
shelly --password "secret" status -a

# Or set in config file (~/.config/shelly-cli/config.toml)
# [auth]
# password = "secret"

Shell completions

# Generate completions (includes dynamic device name suggestions)
shelly completions zsh > ~/.zfunc/_shelly    # zsh
shelly completions bash > /etc/bash_completion.d/shelly  # bash
shelly completions fish > ~/.config/fish/completions/shelly.fish  # fish

# After installing, tab-complete device names:
# shelly -n <TAB>  →  "Kitchen Light"  "Living Room"  "Bedroom Fan"
# shelly -g <TAB>  →  "lights"  "gen1"  "gen3"

Agent Integration

Designed for scripting and AI agent use with structured, machine-readable output.

# Structured JSON output (auto-enabled when piped)
shelly status -a | jq '.data'

# Consistent envelope: {"ok": true, "data": ...} or {"ok": false, "error": {...}}
shelly -n "nonexistent" status
# {"ok": false, "error": {"code": "DEVICE_NOT_FOUND", "message": "..."}}

# Machine-readable schema with types, targeting docs, and error codes
shelly schema

Error codes: DEVICE_NOT_FOUND, DEVICE_UNREACHABLE, AUTH_REQUIRED, NETWORK_ERROR, INVALID_INPUT, GROUP_NOT_FOUND, NO_CACHED_DEVICES, PARTIAL_FAILURE.

Groups Configuration

Groups are defined in a TOML file:

# ~/.config/shelly-cli/groups.toml (Linux)
# ~/Library/Application Support/shelly-cli/groups.toml (macOS)

[groups]
lights = ["Kitchen Light", "Living Room Light", "Bedroom Light"]
gen1 = { filter = "gen1" }
gen3 = { filter = "gen3" }
all = { filter = "all" }

Or manage via CLI: shelly group add, shelly group remove, shelly group show.

Supported Devices

Generation Examples Status
Gen1 Shelly 1, 1PM, 2.5, Plug S, Dimmer Supported (switch, power, firmware, config)
Gen2 Shelly Plus 1, Plus 1PM, Plus 2PM Supported (switch, power, firmware, config, schedules, webhooks)
Gen3 Shelly Mini 1PM G3, Plus series G3, PowerStrip 4 (S4PL) Supported (switch, power, firmware, config, schedules, webhooks)

License

MIT License -- see LICENSE file.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

shelly_cli-0.1.12.tar.gz (87.5 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

shelly_cli-0.1.12-py3-none-win_amd64.whl (5.8 MB view details)

Uploaded Python 3Windows x86-64

shelly_cli-0.1.12-py3-none-manylinux_2_28_x86_64.whl (6.3 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ x86-64

shelly_cli-0.1.12-py3-none-manylinux_2_28_aarch64.whl (5.9 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

shelly_cli-0.1.12-py3-none-macosx_11_0_arm64.whl (5.3 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

shelly_cli-0.1.12-py3-none-macosx_10_12_x86_64.whl (5.6 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file shelly_cli-0.1.12.tar.gz.

File metadata

  • Download URL: shelly_cli-0.1.12.tar.gz
  • Upload date:
  • Size: 87.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for shelly_cli-0.1.12.tar.gz
Algorithm Hash digest
SHA256 098a16e3ea9730fa1b2a7b2e96a92539cfc5b96983aa637bb8f559e648d41b9b
MD5 30d9207c1baf1104c5498108345623a6
BLAKE2b-256 9dd7213de0abddf9aa4c4d53f5cde09aa01470119086b5cd45fb98d36590479b

See more details on using hashes here.

File details

Details for the file shelly_cli-0.1.12-py3-none-win_amd64.whl.

File metadata

  • Download URL: shelly_cli-0.1.12-py3-none-win_amd64.whl
  • Upload date:
  • Size: 5.8 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for shelly_cli-0.1.12-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 35190c9e63d5ea91c8f185bdd9ca29c717d2cdbe9f35c43752458d56c040d062
MD5 f44a110edce893789104f8de722a534e
BLAKE2b-256 674e6c4fef61a9d88b799ec7aa4d49aae76db03f15327b2b915d8ab8f70932be

See more details on using hashes here.

File details

Details for the file shelly_cli-0.1.12-py3-none-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for shelly_cli-0.1.12-py3-none-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b4f3c76f0c1fb152ebdb29f9418209d87d1421dc4188c4d2cf4788cb628c4747
MD5 5aa40fa809094405528c35aac8194344
BLAKE2b-256 f8172be6fe04a3806f1a921371e583de7e72aa3f85ec6f29d0e655ffe1b9b76d

See more details on using hashes here.

File details

Details for the file shelly_cli-0.1.12-py3-none-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for shelly_cli-0.1.12-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b70071b022f4c708289a63908f250c2e4f80462aad30639917654574820efd51
MD5 4393c159c1a2ff9923c4918d939336da
BLAKE2b-256 8677099f0838672e67449fe3d878e296e4b30ef130404a769c7819da974c28c2

See more details on using hashes here.

File details

Details for the file shelly_cli-0.1.12-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for shelly_cli-0.1.12-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5c26295880473e1d6d34ba281a624599ef29e43d8c6ef791fa2ab06611f052ac
MD5 4eb064c8ae0359c059a1f14491d26e85
BLAKE2b-256 2d4eaa94cca3e347f8e2e51c99a4ae0987b0d292fed7303bc35b97ea5f987e04

See more details on using hashes here.

File details

Details for the file shelly_cli-0.1.12-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for shelly_cli-0.1.12-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 b8f4dd0464a610b9e9bfd8f203328d797296cf967b3f442b40a7e5a3d4704115
MD5 eed710c68e0c3bc806730baaecb1b92e
BLAKE2b-256 36c3e17b8461b96e2ed20e6e321d8477a44d3f294d4f84a56a9bb16d2d2cbcc1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page