nastavitelny max sollar dle stridace (ulozeno v DB)
This commit is contained in:
33
db/migration/V082__deye_reg340_inverter_limits.sql
Normal file
33
db/migration/V082__deye_reg340_inverter_limits.sql
Normal file
@@ -0,0 +1,33 @@
|
||||
-- Reg 340 (max solar power): strop dle výkonu střídače, ne součtu Wp polí; min dle firmware.
|
||||
alter table ems.asset_inverter
|
||||
add column if not exists deye_reg340_max_solar_w int,
|
||||
add column if not exists deye_reg340_min_solar_w int not null default 0;
|
||||
|
||||
comment on column ems.asset_inverter.deye_reg340_max_solar_w is
|
||||
'Horní strop zápisu Deye reg 340 (max solar power, W). Studené panely mohou překročit součet Wp — použít plný DC limit střídače (např. 32000 home-01, 65000 větší hybridy). NULL = fallback max_dc_input_w, pak součet Wp řiditelných polí.';
|
||||
|
||||
comment on column ems.asset_inverter.deye_reg340_min_solar_w is
|
||||
'Minimální hodnota reg 340 přijatá firmwarem střídače (W). 0 = bez spodního limitu; starší Deye (home-01) často 400.';
|
||||
|
||||
-- home-01: SUN-20K, reg 340 max 32 kW, firmware min 400 W
|
||||
update ems.asset_inverter inv
|
||||
set
|
||||
deye_reg340_max_solar_w = 32000,
|
||||
deye_reg340_min_solar_w = 400
|
||||
from ems.site s
|
||||
where s.id = inv.site_id
|
||||
and s.code = 'home-01'
|
||||
and inv.code = 'deye-main'
|
||||
and inv.controllable = true;
|
||||
|
||||
-- Ostatní řízené Deye hybridy: 65 kW strop, min 0 (novější firmware)
|
||||
update ems.asset_inverter inv
|
||||
set
|
||||
deye_reg340_max_solar_w = coalesce(inv.deye_reg340_max_solar_w, 65000),
|
||||
deye_reg340_min_solar_w = 0
|
||||
from ems.site s
|
||||
where s.id = inv.site_id
|
||||
and s.code <> 'home-01'
|
||||
and inv.code = 'deye-main'
|
||||
and inv.controllable = true
|
||||
and inv.active = true;
|
||||
@@ -1,14 +1,27 @@
|
||||
-- Cap pro reg 340 max solar power (W): součet nominal_power_wp řiditelných PV polí na invertoru.
|
||||
-- Cap pro reg 340 max solar power (W): plný výkon střídače, ne jen součet Wp polí A.
|
||||
create or replace function ems.fn_inverter_pv_a_max_w(p_inverter_id int)
|
||||
returns int
|
||||
language sql
|
||||
stable
|
||||
as $$
|
||||
select coalesce(sum(nominal_power_wp), 0)::int
|
||||
from ems.asset_pv_array
|
||||
where inverter_id = p_inverter_id
|
||||
and controllable = true
|
||||
with pv as (
|
||||
select coalesce(sum(nominal_power_wp), 0)::int as wp_sum
|
||||
from ems.asset_pv_array
|
||||
where inverter_id = p_inverter_id
|
||||
and controllable = true
|
||||
)
|
||||
select case
|
||||
when (select wp_sum from pv) <= 0 then 0
|
||||
else coalesce(
|
||||
nullif(ai.deye_reg340_max_solar_w, 0),
|
||||
nullif(ai.max_dc_input_w, 0),
|
||||
(select wp_sum from pv),
|
||||
0
|
||||
)::int
|
||||
end
|
||||
from ems.asset_inverter ai
|
||||
where ai.id = p_inverter_id
|
||||
$$;
|
||||
|
||||
comment on function ems.fn_inverter_pv_a_max_w(int) is
|
||||
'Cap pro reg 340 (max solar power, W) = součet nominal_power_wp řiditelných PV polí na daném invertoru. 0 = EMS reg 340 neaktivní (skip zápisu).';
|
||||
'Cap pro reg 340 (max solar power, W): deye_reg340_max_solar_w, jinak max_dc_input_w, jinak součet Wp řiditelných polí. 0 = bez řiditelného PV A nebo bez capu — EMS reg 340 nezapisuje.';
|
||||
|
||||
Reference in New Issue
Block a user