fix pv vyroby (unsinged)
All checks were successful
deploy / deploy (push) Successful in 35s
test / smoke-test (push) Successful in 7s

This commit is contained in:
Dusan Vojacek
2026-04-10 20:30:03 +02:00
parent ec55285bdd
commit 920d9ff40c
7 changed files with 75 additions and 17 deletions

View File

@@ -26,6 +26,14 @@ DEYE_REG_PV1_POWER = 672
DEYE_REG_PV2_POWER = 673
def aggregate_pv_production_w(pv1_w: int, pv2_w: int, gen_port_w: int) -> int:
"""
Okamžitá „výroba FVE“ pro dashboard / audit součtu: Deye registry 672/673/667
jsou int16 W; záporné hodnoty (např. večer při exportu) nejsou DC výroba.
"""
return max(0, int(pv1_w)) + max(0, int(pv2_w)) + max(0, int(gen_port_w))
async def poll_inverter(site_id: int, db: asyncpg.Connection) -> None:
rows = await db.fetch(
"""
@@ -54,13 +62,12 @@ async def poll_inverter(site_id: int, db: asyncpg.Connection) -> None:
battery_power = await mb.read_register_signed(DEYE_REG_BATTERY_POWER_FLOW)
batt_charge_today = await mb.read_register(DEYE_REG_BATT_CHARGE_TODAY)
batt_discharge_today = await mb.read_register(DEYE_REG_BATT_DISCHARGE_TODAY)
gen_port_power = await mb.read_register(DEYE_REG_GEN_PORT_POWER)
grid_power = await mb.read_register_signed(DEYE_REG_GRID_TOTAL_POWER)
load_power = await mb.read_register(DEYE_REG_LOAD_TOTAL_POWER)
pv1_power = await mb.read_register(DEYE_REG_PV1_POWER)
pv2_power = await mb.read_register(DEYE_REG_PV2_POWER)
# Celková výroba FVE na této instalaci = stringy PV + výkon přes GEN port.
pv_power_w = int(pv1_power) + int(pv2_power) + int(gen_port_power)
pv1_power = await mb.read_register_signed(DEYE_REG_PV1_POWER)
pv2_power = await mb.read_register_signed(DEYE_REG_PV2_POWER)
gen_port_power = await mb.read_register_signed(DEYE_REG_GEN_PORT_POWER)
pv_power_w = aggregate_pv_production_w(pv1_power, pv2_power, gen_port_power)
logger.debug("inverter:%s Deye run_state raw=%s", code, run_state)