Fronius
SkillDev toolsRead Fronius photovoltaic inverter data through the local Fronius Solar API V1 or Solar.web Query API cloud, without exposing access-key material.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Fronius skill
What this skill tells your AI
The instructions your AI receives, as published by hybridaione/hybridclaw in skills/fronius/SKILL.md and read by ahel’s review.
Use this skill for operator-approved Fronius photovoltaic monitoring: local inverter reads through Fronius Solar API V1 and cloud reads through Solar.web Query API. This v1 skill covers read-only monitoring for inverters, meters, storage, OhmPilot, and Solar.web account data.
Core Contract
- Run supported operations through
skills/fronius/fronius.cjs; the helper is the source of truth for Fronius URLs, Solar.web headers, endpoint bounds, and response-shape metadata. - For the common "what is my solar doing now?" local LAN query, use the helper
local-summarycommand. It performs the bounded local Solar API reads and returns normalized live production, consumption, grid, battery, meter, and storage fields. - For live API calls, run the helper to build the request, then pass the
emitted
httpRequestobject unchanged to the built-inhttp_requesttool. - Use
local-healththrough the helper andhttp_requestfor local reachability checks. - The helper emits only allowlisted endpoint shapes. It rejects arbitrary path passthrough and command-line secret values.
- Treat the inverter LAN base URL as plain local configuration. Use
--local-host http://<fronius-ip>when the operator provides it, or use the configuredFRONIUS_LOCAL_HOSTenvironment value. - Solar.web Query API authentication uses
AccessKeyIdandAccessKeyValueHTTP headers per Fronius' interface documentation. The helper emits those assecretHeadersso the gateway injects them server-side. - Treat the first 401 or 403 live response as final for that attempt. For 429, report the rate-limit condition and any retry-after guidance.
- Treat local host reachability, gateway host policy, and macOS Local Network permission as separate failure modes.
Setup
Local inverter path:
hybridclaw env set FRONIUS_LOCAL_HOST "http://<fronius-ip>"
The inverter LAN URL is configuration, not credential material. It can also be
passed per request with --local-host http://<fronius-ip> or exported as
FRONIUS_LOCAL_HOST.
Solar.web cloud path setup order:
- Browser admin: open the active HybridClaw admin URL ending in
/admin/secretsand setFRONIUS_SOLARWEB_ACCESS_KEY_IDandFRONIUS_SOLARWEB_ACCESS_KEY_VALUE. - Browser
/chator TUI fallback:/secret set FRONIUS_SOLARWEB_ACCESS_KEY_ID "<access-key-id>"and/secret set FRONIUS_SOLARWEB_ACCESS_KEY_VALUE "<access-key-value>". - Local console fallback:
hybridclaw secret set FRONIUS_SOLARWEB_ACCESS_KEY_ID "<access-key-id>"
hybridclaw secret set FRONIUS_SOLARWEB_ACCESS_KEY_VALUE "<access-key-value>"
Solar.web Query API access is requested from Solar.web. Create and store the AccessKeyId and AccessKeyValue in HybridClaw secrets as soon as Solar.web shows them. Solar.web Premium or a paid Query API package may be required for some system, historical, and aggregate endpoints.
The cloud helper emits:
{
"secretHeaders": [
{ "name": "AccessKeyId", "secretName": "FRONIUS_SOLARWEB_ACCESS_KEY_ID", "prefix": "none" },
{ "name": "AccessKeyValue", "secretName": "FRONIUS_SOLARWEB_ACCESS_KEY_VALUE", "prefix": "none" }
]
}
The gateway injects the real access-key values server-side. Model-visible helper output, prose, logs, and tests should contain only SecretRef names.
Command Contract
Show helper usage:
node skills/fronius/fronius.cjs --help
Local reads:
node skills/fronius/fronius.cjs --format json --local-host http://<fronius-ip> local-summary
node skills/fronius/fronius.cjs --format json http-request local-api-version
node skills/fronius/fronius.cjs --format json http-request local-health
node skills/fronius/fronius.cjs --format json http-request local-power-flow
node skills/fronius/fronius.cjs --format json http-request local-inverter-realtime --scope System
node skills/fronius/fronius.cjs --format json http-request local-meter-realtime --scope System
node skills/fronius/fronius.cjs --format json http-request local-storage-realtime --scope System
node skills/fronius/fronius.cjs --format json http-request local-ohmpilot-realtime --scope System
node skills/fronius/fronius.cjs --format json http-request local-archive \
--start 2026-05-26 \
--end 2026-05-27 \
--channel EnergyReal_WAC_Sum_Produced
node skills/fronius/fronius.cjs --format json http-request local-logger-info
node skills/fronius/fronius.cjs --format json http-request local-active-device-info --device-class Inverter
Cloud reads:
node skills/fronius/fronius.cjs --format json http-request cloud-pvsystems
node skills/fronius/fronius.cjs --format json http-request cloud-auth-check
node skills/fronius/fronius.cjs --format json http-request cloud-pvsystem --pv-system <id>
node skills/fronius/fronius.cjs --format json http-request cloud-flowdata --pv-system <id>
node skills/fronius/fronius.cjs --format json http-request cloud-aggrdata \
--pv-system <id> \
--period day \
--from 2026-05-26
node skills/fronius/fronius.cjs --format json http-request cloud-histdata \
--pv-system <id> \
--from 2026-05-20 \
--to 2026-05-27 \
--channel EnergyReal_WAC_Sum_Produced
node skills/fronius/fronius.cjs --format json http-request cloud-messages --pv-system <id> --since 2026-05-20
node skills/fronius/fronius.cjs --format json http-request cloud-devices-list --pv-system <id>
node skills/fronius/fronius.cjs --format json http-request cloud-errors --pv-system <id> --since 2026-05-20
Run one gateway-proxied smoke request:
node skills/fronius/fronius.cjs --live --format json http-request cloud-flowdata --pv-system <id>
Health Checks
local-healthverifies local-host reachability by reading the local API version endpoint.cloud-auth-checkverifies Solar.web key validity by reading the bounded PV systems list endpoint. A 401 or 403 from Solar.web means the upstream API rejected the injected key pair or the key lacks access. Gateway errors that nameFRONIUS_SOLARWEB_ACCESS_KEY_IDorFRONIUS_SOLARWEB_ACCESS_KEY_VALUEindicate missing, unavailable, or blocked SecretRefs. A 429 means the account hit Solar.web rate limits.
Error Interpretation
- For local DNS, connection refused, timeout, no route to host, or gateway network-policy denial, report the exact gateway/local failure and ask for the actual inverter host when no operator-supplied host is available.
- For helper errors naming
FRONIUS_LOCAL_HOST, ask the operator for the inverter LAN base URL or a configured environment value. - For gateway errors naming
FRONIUS_SOLARWEB_ACCESS_KEY_IDorFRONIUS_SOLARWEB_ACCESS_KEY_VALUE, ask the operator to set or unblock that specific secret. - For Solar.web 401 or 403, report that the configured Solar.web key pair was rejected or lacks access.
- When both local and cloud paths fail, give a concise status for each path and one next action for each.
Result Handling
- Use
local-summaryfor local live status answers. Report from its normalizedmetrics,meter, andstorageobjects. - Use
local-power-floworcloud-flowdatato summarize live production, consumption, grid exchange, battery power, and self-consumption ratio. - For local live production, prefer
local-power-flow; read current PV production fromBody.Data.Site.P_PVin watts, current load fromBody.Data.Site.P_Load, grid exchange fromBody.Data.Site.P_Grid, and battery power fromBody.Data.Site.P_Akkuwhen present. - Use
local-meter-realtime --scope Systemfor Smart Meter details; read current meter power fromBody.Data.<meterId>.PowerReal_P_Sum. - Use
local-storage-realtime --scope Systemfor battery details; read state of charge fromBody.Data.<storageId>.Controller.StateOfCharge_Relativeand preferlocal-power-flowP_Akkufor live battery power. - For inverter-only live output, use
local-inverter-realtime --scope System; read current AC inverter power fromBody.Data.PAC.Valuesin watts and sum the device values when a plant total is needed. For a single device, uselocal-inverter-realtime --scope Device --device-id <id> --data-collection CommonInverterDataand readBody.Data.PAC.Valuein watts. - Use
local-inverter-infofor inverter identity, status, serial/unique ID, and connected or rated PV capacity. InterpretPVPowerfromGetInverterInfo.cgias connected/rated PV capacity in watts. - Use
local-archive,cloud-aggrdata, orcloud-histdatafor R5 energy rollups. Helper output includes aresponseShapedescribing stable rollup fields such as produced energy, consumed energy, period, and channel values. - Use
cloud-messagesandcloud-errorsfor R29 incident-card summaries: inverter offline, battery fault, export curtailment, meter failure, or repeated communication errors. - State whether each answer came from the local inverter or Solar.web cloud. When the operator explicitly asks for local LAN data, keep the answer scoped to the local path unless the operator asks for cloud fallback.
Policy Notes
Local inverter access requires gateway host policy for the selected LAN host
and Fronius /solar_api/ paths. Cloud access requires policy for
api.solarweb.com. Keep mutating endpoints out of scope for v1 even if an API
reference mentions installer-only or configuration surfaces.
References: Fronius Solar API V1, Solar.web Query API, and Solar.web Query API overview.
Signals
- GitHub stars
- 132
- Forks
- 12
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
fronius- Source
- github.com/hybridaione/hybridclaw