Add extracted tools: CitrineOS, OpenOCPP, ShapeShifter

- CitrineOS core extracted (CSMS OCPP 2.0.1)
- OpenOCPP extracted (firmware OCPP 1.6J/2.0.1)
- ShapeShifter library installed (pip install -e)
- ShapeShifter specification extracted
- EVerest extracted

TODO updated with progress
This commit is contained in:
Eric F
2026-06-08 00:38:27 -04:00
parent 468cfeaa50
commit d398a6ced2
7326 changed files with 1177561 additions and 7 deletions

View File

@@ -0,0 +1,16 @@
@startuml
!theme cerulean
participant AGR
participant CRO
participant DSO
== Contract ==
AGR <-> DSO: Pre-qualification AGR
AGR -> AGR: contract Prosumers
CRO <- DSO: publish congestion points incl. connections
AGR -> CRO: publish connections related to contracted Prosumers
AGR <-> DSO: [optional] negotiate FlexOption
DSO -> DSO: Pre-Q asset(s)
@enduml

View File

@@ -0,0 +1,16 @@
@startuml
!theme cerulean
participant AGR
participant DSO
== Operate ==
DSO -> DSO: Grid safety analysis -> NOK
DSO -> DSO: Evaluate offers
AGR <- DSO: FlexOrder
AGR -> AGR: control portfolio
AGR -> DSO: (updated) D-prognosis
AGR -> AGR: reconsider offer
AGR -> DSO: FlexOfferRevocation
@enduml

View File

@@ -0,0 +1,15 @@
@startuml
!theme cerulean
participant AGR
participant CRO
participant DSO
== Plan ==
AGR -> CRO: Retrieve list congestion points incl. associated connections
CRO <- DSO: Retrieve 'active' Aggregators for each congestion point
AGR -> AGR: optimize portfolio
AGR <- DSO: [optional] FlexReservationUpdate
AGR -> AGR: optimize portfolio
@enduml

View File

@@ -0,0 +1,20 @@
@startuml
!theme cerulean
participant AGR
participant DSO
== Settle ==
group par
AGR -> AGR: calculate sold flexibility
DSO -> DSO: calculate procured flexibility
DSO -> DSO: collect meter data
AGR -> AGR: validate if baselines are met
AGR -> AGR: calculate flex fee (and penalty)
DSO -> DSO: calculate flex fee (and penalty)
end
AGR <- DSO: FlexSettlement
AGR -> AGR: validate with own calculations
AGR -> DSO: Response: accepted OR disputed
@enduml

View File

@@ -0,0 +1,23 @@
@startuml
!theme cerulean
participant DSO
participant CRO
DSO -> CRO: DSOPortfolioUpdate
DSO <-- CRO: HTTP OK
alt if CRO is operating in open mode
DSO <- CRO: DSOPortfolioUpdateResponse Result=Accepted
DSO --> CRO: HTTP OK
else
alt if DSO is an authorized participant
DSO <- CRO: DSOPortfolioUpdateResponse Result=Accepted
DSO --> CRO: HTTP OK
else
DSO <- CRO: DSOPortfolioUpdateResponse Result=Rejected
DSO --> CRO: HTTP OK
end
end
@enduml

View File

@@ -0,0 +1,18 @@
@startuml
!theme cerulean
participant AGR
participant DSO
AGR <- DSO: FlexOrder
AGR --> DSO: HTTP OK
alt if FlexOrder is valid
AGR -> DSO: FlexOrderResponse Result=Accepted
AGR <-- DSO: HTTP OK
else
AGR -> DSO: FlexOrderResponse Result=Rejected
AGR <-- DSO: HTTP OK
end
@enduml

View File

@@ -0,0 +1,20 @@
@startuml
!theme cerulean
participant AGR
participant DSO
loop for each available FlexOffer to be accepted
AGR <- DSO: FlexOrder
AGR --> DSO: HTTP OK
alt if FlexOrder is valid
AGR -> DSO: FlexOrderResponse Result=Accepted
AGR <-- DSO: HTTP OK
else
AGR -> DSO: FlexOrderResponse Result=Rejected
AGR <-- DSO: HTTP OK
end
end
@enduml

View File

@@ -0,0 +1,25 @@
@startuml
!theme cerulean
participant AGR
participant DSO
AGR <- DSO: FlexSettlement
AGR --> DSO: HTTP OK
alt if FlexSettlement is valid
loop for each FlexOrderSettlement in FlexSettlement
alt if settlement details are accepted
AGR -> AGR: ...Disposition=Accepted
else
AGR -> AGR: ...Disposition=Rejected
end
end
AGR -> DSO: FlexSettlementResponse Result=Accepted
AGR <-- DSO: HTTP OK
else
AGR -> DSO: FlexSettlementResponse Result=Rejected
AGR <-- DSO: HTTP OK
end
@enduml

View File

@@ -0,0 +1,23 @@
@startuml
!theme cerulean
participant AGR
participant CRO
AGR -> CRO: AGRPortfolioUpdate
AGR <-- CRO: HTTP OK
alt if CRO is operating in open mode
AGR <- CRO: AGRPortfolioUpdateResponse Result=Accepted
AGR --> CRO: HTTP OK
else
alt if AGR is an authorized participant
AGR <- CRO: AGRPortfolioUpdateResponse Result=Accepted
AGR --> CRO: HTTP OK
else
AGR <- CRO: AGRPortfolioUpdateResponse Result=Rejected
AGR --> CRO: HTTP OK
end
end
@enduml

View File

@@ -0,0 +1,23 @@
@startuml
!theme cerulean
participant AGR
participant CRO
AGR -> CRO: AGRPortfolioQuery
AGR <-- CRO: HTTP OK
alt if CRO is operating in open mode
AGR <- CRO: AGRPortfolioQueryResponse Result=Accepted
AGR --> CRO: HTTP OK
else
alt if AGR is an authorized participant
AGR <- CRO: AGRPortfolioQueryResponse Result=Accepted
AGR --> CRO: HTTP OK
else
AGR <- CRO: AGRPortfolioQueryResponse Result=Rejected
AGR --> CRO: HTTP OK
end
end
@enduml

View File

@@ -0,0 +1,23 @@
@startuml
!theme cerulean
participant DSO
participant CRO
DSO -> CRO: DSOPortfolioQuery
DSO <-- CRO: HTTP OK
alt if CRO is operating in open mode
DSO <- CRO: DSOPortfolioQueryResponse Result=Accepted
DSO --> CRO: HTTP OK
else
alt if DSO is an authorized participant
DSO <- CRO: DSOPortfolioQueryResponse Result=Accepted
DSO --> CRO: HTTP OK
else
DSO <- CRO: DSOPortfolioQueryResponse Result=Rejected
DSO --> CRO: HTTP OK
end
end
@enduml

View File

@@ -0,0 +1,20 @@
@startuml
!theme cerulean
participant AGR
participant DSO
loop for each contracted flex reservation in a certain period
AGR <- DSO: FlexReservationUpdate
AGR --> DSO: HTTP OK
alt if FlexReservationUpdate is valid
AGR -> DSO: FlexReservationUpdateResponse Result=Accepted
AGR <-- DSO: HTTP OK
else
AGR -> DSO: FlexReservationUpdateResponse Result=Rejected
AGR <-- DSO: HTTP OK
end
end
@enduml

View File

@@ -0,0 +1,20 @@
@startuml
!theme cerulean
participant AGR
participant DSO
loop for each Congestion Point with contracted Prosumers
AGR -> DSO: D-Prognosis
AGR <-- DSO: HTTP OK
alt if D-Prognosis is valid
AGR -> DSO: D-PrognosisResponse Result=Accepted
AGR <-- DSO: HTTP OK
else
AGR -> DSO: D-PrognosisResponse Result=Rejected
AGR <-- DSO: HTTP OK
end
end
@enduml

View File

@@ -0,0 +1,20 @@
@startuml
!theme cerulean
participant AGR
participant DSO
loop for each Congestion Point with expected congestion in a certain period
AGR <- DSO: FlexRequest
AGR --> DSO: HTTP OK
alt if FlexRequest is valid
AGR -> DSO: FlexRequestResponse Result=Accepted
AGR <-- DSO: HTTP OK
else
AGR -> DSO: FlexRequestResponse Result=Rejected
AGR <-- DSO: HTTP OK
end
end
@enduml

View File

@@ -0,0 +1,20 @@
@startuml
!theme cerulean
participant AGR
participant DSO
loop for each open flexibility request or unsolicited flexibility offer
AGR -> DSO: FlexOffer
AGR <-- DSO: HTTP OK
alt if FlexOffer is valid
AGR <- DSO: FlexOfferResponse Result=Accepted
AGR --> DSO: HTTP OK
else
AGR <- DSO: FlexOfferResponse Result=Rejected
AGR --> DSO: HTTP OK
end
end
@enduml

View File

@@ -0,0 +1,20 @@
@startuml
!theme cerulean
participant AGR
participant DSO
loop for each open successfully transmitted FlexOffer to be revoked
AGR -> DSO: FlexOfferRevocation
AGR <-- DSO: HTTP OK
alt if FlexOfferRevocation is valid
AGR <- DSO: FlexOfferRevocationResponse Result=Accepted
AGR --> DSO: HTTP OK
else
AGR <- DSO: FlexOfferRevocationResponse Result=Rejected
AGR --> DSO: HTTP OK
end
end
@enduml

View File

@@ -0,0 +1,13 @@
@startuml
!theme cerulean
participant AGR
participant DSO
== Validate ==
DSO -> DSO: Grid safety analysis -> NOK
DSO -> DSO: Select flexibility agreement
AGR <- DSO: FlexOrder
DSO -> DSO: Grid safety analysis -> OK
@enduml

View File

@@ -0,0 +1,23 @@
@startuml
!theme cerulean
== Validate ==
AGR <- DSO: FlexRequest
AGR <- AGR: determine offers
AGR -> DSO: FlexOffer
DSO -> DSO: Evaluate offers
DSO -> AGR: FlexOrder
== Plan ==
AGR -> AGR: re-optimize portfolio
== Validate ==
AGR -> DSO: (updated) D-prognosis
DSO -> DSO: Grid safety analysis -> NOK
AGR <- DSO: FlexRequest
AGR <- AGR: determine offers
AGR -> DSO: FlexOffer
== Gate closure ==
@enduml

View File

@@ -0,0 +1,15 @@
@startuml
!theme cerulean
== Validate ==
AGR <- DSO: FlexRequest
AGR <- AGR: determine offers
AGR -> DSO: FlexOffer
AGR -> DSO: FlexOffer
AGR -> DSO: FlexOffer
DSO -> DSO: Evaluate offers
AGR -> AGR: reconsider offer
AGR -> DSO: FlexOfferRevocation
DSO -> DSO: Evaluate offers
@enduml

View File

@@ -0,0 +1,24 @@
@startuml
!theme cerulean
participant AGR as AGR1
participant AGR as AGR2
participant DSO
== Validate ==
DSO -> DSO: non-aggregator forecast
AGR1 -> DSO: [optional] D-prognosis
AGR2 -> DSO: [optional] D-prognosis
DSO -> DSO: Grid safety analysis -> NOK
AGR2 <- DSO: FlexRequest
AGR1 <- DSO: FlexRequest
AGR1 <- AGR1: determine offers
AGR2 <- AGR2: determine offers
AGR2 -> DSO: FlexOffer
DSO -> DSO: Evaluate offers
AGR2 <- DSO: FlexOrder
AGR2 -> DSO: [optional] (updated) D-prognosis
DSO -> DSO: Grid safety analysis -> OK
DSO -> DSO: Grid safety analysis -> OK
@enduml