home-assistant-control
This skill handles natural language smart home commands by invoking the Home Assistant MCP server. It learns your preferences and routines from repeated use.
When to invoke
- When the user gives any home control command (lights, thermostat, locks, sensors)
- When the user asks for home status ("is anything left on?", "what's the temperature?")
- When the user asks to create an automation or routine
Steps to execute
Parse the command
- Identify: action (turn on/off/dim/set/check), entity (lights, thermostat, lock, TV), room/area, value (brightness %, temperature)
- Check MEMORY.md for user preferences: "always leave porch light on after 9pm", "default dim level 40%"
- If the command is ambiguous, ask one clarifying question
Check Home Assistant for entity names
- Use the HA MCP
list_entities tool to find the correct entity IDs for the named devices
- Example: "living room lights" →
light.living_room, light.living_room_lamp
- Cache entity mappings in memory for faster future lookups
Execute the action
- Call the appropriate HA MCP service:
- Lights:
light.turn_on, light.turn_off, light.set_brightness
- Climate:
climate.set_temperature, climate.set_hvac_mode
- Locks:
lock.lock, lock.unlock
- Switches:
switch.turn_on, switch.turn_off
- Media:
media_player.turn_off, media_player.volume_set
- Confirm the result from the MCP response
Confirm to user
- Report what was done: "Done. Living room lights turned off. Thermostat set to 68°F."
- If any devices failed (offline, unreachable): report which ones and suggest checking HA
Learn routines
- Track patterns in MEMORY.md: if the user gives the same combination of commands repeatedly
- After 3+ similar requests: "I notice you often turn off lights and lock the door together in the evening. Want me to create a 'goodnight' routine?"
- If user agrees: create a named cron skill for it using the
cron tool
Handle routine triggers
- If user says "goodnight", "leaving", "morning" etc.: check MEMORY.md for saved routines
- Execute the matched routine if one exists
- If no routine exists: execute reasonable defaults and ask if they want to save it
Common command patterns
- "Turn off all lights" → iterate
light.* entities and turn off all
- "Set thermostat to 70" →
climate.set_temperature on climate entity
- "Lock the front door" →
lock.lock on door lock entity
- "Is anyone home?" → check
person.* entities or group.all_devices tracker
- "What's the temperature outside?" → read weather or outdoor sensor entity
Output format
Done. [What was done]
[Any failures or notes]
For status checks:
Home status:
• Lights: [on: living room, kitchen | off: all others]
• Temperature: [inside: 72°F | outside: 58°F]
• Doors: [front: locked | garage: unlocked ⚠️]
• [Any alerts or anomalies]
Notes
- This skill requires the Home Assistant MCP server to be configured in hermes.yaml
- Entity names vary by HA installation — the skill discovers them dynamically via
list_entities
- Preferences and routines recorded in MEMORY.md persist across sessions (volume-mounted)
1---2name: home-assistant3description: Natural language smart home control — parses commands and invokes Home Assistant via MCP, learns your routines and auto-creates cron skills for them4license: MIT5---67# home-assistant-control89This skill handles natural language smart home commands by invoking the Home Assistant MCP server. It learns your preferences and routines from repeated use.1011## When to invoke1213- When the user gives any home control command (lights, thermostat, locks, sensors)14- When the user asks for home status ("is anything left on?", "what's the temperature?")15- When the user asks to create an automation or routine1617## Steps to execute18191. **Parse the command**20 - Identify: action (turn on/off/dim/set/check), entity (lights, thermostat, lock, TV), room/area, value (brightness %, temperature)21 - Check MEMORY.md for user preferences: "always leave porch light on after 9pm", "default dim level 40%"22 - If the command is ambiguous, ask one clarifying question23242. **Check Home Assistant for entity names**25 - Use the HA MCP `list_entities` tool to find the correct entity IDs for the named devices26 - Example: "living room lights" → `light.living_room`, `light.living_room_lamp`27 - Cache entity mappings in memory for faster future lookups28293. **Execute the action**30 - Call the appropriate HA MCP service:31 - Lights: `light.turn_on`, `light.turn_off`, `light.set_brightness`32 - Climate: `climate.set_temperature`, `climate.set_hvac_mode`33 - Locks: `lock.lock`, `lock.unlock`34 - Switches: `switch.turn_on`, `switch.turn_off`35 - Media: `media_player.turn_off`, `media_player.volume_set`36 - Confirm the result from the MCP response37384. **Confirm to user**39 - Report what was done: "Done. Living room lights turned off. Thermostat set to 68°F."40 - If any devices failed (offline, unreachable): report which ones and suggest checking HA41425. **Learn routines**43 - Track patterns in MEMORY.md: if the user gives the same combination of commands repeatedly44 - After 3+ similar requests: "I notice you often turn off lights and lock the door together in the evening. Want me to create a 'goodnight' routine?"45 - If user agrees: create a named cron skill for it using the `cron` tool46476. **Handle routine triggers**48 - If user says "goodnight", "leaving", "morning" etc.: check MEMORY.md for saved routines49 - Execute the matched routine if one exists50 - If no routine exists: execute reasonable defaults and ask if they want to save it5152## Common command patterns5354- "Turn off all lights" → iterate `light.*` entities and turn off all55- "Set thermostat to 70" → `climate.set_temperature` on climate entity56- "Lock the front door" → `lock.lock` on door lock entity57- "Is anyone home?" → check `person.*` entities or `group.all_devices` tracker58- "What's the temperature outside?" → read weather or outdoor sensor entity5960## Output format6162```63Done. [What was done]64[Any failures or notes]65```6667For status checks:68```69Home status:70• Lights: [on: living room, kitchen | off: all others]71• Temperature: [inside: 72°F | outside: 58°F]72• Doors: [front: locked | garage: unlocked ⚠️]73• [Any alerts or anomalies]74```7576## Notes7778- This skill requires the Home Assistant MCP server to be configured in hermes.yaml79- Entity names vary by HA installation — the skill discovers them dynamically via `list_entities`80- Preferences and routines recorded in MEMORY.md persist across sessions (volume-mounted)