Skip to content

Import and Export meters are zero if there's no CT meters #1

@bbarabe

Description

@bbarabe

Hi,

I run a dual 15k with exports but without grid meter. Installer didn't think it was necessary.... mostly true, but your code doesn't support that.

I looked at the log and made a few tweaks that seem to work. Code below. Sorry, should do a proper PR, but... yeah, sorry.

I tweaked it a bit by parsing more values:

if k in ("pvPower", "battPower", "gridOrMeterPower", "loadOrEpsPower", "soc",
         "gridTo", "toGrid", "existsMeter"):
    live_data[k] = v

and - changing the parsing to this:

# ----- Grid import/export -----
# Priority 1: Use meter readings if meters exist and have data
meter_a = self._safe_float(data.get("meterA"))
meter_b = self._safe_float(data.get("meterB"))
meter_c = self._safe_float(data.get("meterC"))
grid_net = meter_a + meter_b + meter_c
exists_meter = data.get("existsMeter", False)

if exists_meter and grid_net != 0.0:
    # Meters are installed and reporting non-zero
    if grid_net > 0:
        sensors["grid_import_power"] = grid_net
        sensors["grid_export_power"] = 0.0
    else:
        sensors["grid_import_power"] = 0.0
        sensors["grid_export_power"] = abs(grid_net)
elif exists_meter and grid_net == 0.0:
    # Meters exist but reading zero - trust it
    sensors["grid_import_power"] = 0.0
    sensors["grid_export_power"] = 0.0
else:
    # Priority 2: No meters - use flow direction flags
    grid_power_val = self._safe_float(data.get("gridOrMeterPower"))
    grid_to = data.get("gridTo", False)
    to_grid = data.get("toGrid", False)

    if grid_to:
        sensors["grid_import_power"] = grid_power_val
        sensors["grid_export_power"] = 0.0
    elif to_grid:
        sensors["grid_import_power"] = 0.0
        sensors["grid_export_power"] = grid_power_val
    else:
        # Priority 3: Explicit keys as last resort
        sensors["grid_import_power"] = self._safe_float(data.get("gridImportPower", 0.0))
        sensors["grid_export_power"] = self._safe_float(data.get("gridExportPower", 0.0))

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions