Use Case: TAF10 Low-Voltage Grid Protection
Status: modelled as a separate TAF10 use case - all artifacts ship with
the repository as reference artifacts under schemas/usecases/taf10-grid-sta/.
They can be imported through the ModelForge facade of a host application.
Scenario
TAF10 is about Niederspannungsnetzleitwerte, not air quality. The use case collects smart-meter and low-voltage grid telemetry to protect a distribution grid segment from overloads caused by load peaks or feed-in peaks, for example from photovoltaic systems.
TAF10 grid telemetry continuously records:
- Active power consumed from the grid (
activePowerPlus) - Active power fed into the grid (
activePowerMinus) - Voltage, current, and frequency at the measurement point
- Grid node or feeder identity
The raw telemetry arrives via MQTT. Grid-node master data and operational
thresholds are looked up from PostgreSQL. Normal values are published as
OGC SensorThings observations; threshold violations are mapped to a
SwitchingAction and sent to a grid-control HTTP endpoint.
Data flow
The first filter removes bad-quality measurements. The enrich step joins
GridNodeMasterData by gridNodeId, including maxLoadW, maxFeedInW,
voltageMinV, voltageMaxV, and controllable assets. The observation branch
posts active power import, active power feed-in, and voltage to FROST. The
protection branch detects load/feed-in peaks or voltage-band violations and
posts a SwitchingAction to the grid-control service.
Data structures
| Element | URN |
|---|---|
| Measurement | urn:core:platform:civitas:element:taf10-grid:Measurement:k9ta3hkxjf:1.0.0 |
| TAF10GridReading | urn:core:platform:civitas:element:taf10-grid:TAF10GridReading:1ygff0bi74:1.0.0 |
| GridNodeMasterData | urn:core:platform:civitas:element:taf10-grid:GridNodeMasterData:2t0ap2oin7:1.0.0 |
| SwitchingAction | urn:core:platform:civitas:element:taf10-grid:SwitchingAction:2qna16a0ec:1.0.0 |
| GeoPoint | urn:core:platform:civitas:element:common:GeoPoint:3ak90vqrog:1.0.0 |
| STAThing | urn:core:platform:civitas:element:sta:STAThing:1f0bfaterl:1.0.0 |
| STAObservation | urn:core:platform:civitas:element:sta:STAObservation:np3hnkoj04:1.0.0 |
The shared common/sta Elements (GeoPoint, STAThing, STAObservation) are
defined in the air-quality use case's folder
(schemas/usecases/luftqualitaet-sta/) and reused here.
Reference relationships:
TAF10GridReading-> TAF10Measurement, commonGeoPointGridNodeMasterData-> commonGeoPoint- Observation mappings target shared
STAObservation SwitchingActionis the outbound control-command payload
Mappings
| Mapping | URN |
|---|---|
| GridNodeMasterData -> STAThing | urn:core:platform:civitas:mapping:taf10-grid:gridnode-to-sta-thing:2oov2igmb5:1.0.0 |
| TAF10 activePowerPlus -> STAObservation | urn:core:platform:civitas:mapping:taf10-grid:taf10-to-activepowerplus:qtqz06ee4p:1.0.0 |
| TAF10 activePowerMinus -> STAObservation | urn:core:platform:civitas:mapping:taf10-grid:taf10-to-activepowerminus:fwxy1x3zhd:1.0.0 |
| TAF10 voltage -> STAObservation | urn:core:platform:civitas:mapping:taf10-grid:taf10-to-voltage:unzn4u9zf0:1.0.0 |
| TAF10 threshold violation -> SwitchingAction | urn:core:platform:civitas:mapping:taf10-grid:taf10-to-switching-action:1xeycp9kuz:1.0.0 |
The observation mappings copy timestamp, result, quality, unit, and gridNodeId.
The action mapping creates a high-priority grid-control command when the
pipeline's threshold filter detects a protective action condition.
Pipeline
urn:core:platform:civitas:pipeline:taf10-grid:TAF10-Grid-Protection:iql8cspo0o:1.0.0
| Node | Kind | Configuration |
|---|---|---|
| ConsumeMQTT | source | Topic taf10/grid/+, Element TAF10GridReading |
| Plausibility filter | filter | Drops readings with bad quality for import, feed-in, or voltage |
| LookupRecord | enrich | Key $.gridNodeId -> PostgreSQL grid-node master data |
| Observation fan-out | mapping | activePowerPlus, activePowerMinus, voltage -> FROST observations |
| Peak detection | filter | activePowerPlus > maxLoadW, activePowerMinus > maxFeedInW, or voltage outside the configured band |
| SwitchingAction mapping | mapping | Builds the grid-control command payload |
| InvokeHTTP | sink | FROST POST /Observations and grid-control POST /api/v1/switching-actions |
External endpoints
| Endpoint | Description |
|---|---|
POST /FROST-Server/v1.1/Observations | Electrical measurement observations |
POST http://grid-control:8080/api/v1/switching-actions | Protective switching or curtailment requests |
GET /FROST-Server/v1.1/ObservedProperties | Active power import, active power feed-in, voltage |