HA-side configuration for the LVX6048 stack
Reference configs that go into your Home Assistant instance — they aren't
installed by install.sh (HA typically lives on a different host or in an
HA OS appliance), but they're tracked here so the full stack is reproducible.
Mirrors the eg4battery/homeassistant/ pattern.
What's in here
| File | Where it goes in HA |
|---|---|
mqtt_controls.yaml |
configuration.yaml → mqtt: !include lvx6048/mqtt_controls.yaml (or merge by hand) |
template_sensors.yaml |
configuration.yaml → template: !include lvx6048/template_sensors.yaml |
lovelace_controls.yaml |
Raw Lovelace card config — paste into a new dashboard view |
The auto-discovery sensors (battery V, fault code, mode, MPPT power, …) arrive automatically from powermon — no HA-side config required for those. This folder only adds the pieces HA can't infer:
- Control entities — selects + numbers that publish to
solar/control/lvx6048/<action>so users can change settings from a dashboard without touching the LCD. - Stack-total derived sensors — the PI18 GS command only exposes per-unit
numbers, so a 240 V load split across two LVX6048s shows as ~half on each.
template_sensors.yamlsynthesizes household-level totals (apparent_power, active_power, mppt1_input_power). - A dashboard view that wraps those controls with the existing telemetry into one screen.
Architecture (control path)
HA dashboard (mqtt select / number)
│
│ payload e.g. "solar_battery_utility"
▼
solar/control/lvx6048/<action>
│
▼
lvx-control.service (on the Pi)
│ validates against allow-list,
│ encodes to PI18 command (e.g. "POP01"),
│ mirrors to BOTH inverters
▼
powermon/lvx6048_{1,2}/addcommand
│
▼
powermon executes via PI18 setter, publishes
"Succeeded" / "Failed" to powermon/lvx6048_{1,2}/result
Enabling in HA
-
Drop both YAMLs into
~/homeassistant/lvx6048/on your HA host. -
Add to
configuration.yaml:mqtt: !include lvx6048/mqtt_controls.yaml(or, if you already have an
mqtt:block, merge theselect:andnumber:lists into it.) -
Restart HA. The 3× selects and 1× number entity should appear under the "Home Assistant" device.
-
Add the dashboard:
- Settings → Dashboards → + Add Dashboard → New dashboard from scratch
- Open the new dashboard → ⋮ → Edit dashboard → Raw configuration editor
- Paste the contents of
lovelace_controls.yaml.
Available controls
| Entity | Effect |
|---|---|
select.lvx6048_output_priority |
POP — switch between SUB / SBU output source priority |
select.lvx6048_charger_priority |
PCP — solar-first / solar+utility / solar-only charging |
select.lvx6048_solar_power_priority |
PSP — battery+load+utility+AC vs load+battery+utility |
number.lvx6048_max_charging_current |
MCHGC — combined solar+AC charge cap, 10–80 A in 10 A steps |
select.lvx6048_max_utility_charging_current |
MUCHGC — grid-only charge cap, 2/10/20/…/80 A |
Note:
MCHGC/MUCHGCsetters are sometimes rejected by the firmware while the inverter is actively charging (mode 06). Result topics show"Failed"in that case. If a charge-current change must apply immediately, either retry while idle (mode 01) or uselvx-flash/flash.py apply(which stops powermon for exclusive USB access).
Risky settings — battery thresholds (PSDV / MCHGV / BUCD), battery type
(PBT), output mode (POPM), factory reset (PF) — are intentionally not
exposed via HA. Use lvx-flash/flash.py apply with an explicit profile.
Verifying
After HA reload, watch the result topics:
mosquitto_sub -h <broker> -u mqtt -P <pass> -v \
-t 'powermon/lvx6048_1/result' \
-t 'powermon/lvx6048_2/result'
…then flip a select in the dashboard. Both inverters should publish
"Succeeded" within ~1 s.
Energy / SoC dashboard wiring (optional)
Once both inverters' ac_output_active_power and the EG4 daemon's
pack_power derived sensors are in place, the Energy dashboard can show
solar in / battery in/out / load — wire under
Settings → Dashboards → Energy → Solar panels / Home battery storage.