![]() |
VOOZH | about |
dotnet add package CasCap.Api.Fronius --version 0.10.22
NuGet\Install-Package CasCap.Api.Fronius -Version 0.10.22
<PackageReference Include="CasCap.Api.Fronius" Version="0.10.22" />
<PackageVersion Include="CasCap.Api.Fronius" Version="0.10.22" />Directory.Packages.props
<PackageReference Include="CasCap.Api.Fronius" />Project file
paket add CasCap.Api.Fronius --version 0.10.22
#r "nuget: CasCap.Api.Fronius, 0.10.22"
#:package CasCap.Api.Fronius@0.10.22
#addin nuget:?package=CasCap.Api.Fronius&version=0.10.22Install as a Cake Addin
#tool nuget:?package=CasCap.Api.Fronius&version=0.10.22Install as a Cake Tool
A .NET library that integrates with a Fronius solar inverter (Symo Gen24) via its local Solar API v1, samples power-flow data every second, and fans each reading out to a configurable set of sinks for persistence, streaming, and observability.
dotnet add package CasCap.Api.Fronius
The library is built around one background service that forms the core pipeline:
FroniusMonitorBgService – Waits for the device health check to pass, then polls GetPowerFlowRealtimeData every second. Each response is wrapped in a FroniusEvent containing the five key power metrics (SOC, P_Akku, P_Grid, P_Load, P_PV) and a UTC timestamp. OpenTelemetry gauges are recorded for each metric before the event is dispatched in parallel to every registered IEventSink<FroniusEvent> implementation.
A REST API (FroniusController) exposes endpoints for real-time power flow, inverter data, meter readings, storage state, and historical line items.
| Sink | Description |
|---|---|
| Console | Logs every event via the .NET logger (Debug level) |
| Redis | Persists the latest five power metrics to a Redis hash (SOC, P_Akku, P_Grid, P_Load, P_PV) |
| Channel | Exposes events on an in-process Channel<FroniusEvent> (capacity 1,000) for MCP/AI tooling |
| Azure Tables | Writes detailed readings and a rolling snapshot to Azure Table Storage |
| OpenTelemetry | Emits power and percentage gauges via OpenTelemetry metrics |
| gRPC | Streams events to connected gRPC clients (backed by a dedicated channel) |
flowchart TD
INVERTER["Fronius Inverter\n(LAN REST API v1)"]
subgraph Monitor["FroniusMonitorBgService (every 1 s)"]
HEALTH["Await connection\nhealth check"]
FETCH["GetPowerFlowRealtimeData"]
BUILD["Build FroniusEvent\n(SOC, P_Akku, P_Grid, P_Load, P_PV, UtcDateTime)"]
METRICS["Record OpenTelemetry gauges"]
DISPATCH["Fan-out to all sinks\nTask.WhenAll"]
end
SINK_CONSOLE["Console Sink\n(logger)"]
SINK_REDIS["Redis Sink\n(latest snapshot hash)"]
SINK_CHANNEL["Channel Sink\n(in-process, capacity 1,000)"]
SINK_AZTABLES["Azure Tables Sink\n(readings + snapshot)"]
SINK_OTEL["OpenTelemetry Sink\n(power gauges)"]
SINK_GRPC["gRPC Sink\n(streaming, dedicated channel)"]
CLIENT["FroniusClientService\n(powerflow, inverter, meter, storage, …)"]
INVERTER -->|HTTP REST| CLIENT
CLIENT --> FETCH
HEALTH --> FETCH --> BUILD --> METRICS --> DISPATCH
DISPATCH --> SINK_CONSOLE
DISPATCH --> SINK_REDIS
DISPATCH --> SINK_CHANNEL
DISPATCH --> SINK_AZTABLES
DISPATCH --> SINK_OTEL
DISPATCH --> SINK_GRPC
{
"CasCap": {
"FroniusConfig": {
"BaseAddress": "http://192.168.1.248",
"AzureTableStorageConnectionString": "https://<account>.table.core.windows.net",
"Sinks": {
"AvailableSinks": {
"Console": { "Enabled": true },
"Metrics": { "Enabled": true }
}
}
}
}
}
{
"CasCap": {
"FroniusConfig": {
"BaseAddress": "http://192.168.1.248",
"HealthCheckUri": "solar_api/v1/GetPowerFlowRealtimeData.fcgi",
"HealthCheck": "Readiness",
"PollingIntervalMs": 1000,
"ConnectionPollingDelayMs": 1000,
"ConnectionLogEscalationInterval": 10,
"SocAlertThreshold": 0.95,
"SocAlertHysteresis": 0.05,
"SocAlertCooldownMs": 300000,
"AzureTableStorageConnectionString": "https://<account>.table.core.windows.net",
"HealthCheckAzureTableStorage": "None",
"Sinks": {
"AvailableSinks": {
"Console": { "Enabled": true },
"Memory": { "Enabled": true },
"Metrics": { "Enabled": true },
"AzureTables": { "Enabled": true },
"Redis": {
"Enabled": true,
"Settings": {
"SnapshotValues": "SOC,P_Akku,P_Grid,P_Load,P_PV"
}
},
"CommsStream": { "Enabled": true },
"SignalR": { "Enabled": true }
}
}
}
}
}
This project is released under . See the file for details.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 net8.0 is compatible. net8.0-android net8.0-android was computed. net8.0-browser net8.0-browser was computed. net8.0-ios net8.0-ios was computed. net8.0-maccatalyst net8.0-maccatalyst was computed. net8.0-macos net8.0-macos was computed. net8.0-tvos net8.0-tvos was computed. net8.0-windows net8.0-windows was computed. net9.0 net9.0 was computed. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 is compatible. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
Showing the top 1 NuGet packages that depend on CasCap.Api.Fronius:
| Package | Downloads |
|---|---|
|
CasCap.Api.Fronius.Sinks
Pluggable event sink implementations (Redis, Azure Tables) for the CasCap.Api.Fronius solar inverter integration library. |
This package is not used by any popular GitHub repositories.