Skip to content

VRM portal hides DC Loads tile and shows broken layout when any external grid meter is used (affects dbus-shelly, dbus-cgwacs, and third-party drivers) #1590

@cgoudie

Description

@cgoudie

Summary

When using a third-party BLE AC energy meter driver (Hughes Power Watchdog) that publishes data on the standard com.victronenergy.grid D-Bus paths (modeled after dbus-cgwacs), the local Cerbo GX GUI displays everything correctly, but the VRM portal shows an incorrect/broken layout.

What works (local Cerbo GUI)

The local GUI correctly shows:

  • Grid: 173W with L1 (166W) and L2 (7W) breakdown
  • Inverter/Charger: External control
  • AC Loads: 20W with per-phase breakdown (L1: 13W, L2: 7W)
  • DC Loads: 154W
  • Battery: 98%, Discharging, 13.63V, -0.6A, -8W

(Screenshot 1 — will be attached in comments)

What's broken (VRM portal)

The VRM portal simultaneously shows:

  • DC Loads panel is completely missing
  • AC Loads shows "-" (blank/no data)
  • "Essential Loads" appeared with per-phase data showing Hz values — this panel doesn't exist on the local UI
  • Battery shows "Idle" despite actively discharging at -14W / -1.0A

(Screenshot 2 — will be attached in comments)

Root cause analysis

I investigated the D-Bus data on the Cerbo and identified the root cause. The data on D-Bus is correct — the issue is that the VRM portal uses different D-Bus paths than the local GUI to render its dashboard.

D-Bus paths — what dbus-systemcalc-py publishes (all correct)

Path Value Description
/Ac/Consumption/L1/Power 14 W Total AC consumption L1
/Ac/Consumption/L2/Power 7 W Total AC consumption L2
/Ac/ConsumptionOnOutput/L1/Power 0 W Loads on inverter AC-out L1
/Ac/ConsumptionOnOutput/L2/Power 2 W Loads on inverter AC-out L2
/Ac/ConsumptionOnInput/L1/Power [] (empty) No loads between grid meter and inverter
/Ac/ConsumptionOnInput/L2/Power [] (empty) No loads between grid meter and inverter
/Dc/System/Power 153 W DC loads (correctly calculated)
/Ac/Grid/L1/Power 167 W Grid L1 from external meter
/Ac/Grid/L2/Power 7 W Grid L2 from external meter

Relevant settings

Setting Value Description
/Settings/SystemSetup/HasDcSystem 1 System has DC loads
/Settings/SystemSetup/HasAcOutSystem 1 System has AC output
/Settings/SystemSetup/HasAcInLoads 0 No loads between grid meter and inverter
/Settings/CGwacs/RunWithoutGridMeter 0 Using an external grid meter
/SystemType Hub-1 System topology

How the local GUI renders (correct)

The local Cerbo GUI (gui-v2) uses:

  • "AC Loads"/Ac/Consumption (total of OnInput + OnOutput) = 21W
  • "DC Loads"/Dc/System/Power = 154W

How the VRM portal renders (broken)

The VRM portal appears to use:

  • "AC Loads"/Ac/ConsumptionOnInput = empty [] → shows "-"
  • "Essential Loads"/Ac/ConsumptionOnOutput = 2W (unexpected widget appearing)
  • "DC Loads"not displayed at all, even though /Dc/System/Power = 153W ❌

The mismatch

When HasAcInLoads = 0 (no loads between the grid meter and inverter input — which is the correct topology for Shore → Power Watchdog → MultiPlus → AC loads), dbus-systemcalc-py correctly leaves ConsumptionOnInput empty. The local GUI handles this gracefully by using /Ac/Consumption (the total).

The VRM portal, however:

  1. Uses ConsumptionOnInput for its "AC Loads" widget, which is empty → shows "-"
  2. Creates an unexpected "Essential Loads" widget from ConsumptionOnOutput
  3. Drops the "DC Loads" widget entirely, even though /Dc/System/Power has valid data
  4. Shows "Idle" for the battery state (likely using a different threshold or path than the local GUI, which correctly shows "Discharging" at -8W)

D-Bus paths published by the grid meter driver

The driver registers as com.victronenergy.grid.power_watchdog_<mac> and publishes:

  • /Ac/L1/Voltage, /Ac/L1/Current, /Ac/L1/Power
  • /Ac/L2/Voltage, /Ac/L2/Current, /Ac/L2/Power
  • /Ac/Power (total)
  • /Ac/Energy/Forward (cumulative kWh)
  • /Ac/Frequency
  • /Role = grid, /Position = 0

Environment

  • Venus OS on Cerbo GX (firmware current)
  • 120V split-phase (L1 + L2) shore power → MultiPlus-II 12/3000/120-50 2x120V
  • Driver: dbus-power-watchdog (BLE grid meter)

Expected behavior

The VRM portal should render consistently with the local Cerbo GUI:

  1. Show "AC Loads" from /Ac/Consumption (total), not from ConsumptionOnInput alone
  2. Show "DC Loads" from /Dc/System/Power when HasDcSystem = 1
  3. Not display a separate "Essential Loads" widget when the distinction between essential/non-essential isn't meaningful for the topology

Routing note

The VRM portal source is not public, so this issue can't be filed directly against it. Could this be routed to the VRM portal team?

cc @izak

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions