Jackery SolarVault & SmartMeter 3P Integration (Updated Fork with Fixes)

Hi everyone,

If you are using the Jackery SolarVault 3 Pro Max home energy storage system or the Jackery SmartMeter 3P (HTO907A), you might have noticed that the original Jackery-Official/jackery integration has outstanding bugs that break crucial parts of the energy flow tracking.

To fix these issues, I have created a dedicated fork specifically tested to restore full functionality and expose critical missing data points.

You can find the repository here:

:backhand_index_pointing_right: GitHub - csoscd/ha-solarvault

:hammer_and_wrench: What’s New & Fixed in this Fork?

1. SmartMeter 3P Classification Fix (HTO907A)

In the original integration, the Jackery SmartMeter 3P was incorrectly classified as a smart plug instead of a CT meter. This caused the energy flow calculation to receive absolutely no CT grid data. This fork fixes the classification and exposes 16 dedicated sensors per SmartMeter, including:

  • Total net Grid Import/Export Power
  • Per-phase (L1/L2/L3) Import and Export Power
  • Cumulative Total & Per-phase Grid Import/Export Energy

2. New Sensors for SolarVault 3 Pro Max

I have added several vital real-time monitoring sensors that pull data via MQTT every 10 seconds, including:

  • Inverter Stack Power: Input and Output AC power (stackInPw / stackOutPw).
  • BMS SoC: Combined battery state of charge across all units.
  • Battery State: Operation states (transitioning, normal, or active).
  • Diagnostics: Ethernet port connection status and WiFi signal strength (dBm).
  • Configuration Limits: Configured inverter and grid standby power limits.
  • AC to Grid Energy: Cumulative AC-to-grid energy tracking.

:clipboard: Prerequisites

Before installing, please make sure you have the following ready:

  1. MQTT Broker: A running broker (like Mosquitto) connected to Home Assistant’s built-in MQTT integration.
  2. Jackery App Config: Use the Jackery mobile app (v2.0.0 or higher) to point your device to your local MQTT broker under Device Details ➔ Settings ➔ MQTT.

:rocket: How to Install via HACS

You can easily install and receive updates for this fork by adding it as a Custom Repository:

  1. Open HACS in Home Assistant and go to Integrations.
  2. Click the three dots in the top-right corner and select Custom repositories.
  3. Paste the URL: https://github.com/csoscd/ha-solarvault and select Integration as the category.
  4. Search for “Jackery SolarVault” and download it.
  5. Restart Home Assistant.
  6. Go to Settings ➔ Devices & Services ➔ Add Integration, search for “Jackery”, and enter your:
  • Device SN (from the app)
  • Token (from the app’s MQTT settings)
  • Topic Prefix (defaults to hb)

Note: The GitHub README also contains a ready-to-use YAML configuration example to map these new sensors beautifully into the popular Energy Flow Card Plus dashboard card!

:speech_balloon: Feedback

If you have a SolarVault system, please give this fork a try. If you run into any issues or have feature requests specifically regarding these changes, feel free to drop a comment below or open an issue directly on the Github.

Let me know how it works for you!

Christian

Quick update on the repository – here’s a short summary.


Bug fixes

SmartMeter flapping every ~11 seconds (issue #16)

If you use the SmartMeter 3P you may have noticed it briefly disappearing from Home Assistant every few seconds. The root cause is in the original integration: the CT cache (cts) was overwritten on every incoming Type-101 MQTT event – even when the message contained no CT data at all (e.g. a plug poll response). This wiped the SmartMeter entry from the cache every ~11 seconds, causing constant flapping.

The fix checks whether the payload actually contains CT or plug data before updating the respective cache entry.

Grid export power reported as 0 W

A calculation error caused gridSellPw (grid export power) to be incorrectly reported as 0 W under certain conditions, even when power was actually being exported to the grid.


New features

BP2500 expansion battery

The BP2500 appears in Type-23 MQTT messages under its own serial number, separate from the main unit. The integration now parses these messages and provides two cumulative energy sensors:

  • BP2500 Charge Energy – total energy charged into the BP2500 (kWh)
  • BP2500 Discharge Energy – total energy discharged from the BP2500 (kWh)

Real-time power data for the BP2500 is unfortunately not available via MQTT; that data is only accessible through the Jackery app / cloud.

Control entity: SOC Force Charge Target

The socForceChg field is now exposed as a writable number entity (0–100 %). Its exact purpose has not been fully determined – the most likely hypothesis is a manual force-charge target SOC or a backup-reserve threshold. Confirmed: the Storm Warning feature in the Jackery app does not set this field.

New energy sensors (newer firmware)

Newer firmware versions (>= 1.4) deliver two additional system-level energy counters via Type-23 MQTT:

  • CT Import Energy (inCtEgy) – cumulative grid import energy as measured by the CT meter
  • CT Export Energy (outCtEgy) – cumulative grid export energy as measured by the CT meter

These sensors are only created if the device actually sends these fields – they simply won’t appear on older firmware.


Automated tests

The integration now has a test suite with 48 automated tests covering energy flow calculations, MQTT message routing, and sensor value scaling – including a regression test for the CT cache bug. No real MQTT broker or Home Assistant installation required; just run uv run pytest tests/ -v in the repository directory.