HOTFIX: planovac oslepl k autu po prejmenovani wallboxu (hardcoded kody)
fn_planning_site_context (R__039) a fn_load_planning_slots_full (R__063) mely natvrdo 'ev-charger-1/2' a 'deye-main'. Uzivatel prejmenoval wallboxy na 'vt-ev-charger-1/2' -> ctx.vehicles=[], ev_sessions=[null,null], ev1/ev2_connected vzdy false -> planovac nevidel auto -> ZADNE nabijeni ani v zapornych cenach (Tesla 70%, potrebuje 90% do Po 7:00, okno -0.32 Kc ve 13:45 nevyuzite). Fix: vyber wallboxu DYNAMICKY podle site_id, ev1=nejnizsi ch.id, ev2=druhy (stabilni, odolne prejmenovani). Inverter pro gen_cutoff pres controllable=true misto code='deye-main'. Konzistentni R__039 (vehicles order by id, sessions dynamicke kody) + R__063 (ev1/ev2 connected). Pure SQL, 363 testu zelenych. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -126,7 +126,8 @@ begin
|
|||||||
select ai.deye_gen_microinverter_cutoff_enabled
|
select ai.deye_gen_microinverter_cutoff_enabled
|
||||||
from ems.asset_inverter ai
|
from ems.asset_inverter ai
|
||||||
where ai.site_id = p_site_id
|
where ai.site_id = p_site_id
|
||||||
and ai.code = 'deye-main'
|
and ai.controllable = true
|
||||||
|
order by ai.id
|
||||||
limit 1
|
limit 1
|
||||||
),
|
),
|
||||||
false
|
false
|
||||||
@@ -169,22 +170,30 @@ begin
|
|||||||
'battery_capacity_kwh', v.battery_capacity_kwh,
|
'battery_capacity_kwh', v.battery_capacity_kwh,
|
||||||
'default_target_soc_pct', v.default_target_soc_pct
|
'default_target_soc_pct', v.default_target_soc_pct
|
||||||
)
|
)
|
||||||
order by ch.code
|
order by ch.id
|
||||||
),
|
),
|
||||||
'[]'::jsonb
|
'[]'::jsonb
|
||||||
)
|
)
|
||||||
into v_veh
|
into v_veh
|
||||||
from ems.asset_vehicle v
|
from ems.asset_vehicle v
|
||||||
join ems.asset_ev_charger ch on ch.id = v.default_charger_id
|
join ems.asset_ev_charger ch on ch.id = v.default_charger_id
|
||||||
where v.site_id = p_site_id
|
where v.site_id = p_site_id;
|
||||||
and ch.code in ('ev-charger-1', 'ev-charger-2');
|
|
||||||
|
|
||||||
-- EV session per wallbox — logika v ems.fn_ev_session_planning_json
|
-- EV session per wallbox — logika v ems.fn_ev_session_planning_json
|
||||||
-- (R__038): session se NEvyřazuje při needed_wh=0 (auto nad targetem),
|
-- (R__038): session se NEvyřazuje při needed_wh=0 (auto nad targetem),
|
||||||
-- zůstává v plánu kvůli oportunistickému headroomu i jako známá zátěž.
|
-- zůstává v plánu kvůli oportunistickému headroomu i jako známá zátěž.
|
||||||
|
-- Wallboxy se vybírají DYNAMICKY podle site (řazeno ch.id = stabilní pořadí
|
||||||
|
-- ev1/ev2), NE podle natvrdo kódu — uživatel může wallbox přejmenovat
|
||||||
|
-- (2026-06-14: rename 'ev-charger-1' → 'vt-ev-charger-1' oslepil plánovač).
|
||||||
v_ev := jsonb_build_array(
|
v_ev := jsonb_build_array(
|
||||||
ems.fn_ev_session_planning_json(p_site_id, 'ev-charger-1'),
|
ems.fn_ev_session_planning_json(
|
||||||
ems.fn_ev_session_planning_json(p_site_id, 'ev-charger-2')
|
p_site_id,
|
||||||
|
(select code from ems.asset_ev_charger where site_id = p_site_id order by id limit 1)
|
||||||
|
),
|
||||||
|
ems.fn_ev_session_planning_json(
|
||||||
|
p_site_id,
|
||||||
|
(select code from ems.asset_ev_charger where site_id = p_site_id order by id offset 1 limit 1)
|
||||||
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
select ti.battery_soc_percent
|
select ti.battery_soc_percent
|
||||||
|
|||||||
@@ -209,7 +209,8 @@ begin
|
|||||||
select t.status
|
select t.status
|
||||||
from ems.telemetry_ev_charger t
|
from ems.telemetry_ev_charger t
|
||||||
join ems.asset_ev_charger ch on ch.id = t.charger_id
|
join ems.asset_ev_charger ch on ch.id = t.charger_id
|
||||||
where t.site_id = p_site_id and ch.code = 'ev-charger-1'
|
where t.site_id = p_site_id
|
||||||
|
and ch.id = (select id from ems.asset_ev_charger where site_id = p_site_id order by id limit 1)
|
||||||
order by t.measured_at desc
|
order by t.measured_at desc
|
||||||
limit 1
|
limit 1
|
||||||
) ev1 on true
|
) ev1 on true
|
||||||
@@ -217,7 +218,8 @@ begin
|
|||||||
select t.status
|
select t.status
|
||||||
from ems.telemetry_ev_charger t
|
from ems.telemetry_ev_charger t
|
||||||
join ems.asset_ev_charger ch on ch.id = t.charger_id
|
join ems.asset_ev_charger ch on ch.id = t.charger_id
|
||||||
where t.site_id = p_site_id and ch.code = 'ev-charger-2'
|
where t.site_id = p_site_id
|
||||||
|
and ch.id = (select id from ems.asset_ev_charger where site_id = p_site_id order by id offset 1 limit 1)
|
||||||
order by t.measured_at desc
|
order by t.measured_at desc
|
||||||
limit 1
|
limit 1
|
||||||
) ev2 on true;
|
) ev2 on true;
|
||||||
|
|||||||
Reference in New Issue
Block a user