{
  "schemaVersion": "1.0",
  "item": {
    "slug": "tasmota-skill",
    "name": "Tasmota",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/wmantly/tasmota-skill",
    "canonicalUrl": "https://clawhub.ai/wmantly/tasmota-skill",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/tasmota-skill",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=tasmota-skill",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "scripts/tasmota-control.py",
      "scripts/tasmota-discovery.py",
      "scripts/tasmota-status.py"
    ],
    "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/tasmota-skill"
    },
    "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/tasmota-skill",
    "agentPageUrl": "https://openagent3.xyz/skills/tasmota-skill/agent",
    "manifestUrl": "https://openagent3.xyz/skills/tasmota-skill/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/tasmota-skill/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": "Overview",
        "body": "Automated discovery and control of Tasmota-powered smart home devices (ESP8266/ESP32) on local networks. Includes network scanning, status monitoring, power control, dimming, color control, and inventory management."
      },
      {
        "title": "Quick Start",
        "body": "Scan network for Tasmota devices:\n\npython3 scripts/tasmota-discovery.py\n\nCheck device status:\n\npython3 scripts/tasmota-control.py <IP> status 0\n\nControl device:\n\npython3 scripts/tasmota-control.py <IP> power on|off|toggle\npython3 scripts/tasmota-control.py <IP> brightness 0-100\npython3 scripts/tasmota-control.py <IP> color <hex-rgb>"
      },
      {
        "title": "Network Scan",
        "body": "Run a full network scan to find all Tasmota devices:\n\npython3 scripts/tasmota-discovery.py\n\nThe script:\n\nPerforms ping sweep to identify live hosts\nScans HTTP (port 80) on live hosts\nDetects Tasmota via Server header (e.g., \"Tasmota/13.1.0\")\nConfirms via JSON API (/cm?cmnd=status%200)\nRetrieves device names, versions, and hardware\n\nOutput includes:\n\nIP address\nDevice friendly name\nTasmota version\nHardware platform (ESP8266/ESP32)\nResponse time"
      },
      {
        "title": "Identification Signals",
        "body": "Tasmota devices are identified by:\n\nServer header: Tasmota/<version> (<hardware>)\nJSON API response: /cm?cmnd=status%200 returns structured status\nContent keywords: \"Tasmota\" in HTML"
      },
      {
        "title": "Power Control",
        "body": "Toggle or set power state:\n\n# Toggle\npython3 scripts/tasmota-control.py <IP> power toggle\n\n# On/Off\npython3 scripts/tasmota-control.py <IP> power on\npython3 scripts/tasmota-control.py <IP> power off"
      },
      {
        "title": "Brightness (Dimmers)",
        "body": "Set brightness level (0-100):\n\npython3 scripts/tasmota-control.py <IP> brightness 50\n\nWorks on devices with Dimmer support (check StatusSTS)."
      },
      {
        "title": "Color (RGB Lights)",
        "body": "Set RGB color (hex or comma-separated):\n\n# Hex format\npython3 scripts/tasmota-control.py <IP> color FF0000  # Red\npython3 scripts/tasmota-control.py <IP> color 00FF00  # Green\n\n# RGB comma format\npython3 scripts/tasmota-control.py <IP> color 255,0,0\n\nWorks on devices with RGB support (AiYaTo-RGBCW, etc.)."
      },
      {
        "title": "Device Status",
        "body": "Retrieve status information:\n\n# Basic status\npython3 scripts/tasmota-control.py <IP> status 0\n\n# All statuses\npython3 scripts/tasmota-control.py <IP> status all\n\nStatus codes:\n\n0 = Status - Device info, friendly name, power state\n1 = StatusPRM - Parameters, uptime, MAC\n2 = StatusFWR - Firmware version, hardware\n3 = StatusLOG - Log settings\n4 = StatusNET - Network config (IP, gateway, WiFi)\n5 = StatusMQT - MQTT configuration\n9 = StatusTIM - Time, timezone, sunrise/sunset"
      },
      {
        "title": "Key Status Fields",
        "body": "StatusSTS (Status 0):\n\nPOWER - Current state (ON/OFF)\nDimmer - Brightness level (0-100)\nWifi.RSSI - Signal strength\nWifi.SSId - Connected WiFi network\n\nStatusNET:\n\nIPAddress - Device IP\nHostname - mDNS hostname\nMac - MAC address"
      },
      {
        "title": "Get All Device Status",
        "body": "python3 scripts/tasmota-status.py\n\nIterates through inventory file and shows power state for all devices."
      },
      {
        "title": "Managing Inventory",
        "body": "Devices are tracked in a CSV inventory file. Format:\n\nIP Address,Device Name,Version,Hardware,Response Time (ms)\n192.168.1.116,Office Hall Light,13.1.0,ESP8266EX,53\n\nAfter discovery, save output to inventory file for batch operations."
      },
      {
        "title": "Finding Labeled Devices",
        "body": "# Scan and grep for specific device names\npython3 scripts/tasmota-discovery.py | grep \"Kitchen\"\npython3 scripts/tasmota-discovery.py | grep \"Bulb\""
      },
      {
        "title": "Checking All Lights",
        "body": "# Get status of all devices\npython3 scripts/tasmota-status.py"
      },
      {
        "title": "Power Cycle a Device",
        "body": "# Off, wait 2s, on\npython3 scripts/tasmota-control.py 192.168.1.116 power off\nsleep 2\npython3 scripts/tasmota-control.py 192.168.1.116 power on"
      },
      {
        "title": "Command Format",
        "body": "http://<IP>/cm?cmnd=<COMMAND>"
      },
      {
        "title": "Common Commands",
        "body": "CommandDescriptionPowerToggle powerPower ONTurn onPower OFFTurn offPower TOGGLEToggle stateStatus 0Device statusStatus 4Network statusDimmer <0-100>Set brightnessColor <hex>Set RGB color`Fade <ONOFF>`"
      },
      {
        "title": "Device Not Found",
        "body": "Verify device is on same subnet\nCheck device has HTTP server enabled (Webserver 2 in config)\nEnsure device is powered on and connected to WiFi\nTry direct HTTP request: curl http://<IP>/cm?cmnd=Status%200"
      },
      {
        "title": "Timeout Errors",
        "body": "Device may be power saving (WiFi sleep)\nNetwork latency or packet loss\nCheck device uptime for recent restarts"
      },
      {
        "title": "Unknown Power State",
        "body": "Some devices (BLE gateways, sensors) don't have power control. Check capability in StatusSTS."
      },
      {
        "title": "Network Configuration",
        "body": "Tasmota devices typically:\n\nConnect on WiFi channel 1-11\nUse DHCP (check StatusNET for current IP)\nMay respond to mDNS (hostname patterns: tasmota-XXXXXX)\nUse HTTP on port 80 (standard)"
      },
      {
        "title": "Best Practices",
        "body": "Scan during network maintenance windows (avoid peak usage)\nCache inventory file to avoid repeated scans\nUse device friendly names for easier identification\nSet static IPs for critical devices (via Tasmota web UI or DHCP reservations)\nGroup devices by location/function in inventory comments"
      },
      {
        "title": "scripts/tasmota-discovery.py",
        "body": "Network scanner that finds live hosts and identifies Tasmota devices via HTTP and JSON API."
      },
      {
        "title": "scripts/tasmota-control.py",
        "body": "Device controller supporting power, brightness, color, and status queries via Tasmota JSON API."
      },
      {
        "title": "scripts/tasmota-status.py",
        "body": "Bulk status checker that queries all devices in inventory and displays power states."
      }
    ],
    "body": "Tasmota Device Management\nOverview\n\nAutomated discovery and control of Tasmota-powered smart home devices (ESP8266/ESP32) on local networks. Includes network scanning, status monitoring, power control, dimming, color control, and inventory management.\n\nQuick Start\n\nScan network for Tasmota devices:\n\npython3 scripts/tasmota-discovery.py\n\n\nCheck device status:\n\npython3 scripts/tasmota-control.py <IP> status 0\n\n\nControl device:\n\npython3 scripts/tasmota-control.py <IP> power on|off|toggle\npython3 scripts/tasmota-control.py <IP> brightness 0-100\npython3 scripts/tasmota-control.py <IP> color <hex-rgb>\n\nDiscovery\nNetwork Scan\n\nRun a full network scan to find all Tasmota devices:\n\npython3 scripts/tasmota-discovery.py\n\n\nThe script:\n\nPerforms ping sweep to identify live hosts\nScans HTTP (port 80) on live hosts\nDetects Tasmota via Server header (e.g., \"Tasmota/13.1.0\")\nConfirms via JSON API (/cm?cmnd=status%200)\nRetrieves device names, versions, and hardware\n\nOutput includes:\n\nIP address\nDevice friendly name\nTasmota version\nHardware platform (ESP8266/ESP32)\nResponse time\nIdentification Signals\n\nTasmota devices are identified by:\n\nServer header: Tasmota/<version> (<hardware>)\nJSON API response: /cm?cmnd=status%200 returns structured status\nContent keywords: \"Tasmota\" in HTML\nDevice Control\nPower Control\n\nToggle or set power state:\n\n# Toggle\npython3 scripts/tasmota-control.py <IP> power toggle\n\n# On/Off\npython3 scripts/tasmota-control.py <IP> power on\npython3 scripts/tasmota-control.py <IP> power off\n\nBrightness (Dimmers)\n\nSet brightness level (0-100):\n\npython3 scripts/tasmota-control.py <IP> brightness 50\n\n\nWorks on devices with Dimmer support (check StatusSTS).\n\nColor (RGB Lights)\n\nSet RGB color (hex or comma-separated):\n\n# Hex format\npython3 scripts/tasmota-control.py <IP> color FF0000  # Red\npython3 scripts/tasmota-control.py <IP> color 00FF00  # Green\n\n# RGB comma format\npython3 scripts/tasmota-control.py <IP> color 255,0,0\n\n\nWorks on devices with RGB support (AiYaTo-RGBCW, etc.).\n\nStatus Queries\nDevice Status\n\nRetrieve status information:\n\n# Basic status\npython3 scripts/tasmota-control.py <IP> status 0\n\n# All statuses\npython3 scripts/tasmota-control.py <IP> status all\n\n\nStatus codes:\n\n0 = Status - Device info, friendly name, power state\n1 = StatusPRM - Parameters, uptime, MAC\n2 = StatusFWR - Firmware version, hardware\n3 = StatusLOG - Log settings\n4 = StatusNET - Network config (IP, gateway, WiFi)\n5 = StatusMQT - MQTT configuration\n9 = StatusTIM - Time, timezone, sunrise/sunset\nKey Status Fields\n\nStatusSTS (Status 0):\n\nPOWER - Current state (ON/OFF)\nDimmer - Brightness level (0-100)\nWifi.RSSI - Signal strength\nWifi.SSId - Connected WiFi network\n\nStatusNET:\n\nIPAddress - Device IP\nHostname - mDNS hostname\nMac - MAC address\nBulk Operations\nGet All Device Status\npython3 scripts/tasmota-status.py\n\n\nIterates through inventory file and shows power state for all devices.\n\nManaging Inventory\n\nDevices are tracked in a CSV inventory file. Format:\n\nIP Address,Device Name,Version,Hardware,Response Time (ms)\n192.168.1.116,Office Hall Light,13.1.0,ESP8266EX,53\n\n\nAfter discovery, save output to inventory file for batch operations.\n\nCommon Tasks\nFinding Labeled Devices\n# Scan and grep for specific device names\npython3 scripts/tasmota-discovery.py | grep \"Kitchen\"\npython3 scripts/tasmota-discovery.py | grep \"Bulb\"\n\nChecking All Lights\n# Get status of all devices\npython3 scripts/tasmota-status.py\n\nPower Cycle a Device\n# Off, wait 2s, on\npython3 scripts/tasmota-control.py 192.168.1.116 power off\nsleep 2\npython3 scripts/tasmota-control.py 192.168.1.116 power on\n\nTasmota API Reference\nCommand Format\nhttp://<IP>/cm?cmnd=<COMMAND>\n\nCommon Commands\nCommand\tDescription\nPower\tToggle power\nPower ON\tTurn on\nPower OFF\tTurn off\nPower TOGGLE\tToggle state\nStatus 0\tDevice status\nStatus 4\tNetwork status\nDimmer <0-100>\tSet brightness\nColor <hex>\tSet RGB color\n`Fade <ON\tOFF>`\nTroubleshooting\nDevice Not Found\nVerify device is on same subnet\nCheck device has HTTP server enabled (Webserver 2 in config)\nEnsure device is powered on and connected to WiFi\nTry direct HTTP request: curl http://<IP>/cm?cmnd=Status%200\nTimeout Errors\nDevice may be power saving (WiFi sleep)\nNetwork latency or packet loss\nCheck device uptime for recent restarts\nUnknown Power State\n\nSome devices (BLE gateways, sensors) don't have power control. Check capability in StatusSTS.\n\nNetwork Configuration\n\nTasmota devices typically:\n\nConnect on WiFi channel 1-11\nUse DHCP (check StatusNET for current IP)\nMay respond to mDNS (hostname patterns: tasmota-XXXXXX)\nUse HTTP on port 80 (standard)\nBest Practices\nScan during network maintenance windows (avoid peak usage)\nCache inventory file to avoid repeated scans\nUse device friendly names for easier identification\nSet static IPs for critical devices (via Tasmota web UI or DHCP reservations)\nGroup devices by location/function in inventory comments\nResources\nscripts/tasmota-discovery.py\n\nNetwork scanner that finds live hosts and identifies Tasmota devices via HTTP and JSON API.\n\nscripts/tasmota-control.py\n\nDevice controller supporting power, brightness, color, and status queries via Tasmota JSON API.\n\nscripts/tasmota-status.py\n\nBulk status checker that queries all devices in inventory and displays power states."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/wmantly/tasmota-skill",
    "publisherUrl": "https://clawhub.ai/wmantly/tasmota-skill",
    "owner": "wmantly",
    "version": "0.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/tasmota-skill",
    "downloadUrl": "https://openagent3.xyz/downloads/tasmota-skill",
    "agentUrl": "https://openagent3.xyz/skills/tasmota-skill/agent",
    "manifestUrl": "https://openagent3.xyz/skills/tasmota-skill/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/tasmota-skill/agent.md"
  }
}