uprava adutiu - nacitani dalsich registru, uprava ekonomiky
This commit is contained in:
@@ -9,14 +9,27 @@ CREATE OR REPLACE VIEW ems.vw_economics_interval AS
|
||||
SELECT
|
||||
ai.site_id,
|
||||
ai.interval_start,
|
||||
ROUND(GREATEST(ai.actual_grid_power_w, 0)::NUMERIC / 4000, 4) AS import_kwh,
|
||||
ROUND(ABS(LEAST(ai.actual_grid_power_w, 0))::NUMERIC / 4000, 4) AS export_kwh,
|
||||
CASE WHEN ai.actual_grid_power_w >= 0
|
||||
THEN ROUND((ai.actual_grid_power_w::NUMERIC / 4000)
|
||||
* COALESCE(ep.effective_buy_price_czk_kwh, 0), 4)
|
||||
ELSE ROUND((ai.actual_grid_power_w::NUMERIC / 4000)
|
||||
* COALESCE(ep.effective_sell_price_czk_kwh, 0), 4)
|
||||
END AS dynamic_cost_czk,
|
||||
-- Wh-based kWh (per-direction, zachytí bidirectional flow)
|
||||
ROUND(COALESCE(ai.actual_grid_import_wh, GREATEST(ai.actual_grid_power_w, 0)::NUMERIC / 4) / 1000, 4)
|
||||
AS import_kwh,
|
||||
ROUND(COALESCE(ai.actual_grid_export_wh, ABS(LEAST(ai.actual_grid_power_w, 0))::NUMERIC / 4) / 1000, 4)
|
||||
AS export_kwh,
|
||||
-- Směrové cashflow: kolik Kč za import ze sítě / kolik Kč za export do sítě
|
||||
ROUND(
|
||||
COALESCE(ai.actual_grid_import_wh, GREATEST(ai.actual_grid_power_w, 0)::NUMERIC / 4)
|
||||
/ 1000.0 * COALESCE(ep.effective_buy_price_czk_kwh, 0), 4
|
||||
) AS grid_import_cashflow_czk,
|
||||
ROUND(
|
||||
COALESCE(ai.actual_grid_export_wh, ABS(LEAST(ai.actual_grid_power_w, 0))::NUMERIC / 4)
|
||||
/ 1000.0 * COALESCE(ep.effective_sell_price_czk_kwh, 0), 4
|
||||
) AS grid_export_revenue_czk,
|
||||
-- Net cost (zpětná kompatibilita): import_cashflow - export_revenue
|
||||
ROUND(
|
||||
COALESCE(ai.actual_grid_import_wh, GREATEST(ai.actual_grid_power_w, 0)::NUMERIC / 4)
|
||||
/ 1000.0 * COALESCE(ep.effective_buy_price_czk_kwh, 0)
|
||||
- COALESCE(ai.actual_grid_export_wh, ABS(LEAST(ai.actual_grid_power_w, 0))::NUMERIC / 4)
|
||||
/ 1000.0 * COALESCE(ep.effective_sell_price_czk_kwh, 0), 4
|
||||
) AS dynamic_cost_czk,
|
||||
ai.actual_cost_czk AS stored_cost_czk,
|
||||
ai.green_bonus_czk,
|
||||
pi.expected_cost_czk AS planned_cost_czk,
|
||||
@@ -31,7 +44,13 @@ SELECT
|
||||
ai.actual_ev_power_w,
|
||||
ai.actual_heat_pump_power_w,
|
||||
ai.actual_battery_power_w,
|
||||
ai.actual_battery_soc_pct
|
||||
ai.actual_battery_soc_pct,
|
||||
ai.actual_grid_import_wh,
|
||||
ai.actual_grid_export_wh,
|
||||
ai.actual_batt_charge_wh,
|
||||
ai.actual_batt_discharge_wh,
|
||||
ai.actual_pv_production_wh,
|
||||
ai.actual_load_consumption_wh
|
||||
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
|
||||
@@ -39,7 +58,10 @@ LEFT JOIN ems.planning_interval pi
|
||||
ON pi.run_id = ai.planning_run_id AND pi.interval_start = ai.interval_start;
|
||||
|
||||
COMMENT ON VIEW ems.vw_economics_interval IS
|
||||
'Dynamické ekonomické vyhodnocení per 15min slot (závisí na vw_site_effective_price).';
|
||||
'Dynamické ekonomické vyhodnocení per 15min slot.
|
||||
import/export kWh primárně z per-direction Wh sloupců audit_interval (Deye counter / per-minute split),
|
||||
fallback na průměrný výkon pro zpětnou kompatibilitu se starými daty.
|
||||
grid_import_cashflow_czk / grid_export_revenue_czk = směrové cashflow podle skutečného toku energie.';
|
||||
|
||||
CREATE OR REPLACE VIEW ems.vw_economics_daily AS
|
||||
SELECT
|
||||
@@ -53,7 +75,11 @@ SELECT
|
||||
ROUND(SUM(GREATEST(actual_ev_power_w, 0)::NUMERIC / 4000), 3) AS ev_kwh,
|
||||
ROUND(SUM(GREATEST(actual_heat_pump_power_w, 0)::NUMERIC / 4000), 3) AS hp_kwh,
|
||||
ROUND(SUM(GREATEST(actual_pv_power_w, 0)::NUMERIC / 4000)
|
||||
- SUM(export_kwh), 3) AS self_consumption_kwh,
|
||||
- SUM(export_kwh), 3) AS pv_self_consumption_kwh,
|
||||
-- Směrové cashflow (podle směru energie, ne znaménka peněz)
|
||||
ROUND(SUM(grid_import_cashflow_czk), 2) AS grid_import_cashflow_czk,
|
||||
ROUND(SUM(grid_export_revenue_czk), 2) AS grid_export_revenue_czk,
|
||||
-- Staré sloupce (podle znaménka peněz – zpětná kompatibilita)
|
||||
ROUND(SUM(CASE WHEN dynamic_cost_czk > 0
|
||||
THEN dynamic_cost_czk ELSE 0 END), 2) AS import_cost_czk,
|
||||
ROUND(SUM(CASE WHEN dynamic_cost_czk < 0
|
||||
@@ -63,8 +89,7 @@ SELECT
|
||||
ROUND(-SUM(dynamic_cost_czk)
|
||||
+ COALESCE(SUM(green_bonus_czk), 0), 2) AS total_balance_czk,
|
||||
ROUND(SUM(planned_cost_czk), 2) AS planned_net_cost_czk,
|
||||
ROUND(-COALESCE(SUM(planned_cost_czk), 0)
|
||||
+ COALESCE(SUM(green_bonus_czk), 0), 2) AS planned_balance_czk,
|
||||
ROUND(-COALESCE(SUM(planned_cost_czk), 0), 2) AS planned_balance_czk,
|
||||
ROUND(SUM(dynamic_cost_czk)
|
||||
- COALESCE(SUM(planned_cost_czk), 0), 2) AS deviation_cost_czk
|
||||
FROM ems.vw_economics_interval
|
||||
@@ -72,4 +97,5 @@ GROUP BY site_id,
|
||||
date_trunc('day', interval_start AT TIME ZONE 'Europe/Prague')::date;
|
||||
|
||||
COMMENT ON VIEW ems.vw_economics_daily IS
|
||||
'Denní souhrn ekonomiky (závisí na vw_economics_interval).';
|
||||
'Denní souhrn ekonomiky. planned_balance_czk = jen síťové náklady (bez zeleného bonusu).
|
||||
grid_import_cashflow_czk / grid_export_revenue_czk = směrové cashflow podle skutečného toku energie.';
|
||||
|
||||
Reference in New Issue
Block a user