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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions