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:
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user