DFD — Smart Meter Half-Hourly Settlement
Level-1 flow of SMETS2 meter reads from the consumer premises through the regulated data network into supplier aggregation and industry settlement, with every boundary crossing drawn as attack surface.
Make it your own.
title "Smart meter data — half-hourly settlement"
level 1
entity "Domestic meter (SMETS2)"
entity "Data communications company"
entity "Distribution network operator"
entity "Settlement administrator"
entity Consumer
process 1 "Collect half-hourly reads"
process 2 "Validate and estimate"
process 3 "Aggregate by supplier"
process 4 "Calculate settlement volumes"
process 5 "Publish consumption to app"
store D1 "Meter and tariff register"
store D2 "Half-hourly read store"
store D3 "Estimation audit"
store D4 "Settlement runs"
boundary "Consumer premises" { "Domestic meter (SMETS2)", Consumer }
boundary "Regulated data network" { "Data communications company", 1 }
boundary "Supplier platform" { 2, 3, 4, 5, D1, D2, D3, D4 }
boundary "Industry systems" { "Settlement administrator", "Distribution network operator" }
"Domestic meter (SMETS2)" -> 1 : "half-hourly register reads"
1 -> "Data communications company" : "read request (DCC adapter)"
"Data communications company" -> 1 : "signed read payload"
1 -> D2 : "raw half-hourly reads"
1 -> D1 : "commissioning record"
D1 -> 2 : "MPAN + meter configuration"
D2 -> 2 : "raw reads"
"Distribution network operator" -> 2 : "outage and de-energisation notices"
2 -> D2 : "validated reads"
2 -> D3 : "estimation reason code"
D3 -> 3 : "estimated volume flags"
D2 -> 3 : "validated reads"
3 -> D4 : "supplier aggregate"
D4 -> 4 : "aggregated volumes"
4 -> "Settlement administrator" : "settlement volumes"
"Settlement administrator" -> 4 : "reconciliation run result"
4 -> D4 : "reconciled position"
D2 -> 5 : "consumer half-hourly series"
D1 -> 5 : "tariff and meter details"
Consumer -> 5 : "tariff comparison request"
5 -> Consumer : "usage and cost breakdown"