Home Assistant CLI
Advanced Home Assistant control using the official hass-cli tool. Features auto-completion, event monitoring, history queries, and rich output formatting. Alternative to the curl-b…
JonesChi
@joneschi
What This Skill Does
Command-line interface for controlling Home Assistant smart home devices using the official hass-cli tool. Supports entity listing, device control, service calls, scene activation, event monitoring, and history queries with auto-completion and rich output formatting.
Replaces manual Home Assistant web UI interactions or curl-based API calls by providing a dedicated CLI with auto-completion, event monitoring, and formatted output.
When to Use It
- List all light entities and their current states
- Turn on a specific light with a brightness value
- Watch real-time state changes for all devices
- Activate a scene for movie time or bedtime
- Query the state history of a sensor over the last hour
- Call a custom service like homeassistant.toggle on a switch
Install
$ openclaw skills install @joneschi/homeassistant-cliHome Assistant CLI
Control your Home Assistant smart home devices using the official hass-cli tool — a feature-rich command-line interface with auto-completion, event monitoring, and flexible output formatting.
Why This Skill vs. homeassistant (curl-based)?
Choose homeassistant-cli if you want:
- ✅ Auto-completion for entity IDs and services (bash/zsh/fish)
- ✅ Event monitoring in real-time (
hass-cli event watch) - ✅ History queries (
hass-cli state history) - ✅ Better output formatting (table/YAML/JSON with one flag)
- ✅ Interactive exploration (easier to discover entities and services)
- ✅ Comprehensive documentation with examples and troubleshooting
Choose homeassistant (curl) if you want:
- ✅ Zero dependencies (curl + jq are pre-installed)
- ✅ Lightweight and fast
- ✅ Better for scripting and automation
- ✅ No Python requirements
Both work great — this skill is for users who interact frequently with Home Assistant and want a richer CLI experience.
Setup
Before using hass-cli, configure authentication:
-
Generate a long-lived access token in Home Assistant:
- Navigate to your profile:
https://your-homeassistant:8123/profile - Scroll to "Long-Lived Access Tokens"
- Create a new token
- Navigate to your profile:
-
Set environment variables (add to shell config for persistence):
export HASS_SERVER=https://homeassistant.local:8123 export HASS_TOKEN=<your-token> -
Test connection:
hass-cli info
Common Commands
List Entities
# List all entities
hass-cli state list
# Filter by domain
hass-cli state list light
hass-cli state list switch
hass-cli state list sensor
# Get specific entity state
hass-cli state get light.living_room
Control Devices
# Turn on/off lights
hass-cli service call light.turn_on --arguments entity_id=light.living_room
hass-cli service call light.turn_off --arguments entity_id=light.living_room
# Set brightness (0-255)
hass-cli service call light.turn_on --arguments entity_id=light.bedroom,brightness=128
# Turn on/off switches
hass-cli service call switch.turn_on --arguments entity_id=switch.fan
hass-cli service call switch.turn_off --arguments entity_id=switch.fan
# Toggle any device
hass-cli service call homeassistant.toggle --arguments entity_id=light.kitchen
List and Call Services
# List all services
hass-cli service list
# Filter services
hass-cli service list light
hass-cli service list 'home.*toggle'
# Get service details (YAML output)
hass-cli -o yaml service list homeassistant.toggle
Work with Scenes
# List scenes
hass-cli state list scene
# Activate a scene
hass-cli service call scene.turn_on --arguments entity_id=scene.movie_time
Monitor Events
# Watch all events
hass-cli event watch
# Watch specific event type
hass-cli event watch state_changed
hass-cli event watch automation_triggered
History
# Get state history (last 50 minutes)
hass-cli state history --since 50m light.living_room
# Multiple entities
hass-cli state history --since 1h light.living_room switch.fan
Output Formats
Control output with -o or --output:
# Table (default)
hass-cli state list
# YAML
hass-cli -o yaml state get light.living_room
# JSON
hass-cli -o json state list light
# No headers (for scripting)
hass-cli --no-headers state list
Tips
- Entity discovery: Use
hass-cli state listto find entity IDs - Service discovery: Use
hass-cli service listto find available services - Auto-completion: See references/autocomplete.md for shell setup
- Troubleshooting: See references/troubleshooting.md
Examples
See references/examples.md for common automation patterns and use cases.
Top skills in this category
Gog
@steipeteGoogle Workspace CLI for Gmail, Calendar, Drive, Contacts, Sheets, and Docs.
API Gateway
@byungkyuCall third-party APIs through the Maton gateway, which injects the credential for an app the user has already connected. Use this skill when the user names a connected app and a concrete action in it - read a mailbox, query a CRM, file an issue, update a spreadsheet, run a query through a connected
Notion
@steipeteNotion API for creating and managing pages, databases, and blocks.
Mcporter
@steipeteUse the mcporter CLI to list, configure, auth, and call MCP servers/tools directly (HTTP or stdio), including ad-hoc servers, config edits, and CLI/type generation.
Caldav Calendar
@asleep123Sync and query CalDAV calendars (iCloud, Google, Fastmail, Nextcloud, etc.) using vdirsyncer + khal. Works on Linux.