fix ranniho neprodeje do site
Some checks failed
CI and deploy / migration-check (push) Failing after 42s
CI and deploy / deploy (push) Has been skipped

This commit is contained in:
Dusan Vojacek
2026-05-21 10:02:19 +02:00
parent 27323fd77a
commit 44a06b6288
9 changed files with 123 additions and 5 deletions

View File

@@ -96,6 +96,8 @@ def _build_setpoints(
export_mode = str(export_mode_raw).strip().upper() if export_mode_raw is not None else None
if export_mode == "NONE":
export_limit = 0
elif export_limit <= 0 and grid_sp < 0:
export_limit = abs(grid_sp)
# Záporný výkup sám o sobě neblokuje export, pokud plán export explicitně žádá.
export_ban = sell_f is not None and float(sell_f) < 0 and grid_sp >= 0
gen_cutoff_raw = pi.get("deye_gen_cutoff_enabled")
@@ -127,6 +129,7 @@ def _build_setpoints(
ev2_power_w=ev2_w,
target_soc_pct=target_soc,
deye_physical_mode=pm,
export_mode=export_mode,
export_ban=bool(export_ban),
deye_gen_cutoff_enabled=bool(gen_cutoff),
effective_sell_price_czk_kwh=sell_f,
@@ -214,6 +217,30 @@ def _deye_reg143_export_w(no_export: bool, max_export_power_w: int | None) -> in
return max(0, int(max_export_power_w or 0))
def _deye_reg142_limit_control(
*,
deye_mode: str,
grid_w: int,
export_ban: bool,
export_mode: str | None,
zero_export_mode: int,
) -> int:
"""
Reg 142: 0 = selling first, 1/2 = zero export (load / CT).
Plán s exportem (záporný grid_setpoint, bez export_ban) musí povolit prodej FVE do sítě
i v PASSIVE — jinak CT instalace (deye_zero_export_mode=2) drží přebytek v baterii.
"""
if deye_mode == "SELL":
return 0
em = (export_mode or "").strip().upper()
if export_ban or em == "NONE" or grid_w >= 0:
return int(zero_export_mode)
if em in {"PV_SURPLUS", "BATTERY_SELL"}:
return 0
# starší řádky bez export_mode: záporný grid_setpoint = export záměr
return 0
def _clamp_deye_tou_soc_pct(pct: int) -> int:
return max(5, min(95, pct))