{
  "schemaVersion": "1.0",
  "item": {
    "slug": "grid-aware-energy-load-shifter",
    "name": "Grid-Aware Energy Load Shifter",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/mrbese/grid-aware-energy-load-shifter",
    "canonicalUrl": "https://clawhub.ai/mrbese/grid-aware-energy-load-shifter",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/grid-aware-energy-load-shifter",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=grid-aware-energy-load-shifter",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md",
      "scripts/ha_bridge.py",
      "references/energy_entities.md"
    ],
    "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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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/grid-aware-energy-load-shifter"
    },
    "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/grid-aware-energy-load-shifter",
    "agentPageUrl": "https://openagent3.xyz/skills/grid-aware-energy-load-shifter/agent",
    "manifestUrl": "https://openagent3.xyz/skills/grid-aware-energy-load-shifter/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/grid-aware-energy-load-shifter/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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Grid-Aware Energy Load Shifter",
        "body": "Shift heavy residential loads to the cheapest electricity hours using Home Assistant energy data."
      },
      {
        "title": "Quick Start",
        "body": "# Find all energy-related entities in HA\npython3 {baseDir}/scripts/ha_bridge.py discover\n\n# Get a full energy dashboard snapshot (prices, solar, consumption, batteries)\npython3 {baseDir}/scripts/ha_bridge.py energy-summary\n\n# Turn on the EV charger\npython3 {baseDir}/scripts/ha_bridge.py call-service switch/turn_on --entity-id switch.ev_charger"
      },
      {
        "title": "Connection",
        "body": "Two paths to reach Home Assistant:\n\nMCP (preferred): If the HA MCP server is configured, use mcporter call homeassistant.<tool> directly.\nREST API: Use python3 {baseDir}/scripts/ha_bridge.py. Requires HA_URL and HA_TOKEN environment variables."
      },
      {
        "title": "Security",
        "body": "Required credentials:\n\nVariableDescriptionHA_URLHome Assistant base URL (e.g. http://homeassistant.local:8123)HA_TOKENHome Assistant Long-Lived Access Token\n\nLeast-privilege recommendations:\n\nCreate a dedicated Home Assistant user account for this skill (e.g. openclaw-energy)\nGenerate a Long-Lived Access Token from that account only\nLimit the account's entity access to energy-related entities if your HA setup supports entity-level permissions\nTest with read-only commands first (discover, energy-summary) before enabling device control\n\nDomain allowlist: The call-service command restricts actions to energy-related domains only: switch, automation, script, climate, water_heater, input_boolean, input_number, number. All other domains (e.g. lock, alarm_control_panel) are blocked with exit code 2."
      },
      {
        "title": "Commands",
        "body": "CommandWhat it doesExamplediscoverList all energy entitiesha_bridge.py discoverenergy-summaryOne-shot dashboard (prices + consumption + solar + storage)ha_bridge.py energy-summarystatus <entity>Read a single entity's state and attributesha_bridge.py status sensor.electricity_pricecall-service <d/s>Call an energy-related HA service (restricted to allowed domains)ha_bridge.py call-service switch/turn_on --entity-id switch.ev_chargerhistory <entity>Get state changes over last N hoursha_bridge.py history sensor.grid_import --hours 24\n\nAll commands output JSON to stdout."
      },
      {
        "title": "Load-Shifting Workflow",
        "body": "Follow these steps when asked about energy optimization:\n\nDiscover available energy entities: run discover or energy-summary\nRead prices: Check pricing entities' state and attributes — look for:\n\nHourly price arrays in today / tomorrow / prices_today / rates attributes\nprice_level attribute (CHEAP / NORMAL / EXPENSIVE)\nCurrent vs. average price comparison\n\n\nIdentify deferrable loads: Find switch.* entities for schedulable devices (EV charger, pool pump, dishwasher, washer/dryer, water heater)\nFind the cheapest window: Scan hourly prices for the contiguous N-hour block with the lowest sum (N = estimated run time of device)\nExecute: Call switch/turn_on at the optimal time, or automation/trigger if the user has an existing automation"
      },
      {
        "title": "Interpreting Price Data",
        "body": "Different integrations expose prices differently:\n\nHourly arrays (Nordpool, ENTSO-e, Octopus): Read today/tomorrow attributes → find cheapest hours\nPrice level (Tibber): Read price_level → act when CHEAP or VERY_CHEAP\nReal-time (Amber Electric): Read 5-minute pricing → shift loads immediately when cheap\nUtility meter tariffs: Read sensor.*_peak vs sensor.*_offpeak → user's HA automations switch tariffs at configured times\nStatic TOU: Read current_price attribute → compare against historical average"
      },
      {
        "title": "Cost Savings Estimate",
        "body": "When recommending a shift, show estimated savings:\n\nsavings = (current_rate - cheapest_rate) × device_power_kw × run_duration_hours"
      },
      {
        "title": "Solar Self-Consumption",
        "body": "If solar sensors exist, align loads with peak production:\n\nRead sensor.forecast_solar_* or sensor.solcast_* for today's forecast\nShift loads to hours with highest expected production\nThis avoids grid import entirely — savings = full retail rate × kWh shifted"
      },
      {
        "title": "HVAC Pre-Conditioning",
        "body": "HVAC is the largest residential load (40-50% of electricity). Pre-cool or pre-heat during cheap/solar hours so the home coasts through expensive peak periods:\n\nRead climate.* entities for current HVAC mode and setpoint\nDuring cheapest window: lower cooling setpoint by 2-3F (pre-cool) or raise heating setpoint by 2-3F (pre-heat)\nDuring peak window: raise cooling setpoint by 2-3F to coast on thermal mass\nSavings estimate: 1.5-3 kW shifted × price differential × hours"
      },
      {
        "title": "Water Heater Scheduling",
        "body": "Electric water heaters (4.5 kW typical) are ideal deferrable loads:\n\nFind switch.water_heater or water_heater.* entities\nHeat during cheapest/solar window to full temperature\nTurn off during peak hours (tank maintains temperature for 4-6 hours)\nSavings estimate: 4.5 kW × price differential × 3-4 hours/day"
      },
      {
        "title": "Battery Arbitrage",
        "body": "If home battery entities exist (sensor.battery_soc, sensor.powerwall_*, sensor.enphase_*):\n\nRead current state of charge and charge/discharge rate limits\nCharge from grid during cheapest hours (or from solar)\nDischarge to home during peak price hours to avoid grid import\nAdvanced: If battery supports grid export and VPP enrollment, discharge to grid during extreme price events ($2,000+/MWh)\nSavings estimate: battery_capacity_kwh × (peak_rate - valley_rate)"
      },
      {
        "title": "Demand Response / VPP Integration",
        "body": "For homes enrolled in utility demand response or virtual power plant programs:\n\nRead demand response signal entities (if available via HA integration)\nWhen DR event active: shed non-critical loads, pre-cool/pre-heat, discharge battery\nEstimate DR payment: kW reduced × event duration × program rate"
      },
      {
        "title": "Entity Reference",
        "body": "For detailed entity patterns across providers, read: energy_entities.md"
      }
    ],
    "body": "Grid-Aware Energy Load Shifter\n\nShift heavy residential loads to the cheapest electricity hours using Home Assistant energy data.\n\nQuick Start\n# Find all energy-related entities in HA\npython3 {baseDir}/scripts/ha_bridge.py discover\n\n# Get a full energy dashboard snapshot (prices, solar, consumption, batteries)\npython3 {baseDir}/scripts/ha_bridge.py energy-summary\n\n# Turn on the EV charger\npython3 {baseDir}/scripts/ha_bridge.py call-service switch/turn_on --entity-id switch.ev_charger\n\nConnection\n\nTwo paths to reach Home Assistant:\n\nMCP (preferred): If the HA MCP server is configured, use mcporter call homeassistant.<tool> directly.\nREST API: Use python3 {baseDir}/scripts/ha_bridge.py. Requires HA_URL and HA_TOKEN environment variables.\nSecurity\n\nRequired credentials:\n\nVariable\tDescription\nHA_URL\tHome Assistant base URL (e.g. http://homeassistant.local:8123)\nHA_TOKEN\tHome Assistant Long-Lived Access Token\n\nLeast-privilege recommendations:\n\nCreate a dedicated Home Assistant user account for this skill (e.g. openclaw-energy)\nGenerate a Long-Lived Access Token from that account only\nLimit the account's entity access to energy-related entities if your HA setup supports entity-level permissions\nTest with read-only commands first (discover, energy-summary) before enabling device control\n\nDomain allowlist: The call-service command restricts actions to energy-related domains only: switch, automation, script, climate, water_heater, input_boolean, input_number, number. All other domains (e.g. lock, alarm_control_panel) are blocked with exit code 2.\n\nCommands\nCommand\tWhat it does\tExample\ndiscover\tList all energy entities\tha_bridge.py discover\nenergy-summary\tOne-shot dashboard (prices + consumption + solar + storage)\tha_bridge.py energy-summary\nstatus <entity>\tRead a single entity's state and attributes\tha_bridge.py status sensor.electricity_price\ncall-service <d/s>\tCall an energy-related HA service (restricted to allowed domains)\tha_bridge.py call-service switch/turn_on --entity-id switch.ev_charger\nhistory <entity>\tGet state changes over last N hours\tha_bridge.py history sensor.grid_import --hours 24\n\nAll commands output JSON to stdout.\n\nLoad-Shifting Workflow\n\nFollow these steps when asked about energy optimization:\n\nDiscover available energy entities: run discover or energy-summary\nRead prices: Check pricing entities' state and attributes — look for:\nHourly price arrays in today / tomorrow / prices_today / rates attributes\nprice_level attribute (CHEAP / NORMAL / EXPENSIVE)\nCurrent vs. average price comparison\nIdentify deferrable loads: Find switch.* entities for schedulable devices (EV charger, pool pump, dishwasher, washer/dryer, water heater)\nFind the cheapest window: Scan hourly prices for the contiguous N-hour block with the lowest sum (N = estimated run time of device)\nExecute: Call switch/turn_on at the optimal time, or automation/trigger if the user has an existing automation\nInterpreting Price Data\n\nDifferent integrations expose prices differently:\n\nHourly arrays (Nordpool, ENTSO-e, Octopus): Read today/tomorrow attributes → find cheapest hours\nPrice level (Tibber): Read price_level → act when CHEAP or VERY_CHEAP\nReal-time (Amber Electric): Read 5-minute pricing → shift loads immediately when cheap\nUtility meter tariffs: Read sensor.*_peak vs sensor.*_offpeak → user's HA automations switch tariffs at configured times\nStatic TOU: Read current_price attribute → compare against historical average\nCost Savings Estimate\n\nWhen recommending a shift, show estimated savings:\n\nsavings = (current_rate - cheapest_rate) × device_power_kw × run_duration_hours\n\nSolar Self-Consumption\n\nIf solar sensors exist, align loads with peak production:\n\nRead sensor.forecast_solar_* or sensor.solcast_* for today's forecast\nShift loads to hours with highest expected production\nThis avoids grid import entirely — savings = full retail rate × kWh shifted\nHVAC Pre-Conditioning\n\nHVAC is the largest residential load (40-50% of electricity). Pre-cool or pre-heat during cheap/solar hours so the home coasts through expensive peak periods:\n\nRead climate.* entities for current HVAC mode and setpoint\nDuring cheapest window: lower cooling setpoint by 2-3F (pre-cool) or raise heating setpoint by 2-3F (pre-heat)\nDuring peak window: raise cooling setpoint by 2-3F to coast on thermal mass\nSavings estimate: 1.5-3 kW shifted × price differential × hours\nWater Heater Scheduling\n\nElectric water heaters (4.5 kW typical) are ideal deferrable loads:\n\nFind switch.water_heater or water_heater.* entities\nHeat during cheapest/solar window to full temperature\nTurn off during peak hours (tank maintains temperature for 4-6 hours)\nSavings estimate: 4.5 kW × price differential × 3-4 hours/day\nBattery Arbitrage\n\nIf home battery entities exist (sensor.battery_soc, sensor.powerwall_*, sensor.enphase_*):\n\nRead current state of charge and charge/discharge rate limits\nCharge from grid during cheapest hours (or from solar)\nDischarge to home during peak price hours to avoid grid import\nAdvanced: If battery supports grid export and VPP enrollment, discharge to grid during extreme price events ($2,000+/MWh)\nSavings estimate: battery_capacity_kwh × (peak_rate - valley_rate)\nDemand Response / VPP Integration\n\nFor homes enrolled in utility demand response or virtual power plant programs:\n\nRead demand response signal entities (if available via HA integration)\nWhen DR event active: shed non-critical loads, pre-cool/pre-heat, discharge battery\nEstimate DR payment: kW reduced × event duration × program rate\nEntity Reference\n\nFor detailed entity patterns across providers, read: energy_entities.md"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/mrbese/grid-aware-energy-load-shifter",
    "publisherUrl": "https://clawhub.ai/mrbese/grid-aware-energy-load-shifter",
    "owner": "mrbese",
    "version": "1.0.3",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/grid-aware-energy-load-shifter",
    "downloadUrl": "https://openagent3.xyz/downloads/grid-aware-energy-load-shifter",
    "agentUrl": "https://openagent3.xyz/skills/grid-aware-energy-load-shifter/agent",
    "manifestUrl": "https://openagent3.xyz/skills/grid-aware-energy-load-shifter/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/grid-aware-energy-load-shifter/agent.md"
  }
}