Huawei SmartLogger Hybrid
Huawei SmartLogger Hybrid integration within our EMS
Our EMS supports Huawei battery installations behind a Huawei SmartLogger gateway. The SmartLogger acts as a central gateway: it aggregates the inverters, batteries and a grid meter behind one Modbus TCP endpoint. Because everything is reached through the SmartLogger, our EMS exposes the installation as several logical devices (battery, PV, grid meter) that are all served by the same integration.
The integration supports two physical topologies, selected by the model you pick when adding the device:
SmartLogger Hybrid (residential)
per-inverter
Each SUN2000 hybrid inverter hosts its own LUNA2000 battery (DC-coupled).
SmartLogger Commercial (AC-coupled ESS)
plant-level
Separate PV inverters and ESS power-conversion systems that the SmartLogger aggregates at array level.
The model determines the controller battery topology automatically — you do not configure it separately.
This integration requires controller version 0.0.277 or later. For a standalone Huawei SmartLogger 3000 or SUN2000 inverters without battery storage, see the Huawei PV inverter documentation.
Supported devices
Huawei SmartLogger
Gateway (slave 0) — Modbus TCP entry point
SUN2000 inverters
PV inverters, each with their own Modbus slave ID
Battery storage
LUNA2000 (residential) or separate ESS units (commercial)
Grid meter
The SmartLogger's connected grid meter (own slave ID)
The integration communicates over Modbus TCP. The SmartLogger itself is addressed as slave 0; each SUN2000 inverter and the grid meter have their own slave IDs behind the gateway.
How the integration works
The SmartLogger is modelled in our EMS as one parent PCS device with three child devices (BMS, PV, grid meter), all driven from the same Modbus TCP connection. The child devices are created automatically from the parent — there is no separate wiring or extra Modbus device to add.
PCS (battery inverter) — the parent device. Receives the charge/discharge setpoints.
BMS — reports the aggregated battery state: state of charge (SOC), power, and chargeable/dischargeable energy.
PV — reports the combined PV production and yield.
Grid meter — exposed as a grid energy meter.
Adding the device (auto-discovery)
When you add a SmartLogger device, you select the model and enter the connection details (IP/port). The controller then scans the gateway and reports back so the wizard can pre-fill:
The inverter slave IDs and the grid-meter slave ID (no need to look these up by hand).
The nameplate: rated power, battery capacity, PV rated power, and the min/max SOC limits.
The discovered values pre-fill the form fields and can still be edited before saving.
Control approach
Residential (per-inverter) — LUNA2000 forcible dispatch
per-inverter) — LUNA2000 forcible dispatchThe battery sits behind each SUN2000 inverter. Battery control uses the LUNA2000 forcible charge/discharge interface, written each control cycle (≈1 s) to every inverter slave:
Target charge or discharge power, split evenly across all configured inverters.
Forcible period: a 5-minute window that acts as a dead-man switch — if the EMS stops refreshing the command, the LUNA2000 automatically reverts to its working mode. A keep-alive is written every 60 seconds.
Setting mode: time-based forcible control.
Command register:
FORCIBLE_CHARGE,FORCIBLE_DISCHARGEorFORCIBLE_STOP.
Outside active dispatch the LUNA2000 is left in MAXIMISE_SELF_CONSUMPTION working mode (mode 2). PV curtailment is applied at the SmartLogger array level via register 40420 (clamped to the ceiling read from 40697), which subtracts the battery setpoint so the PV portion lands on the requested limit.
Commercial (plant-level) — global ESS setpoint
plant-level) — global ESS setpointThe batteries are separate ESS units that the SmartLogger only aggregates at array level. The EMS therefore steers the whole battery globally through a single register, 40381 (active ESS power adjustment, 0.1 kW, i32, slave 0). Huawei's plant-level power sign is the opposite of the EMS convention (Huawei: negative = charge), so the setpoint is sign-inverted and clamped to the battery rating before writing. This requires Northbound Scheduling to be enabled on the SmartLogger.
In this topology PV is read but not curtailed by the adapter, and there is no per-inverter forcible dispatch or LUNA self-consumption mode.
Self-consumption mode
In the residential topology, when Allow self-consumption mode is automatic or yes and no PV curtailment is active, the EMS hands local balancing to the LUNA2000's own self-consumption logic. This is not available in the commercial topology (it always dispatches the explicit setpoint).
What is read back
Quantity
Residential (per-inverter)
Commercial (plant-level)
PV power / reactive / yield
Summed per SUN2000 inverter
SmartLogger array aggregate (slave 0)
Battery power / SOC
Aggregated per LUNA2000 unit
SmartLogger array aggregate (slave 0)
Chargeable / dischargeable
Derived from SOC × configured capacity
Read from the gateway's real remaining-energy registers
Battery energy totals
Per-unit charge/discharge totals
Array charge/discharge totals (slave 0)
Grid meter
Per-phase voltage/current, active/reactive power, import/export energy
Same
Faults
SUN2000 alarm registers (Alarm 1 & 2) per inverter → incidents
Same (per-inverter alarms are read in both topologies)
Battery power follows the EMS convention (positive = charge, negative = discharge); grid-meter active power follows positive = import, negative = export.
Grid meter trust
The SmartLogger reports a meter connection status register. The EMS only publishes grid measurements when the status is explicitly connected (0xB001). A disconnected status raises a critical gridMeterDisconnected incident and the meter channels are zeroed.
Grid frequency
Grid frequency is a property of the grid connection, so it is reported by the grid/energy meter rather than read from the PV inverters.
Configuration parameters
Beyond the standard battery parameters, the SmartLogger PCS exposes:
Rated power (kVA)
Nominal AC power of the battery/PCS system.
Battery rated power (kW)
Rated charge/discharge power. Used to clamp dispatch setpoints.
Battery capacity (kWh)
Total battery capacity.
PV capacity (kWp)
Total installed PV capacity across all inverters.
Inverter slave IDs
Modbus slave IDs of the SUN2000 inverters behind the SmartLogger (auto-discovered).
Grid meter slave ID
Modbus slave ID of the grid meter (auto-discovered).
Allow self-consumption mode
Residential only: automatic (default), yes, or no.
The battery topology (per-inverter vs plant-level) is set by the chosen model and is not a separate field.
Validation status
The residential (per-inverter) topology is implemented against the Huawei SmartLogger Modbus interface and the LUNA2000 storage-control register specification and validated on hardware. The commercial (plant-level) topology is implemented against the SmartLogger array-aggregate and northbound-scheduling registers; its readouts are validated on hardware and the global dispatch register is implemented per specification. Additional functionality may be added over time as integration capabilities evolve.
Last updated