-
Notifications
You must be signed in to change notification settings - Fork 17
Dispatching Service
Dispatching includes the management of charging stations and other kind of flexible electricity consumer as well as the production of electricity, therefore the dispatch process involves not only managing the generation of electricity but also managing the consumption of electricity across multiple microgrids. Briefly put, dispatching is a process of sending a set of instructions to an energy producer or consumer of a specific microgrid for a given point in time.
The flowchart depicts the architecture of the Frequenz cloud-based API ecosystem that is a vital component for building a decentralized and distributed energy management system with the Frequenz SDK. The system uses a DispatchService daemon and a gRPC API to enable communication between different components.
In the flowchart a SDK-based cloud application sends a dispatch requests to DispatchService gRPC API using the SDK DispatchAPIClient. The DispatchService gRPC API distributes the request to the edge application.
The SDK DispatchBroadcastingActor running on a microgrid controller receives that request from the DispatchService gRPC API and forwards that to the applications two Use Case Actors that receive the dispatch request via the DispatchBroadcastingActor.
flowchart TB
subgraph cloud["Cloud"]
api["DispatchService (daemon)\nExposes gRPC API"]
subgraph ui["UI"]
user["UI User"]
end
subgraph cloud_app["Cloud App"]
cloud_actor["App Actor\n(ex: TradingActor)"]
subgraph sdk_cloud["SDK (Cloud)"]
cloud_client["DispatchAPIClient (producer)"]
end
cloud_actor -->|"Creates Dispatch (1a)"| cloud_client
end
end
user -->|"Creates Dispatch (1b)"| api
cloud_client -->|"(2)"| api
api -->|"(3)"| edge_client
subgraph edge["Edge"]
subgraph edge_app["Edge App"]
edge_actor1["Use Case Actor 1"]
edge_actor2["Use Case Actor 2"]
subgraph sdk_edge["SDK (Edge)"]
edge_client["DispatchAPIClient (consumer)"]
edge_dispatch_actor["DispatchBroadcastingActor"]
end
edge_client -->|"(4)"| edge_dispatch_actor
edge_dispatch_actor -->|"Broadcasts Dispatch (5a)"| edge_actor1
edge_dispatch_actor -->|"Broadcasts Dispatch (5b)"| edge_actor2
end
end