{
  "schemaVersion": "1.0",
  "item": {
    "slug": "home-assistant",
    "name": "Home Assistant",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/iAhmadZain/home-assistant",
    "canonicalUrl": "https://clawhub.ai/iAhmadZain/home-assistant",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/home-assistant",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=home-assistant",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "references/api.md",
      "scripts/ha.sh"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/home-assistant"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/home-assistant",
    "agentPageUrl": "https://openagent3.xyz/skills/home-assistant/agent",
    "manifestUrl": "https://openagent3.xyz/skills/home-assistant/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/home-assistant/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Home Assistant",
        "body": "Control your smart home via Home Assistant's REST API and webhooks."
      },
      {
        "title": "Option 1: Config File (Recommended)",
        "body": "Create ~/.config/home-assistant/config.json:\n\n{\n  \"url\": \"https://your-ha-instance.duckdns.org\",\n  \"token\": \"your-long-lived-access-token\"\n}"
      },
      {
        "title": "Option 2: Environment Variables",
        "body": "export HA_URL=\"http://homeassistant.local:8123\"\nexport HA_TOKEN=\"your-long-lived-access-token\""
      },
      {
        "title": "Getting a Long-Lived Access Token",
        "body": "Open Home Assistant → Profile (bottom left)\nScroll to \"Long-Lived Access Tokens\"\nClick \"Create Token\", name it (e.g., \"Clawdbot\")\nCopy the token immediately (shown only once)"
      },
      {
        "title": "List Entities",
        "body": "curl -s -H \"Authorization: Bearer $HA_TOKEN\" \"$HA_URL/api/states\" | jq '.[].entity_id'"
      },
      {
        "title": "Get Entity State",
        "body": "curl -s -H \"Authorization: Bearer $HA_TOKEN\" \"$HA_URL/api/states/light.living_room\""
      },
      {
        "title": "Control Devices",
        "body": "# Turn on\ncurl -X POST -H \"Authorization: Bearer $HA_TOKEN\" -H \"Content-Type: application/json\" \\\n  \"$HA_URL/api/services/light/turn_on\" -d '{\"entity_id\": \"light.living_room\"}'\n\n# Turn off\ncurl -X POST -H \"Authorization: Bearer $HA_TOKEN\" -H \"Content-Type: application/json\" \\\n  \"$HA_URL/api/services/light/turn_off\" -d '{\"entity_id\": \"light.living_room\"}'\n\n# Set brightness (0-255)\ncurl -X POST -H \"Authorization: Bearer $HA_TOKEN\" -H \"Content-Type: application/json\" \\\n  \"$HA_URL/api/services/light/turn_on\" -d '{\"entity_id\": \"light.living_room\", \"brightness\": 128}'"
      },
      {
        "title": "Run Scripts & Automations",
        "body": "# Trigger script\ncurl -X POST -H \"Authorization: Bearer $HA_TOKEN\" \"$HA_URL/api/services/script/turn_on\" \\\n  -H \"Content-Type: application/json\" -d '{\"entity_id\": \"script.goodnight\"}'\n\n# Trigger automation\ncurl -X POST -H \"Authorization: Bearer $HA_TOKEN\" \"$HA_URL/api/services/automation/trigger\" \\\n  -H \"Content-Type: application/json\" -d '{\"entity_id\": \"automation.motion_lights\"}'"
      },
      {
        "title": "Activate Scenes",
        "body": "curl -X POST -H \"Authorization: Bearer $HA_TOKEN\" \"$HA_URL/api/services/scene/turn_on\" \\\n  -H \"Content-Type: application/json\" -d '{\"entity_id\": \"scene.movie_night\"}'"
      },
      {
        "title": "Common Services",
        "body": "DomainServiceExample entity_idlightturn_on, turn_off, togglelight.kitchenswitchturn_on, turn_off, toggleswitch.fanclimateset_temperature, set_hvac_modeclimate.thermostatcoveropen_cover, close_cover, stop_covercover.garagemedia_playerplay_media, media_pause, volume_setmedia_player.tvsceneturn_onscene.relaxscriptturn_onscript.welcome_homeautomationtrigger, turn_on, turn_offautomation.sunrise"
      },
      {
        "title": "Inbound Webhooks (HA → Clawdbot)",
        "body": "To receive events from Home Assistant automations:"
      },
      {
        "title": "1. Create HA Automation with Webhook Action",
        "body": "# In HA automation\naction:\n  - service: rest_command.notify_clawdbot\n    data:\n      event: motion_detected\n      area: living_room"
      },
      {
        "title": "2. Define REST Command in HA",
        "body": "# configuration.yaml\nrest_command:\n  notify_clawdbot:\n    url: \"https://your-clawdbot-url/webhook/home-assistant\"\n    method: POST\n    headers:\n      Authorization: \"Bearer {{ webhook_secret }}\"\n      Content-Type: \"application/json\"\n    payload: '{\"event\": \"{{ event }}\", \"area\": \"{{ area }}\"}'"
      },
      {
        "title": "3. Handle in Clawdbot",
        "body": "Clawdbot receives the webhook and can notify you or take action based on the event."
      },
      {
        "title": "CLI Wrapper",
        "body": "The scripts/ha.sh CLI provides easy access to all HA functions:\n\n# Test connection\nha.sh info\n\n# List entities\nha.sh list all          # all entities\nha.sh list lights       # just lights\nha.sh list switch       # just switches\n\n# Search entities\nha.sh search kitchen    # find entities by name\n\n# Get/set state\nha.sh state light.living_room\nha.sh states light.living_room   # full details with attributes\nha.sh on light.living_room\nha.sh on light.living_room 200   # with brightness (0-255)\nha.sh off light.living_room\nha.sh toggle switch.fan\n\n# Scenes & scripts\nha.sh scene movie_night\nha.sh script goodnight\n\n# Climate\nha.sh climate climate.thermostat 22\n\n# Call any service\nha.sh call light turn_on '{\"entity_id\":\"light.room\",\"brightness\":200}'"
      },
      {
        "title": "Troubleshooting",
        "body": "401 Unauthorized: Token expired or invalid. Generate a new one.\nConnection refused: Check HA_URL, ensure HA is running and accessible.\nEntity not found: List entities to find the correct entity_id."
      },
      {
        "title": "API Reference",
        "body": "For advanced usage, see references/api.md."
      }
    ],
    "body": "Home Assistant\n\nControl your smart home via Home Assistant's REST API and webhooks.\n\nSetup\nOption 1: Config File (Recommended)\n\nCreate ~/.config/home-assistant/config.json:\n\n{\n  \"url\": \"https://your-ha-instance.duckdns.org\",\n  \"token\": \"your-long-lived-access-token\"\n}\n\nOption 2: Environment Variables\nexport HA_URL=\"http://homeassistant.local:8123\"\nexport HA_TOKEN=\"your-long-lived-access-token\"\n\nGetting a Long-Lived Access Token\nOpen Home Assistant → Profile (bottom left)\nScroll to \"Long-Lived Access Tokens\"\nClick \"Create Token\", name it (e.g., \"Clawdbot\")\nCopy the token immediately (shown only once)\nQuick Reference\nList Entities\ncurl -s -H \"Authorization: Bearer $HA_TOKEN\" \"$HA_URL/api/states\" | jq '.[].entity_id'\n\nGet Entity State\ncurl -s -H \"Authorization: Bearer $HA_TOKEN\" \"$HA_URL/api/states/light.living_room\"\n\nControl Devices\n# Turn on\ncurl -X POST -H \"Authorization: Bearer $HA_TOKEN\" -H \"Content-Type: application/json\" \\\n  \"$HA_URL/api/services/light/turn_on\" -d '{\"entity_id\": \"light.living_room\"}'\n\n# Turn off\ncurl -X POST -H \"Authorization: Bearer $HA_TOKEN\" -H \"Content-Type: application/json\" \\\n  \"$HA_URL/api/services/light/turn_off\" -d '{\"entity_id\": \"light.living_room\"}'\n\n# Set brightness (0-255)\ncurl -X POST -H \"Authorization: Bearer $HA_TOKEN\" -H \"Content-Type: application/json\" \\\n  \"$HA_URL/api/services/light/turn_on\" -d '{\"entity_id\": \"light.living_room\", \"brightness\": 128}'\n\nRun Scripts & Automations\n# Trigger script\ncurl -X POST -H \"Authorization: Bearer $HA_TOKEN\" \"$HA_URL/api/services/script/turn_on\" \\\n  -H \"Content-Type: application/json\" -d '{\"entity_id\": \"script.goodnight\"}'\n\n# Trigger automation\ncurl -X POST -H \"Authorization: Bearer $HA_TOKEN\" \"$HA_URL/api/services/automation/trigger\" \\\n  -H \"Content-Type: application/json\" -d '{\"entity_id\": \"automation.motion_lights\"}'\n\nActivate Scenes\ncurl -X POST -H \"Authorization: Bearer $HA_TOKEN\" \"$HA_URL/api/services/scene/turn_on\" \\\n  -H \"Content-Type: application/json\" -d '{\"entity_id\": \"scene.movie_night\"}'\n\nCommon Services\nDomain\tService\tExample entity_id\nlight\tturn_on, turn_off, toggle\tlight.kitchen\nswitch\tturn_on, turn_off, toggle\tswitch.fan\nclimate\tset_temperature, set_hvac_mode\tclimate.thermostat\ncover\topen_cover, close_cover, stop_cover\tcover.garage\nmedia_player\tplay_media, media_pause, volume_set\tmedia_player.tv\nscene\tturn_on\tscene.relax\nscript\tturn_on\tscript.welcome_home\nautomation\ttrigger, turn_on, turn_off\tautomation.sunrise\nInbound Webhooks (HA → Clawdbot)\n\nTo receive events from Home Assistant automations:\n\n1. Create HA Automation with Webhook Action\n# In HA automation\naction:\n  - service: rest_command.notify_clawdbot\n    data:\n      event: motion_detected\n      area: living_room\n\n2. Define REST Command in HA\n# configuration.yaml\nrest_command:\n  notify_clawdbot:\n    url: \"https://your-clawdbot-url/webhook/home-assistant\"\n    method: POST\n    headers:\n      Authorization: \"Bearer {{ webhook_secret }}\"\n      Content-Type: \"application/json\"\n    payload: '{\"event\": \"{{ event }}\", \"area\": \"{{ area }}\"}'\n\n3. Handle in Clawdbot\n\nClawdbot receives the webhook and can notify you or take action based on the event.\n\nCLI Wrapper\n\nThe scripts/ha.sh CLI provides easy access to all HA functions:\n\n# Test connection\nha.sh info\n\n# List entities\nha.sh list all          # all entities\nha.sh list lights       # just lights\nha.sh list switch       # just switches\n\n# Search entities\nha.sh search kitchen    # find entities by name\n\n# Get/set state\nha.sh state light.living_room\nha.sh states light.living_room   # full details with attributes\nha.sh on light.living_room\nha.sh on light.living_room 200   # with brightness (0-255)\nha.sh off light.living_room\nha.sh toggle switch.fan\n\n# Scenes & scripts\nha.sh scene movie_night\nha.sh script goodnight\n\n# Climate\nha.sh climate climate.thermostat 22\n\n# Call any service\nha.sh call light turn_on '{\"entity_id\":\"light.room\",\"brightness\":200}'\n\nTroubleshooting\n401 Unauthorized: Token expired or invalid. Generate a new one.\nConnection refused: Check HA_URL, ensure HA is running and accessible.\nEntity not found: List entities to find the correct entity_id.\nAPI Reference\n\nFor advanced usage, see references/api.md."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/iAhmadZain/home-assistant",
    "publisherUrl": "https://clawhub.ai/iAhmadZain/home-assistant",
    "owner": "iAhmadZain",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/home-assistant",
    "downloadUrl": "https://openagent3.xyz/downloads/home-assistant",
    "agentUrl": "https://openagent3.xyz/skills/home-assistant/agent",
    "manifestUrl": "https://openagent3.xyz/skills/home-assistant/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/home-assistant/agent.md"
  }
}