do flow pridana ekonomika
This commit is contained in:
@@ -32,6 +32,10 @@ class DailyEnergyFlows(BaseModel):
|
||||
batt_to_grid_kwh: float
|
||||
grid_to_load_kwh: float
|
||||
grid_to_batt_kwh: float
|
||||
grid_import_cashflow_czk: float
|
||||
grid_export_revenue_czk: float
|
||||
grid_to_load_cost_czk: float
|
||||
grid_to_batt_cost_czk: float
|
||||
|
||||
|
||||
class DailyEnergyFlowsResponse(BaseModel):
|
||||
@@ -92,6 +96,10 @@ def _row_to_daily(r: Any) -> DailyEnergyFlows:
|
||||
batt_to_grid_kwh=_num(r["batt_to_grid_kwh"]),
|
||||
grid_to_load_kwh=_num(r["grid_to_load_kwh"]),
|
||||
grid_to_batt_kwh=_num(r["grid_to_batt_kwh"]),
|
||||
grid_import_cashflow_czk=_num(r["grid_import_cashflow_czk"]),
|
||||
grid_export_revenue_czk=_num(r["grid_export_revenue_czk"]),
|
||||
grid_to_load_cost_czk=_num(r["grid_to_load_cost_czk"]),
|
||||
grid_to_batt_cost_czk=_num(r["grid_to_batt_cost_czk"]),
|
||||
)
|
||||
|
||||
|
||||
@@ -148,8 +156,39 @@ async def get_energy_flows_daily(
|
||||
ROUND(SUM(COALESCE(ai.flow_grid_to_load_wh, 0)) / 1000, 3)
|
||||
AS grid_to_load_kwh,
|
||||
ROUND(SUM(COALESCE(ai.flow_grid_to_batt_wh, 0)) / 1000, 3)
|
||||
AS grid_to_batt_kwh
|
||||
AS grid_to_batt_kwh,
|
||||
ROUND(
|
||||
SUM(
|
||||
COALESCE(ai.actual_grid_import_wh, 0) / 1000.0
|
||||
* COALESCE(ep.effective_buy_price_czk_kwh, 0)
|
||||
),
|
||||
2
|
||||
) AS grid_import_cashflow_czk,
|
||||
ROUND(
|
||||
SUM(
|
||||
COALESCE(ai.actual_grid_export_wh, 0) / 1000.0
|
||||
* COALESCE(ep.effective_sell_price_czk_kwh, 0)
|
||||
),
|
||||
2
|
||||
) AS grid_export_revenue_czk,
|
||||
ROUND(
|
||||
SUM(
|
||||
COALESCE(ai.flow_grid_to_load_wh, 0) / 1000.0
|
||||
* COALESCE(ep.effective_buy_price_czk_kwh, 0)
|
||||
),
|
||||
2
|
||||
) AS grid_to_load_cost_czk,
|
||||
ROUND(
|
||||
SUM(
|
||||
COALESCE(ai.flow_grid_to_batt_wh, 0) / 1000.0
|
||||
* COALESCE(ep.effective_buy_price_czk_kwh, 0)
|
||||
),
|
||||
2
|
||||
) AS grid_to_batt_cost_czk
|
||||
FROM ems.audit_interval ai
|
||||
LEFT JOIN ems.vw_site_effective_price ep
|
||||
ON ep.site_id = ai.site_id
|
||||
AND ep.interval_start = ai.interval_start
|
||||
WHERE ai.site_id = $1
|
||||
AND (date_trunc('day', ai.interval_start AT TIME ZONE 'Europe/Prague'))::date
|
||||
>= $2
|
||||
|
||||
Reference in New Issue
Block a user