
Fenecon Mini Ess
The Fenecon Mini Ess is a compact residential and light-commercial battery energy storage system managed by the FENECON FEMS energy management platform. This ModbusCloud template communicates over Modbus TCP and exposes a comprehensive register set covering system state, control mode, and grid mode, as well as per-phase AC active power on L1, L2, and L3. Battery-side data includes pack voltage, current, power, and system-level state of charge, plus granular per-cell voltage and temperature sections from two independent BECU units. Write registers allow configuration of grid charge and discharge current limits, PCS mode, setup mode, and RTC synchronisation. Connecting the Fenecon Mini Ess to your ModbusCloud portal gives installers deep visibility into battery health and charge behaviour across the full cell array.
- Protocol
- Modbus TCP
- Connection
- Ethernet, Modbus TCP
- Registers
- 97, read and write
- Brand
- Fenecon
- Last updated
Registers (97)
86 read, 11 write
| Name | Unit | Access | Address (Hidden until you enter your email) | Function (hidden) | Type (hidden) |
|---|---|---|---|---|---|
| system_state | Read | ||||
| control_mode | Read | ||||
| battery_group_state | Read | ||||
| battery_voltage | V | Read | |||
| battery_current | A | Read | |||
| battery_power | W | Read | |||
| active_power_l1 | W | Read | |||
| active_power_l2 | W | Read | |||
| active_power_l3 | W | Read | |||
| becu1_allowed_charge_current | A | Read | |||
| becu1_allowed_discharge_current | A | Read | |||
| becu1_total_voltage | V | Read | |||
| becu1_total_current | A | Read | |||
| becu1_soc | % | Read | |||
| becu1_version | Read | ||||
| becu1_nominal_capacity | Read | ||||
| becu1_current_capacity | Read | ||||
| becu1_minimum_voltage_no | Read | ||||
| becu1_minimum_voltage | V | Read | |||
| becu1_maximum_voltage_no | Read | ||||
| becu1_maximum_voltage | V | Read | |||
| becu1_minimum_temperature_no | Read | ||||
| becu1_minimum_temperature | °C | Read | |||
| becu1_maximum_temperature_no | Read | ||||
| becu1_maximum_temperature | °C | Read | |||
| battery_voltage_section_1 | Read | ||||
| battery_voltage_section_2 | Read | ||||
| battery_voltage_section_3 | Read | ||||
| battery_voltage_section_4 | Read | ||||
| battery_voltage_section_5 | Read | ||||
| battery_voltage_section_6 | Read | ||||
| battery_voltage_section_7 | Read | ||||
| battery_voltage_section_8 | Read | ||||
| battery_voltage_section_9 | Read | ||||
| battery_voltage_section_10 | Read | ||||
| battery_voltage_section_11 | Read | ||||
| battery_voltage_section_12 | Read | ||||
| battery_voltage_section_13 | Read | ||||
| battery_voltage_section_14 | Read | ||||
| battery_voltage_section_15 | Read | ||||
| battery_voltage_section_16 | Read | ||||
| battery_temperature_section_1 | Read | ||||
| battery_temperature_section_2 | Read | ||||
| battery_temperature_section_3 | Read | ||||
| battery_temperature_section_4 | Read | ||||
| battery_temperature_section_5 | Read | ||||
| battery_temperature_section_6 | Read | ||||
| battery_temperature_section_7 | Read | ||||
| battery_temperature_section_8 | Read | ||||
| battery_temperature_section_9 | Read | ||||
| battery_temperature_section_10 | Read | ||||
| battery_temperature_section_11 | Read | ||||
| battery_temperature_section_12 | Read | ||||
| battery_temperature_section_13 | Read | ||||
| battery_temperature_section_14 | Read | ||||
| battery_temperature_section_15 | Read | ||||
| battery_temperature_section_16 | Read | ||||
| becu2_charge_current | A | Read | |||
| becu2_discharge_current | A | Read | |||
| becu2_volt | Read | ||||
| becu2_current | A | Read | |||
| becu2_soc | % | Read | |||
| becu2_version | Read | ||||
| becu2_min_volt_no | Read | ||||
| becu2_min_volt | Read | ||||
| becu2_max_volt_no | Read | ||||
| becu2_max_volt | Read | ||||
| becu2_min_temp_no | Read | ||||
| becu2_min_temp | Read | ||||
| becu2_max_temp_no | Read | ||||
| becu2_max_temp | Read | ||||
| system_work_state | Read | ||||
| system_work_mode_state | Read | ||||
| becu_num | Read | ||||
| becu_work_state | Read | ||||
| becu_charge_current | A | Read | |||
| becu_discharge_current | A | Read | |||
| becu_volt | Read | ||||
| becu_current | A | Read | |||
| soc | % | Read | |||
| rtc_year | Write | ||||
| rtc_month | Write | ||||
| rtc_day | Write | ||||
| rtc_hour | Write | ||||
| rtc_minute | Write | ||||
| rtc_second | Write | ||||
| grid_max_charge_current_a | A | Write | |||
| grid_max_discharge_current_a | A | Write | |||
| setup_mode_a | Write | ||||
| pcs_mode_a | Write | ||||
| grid_max_charge_current_b | A | Read | |||
| grid_max_discharge_current_b | A | Read | |||
| setup_mode_b | Read | ||||
| pcs_mode_b | Read | ||||
| grid_mode | Read | ||||
| debug_run_state_a | Read | ||||
| debug_run_state_b | Write |
Loading registers…
Send your device list
If a device is not in the library yet, we build the template for free as soon as we have the register data.
Use cases
- Monitor system-level state of charge at address 4812 to verify daily cycling behaviour over time.
- Track per-phase AC active power on L1, L2, and L3 to detect persistent phase imbalances early.
- Alert on BECU1 or BECU2 maximum cell temperature approaching thermal thresholds during summer.
- Compare BECU1 nominal capacity against current capacity to track battery degradation across seasons.
- Verify grid mode register at address 30166 after grid outages to confirm correct on-grid or off-grid transition.
Installation
Enable the FEMS App Modbus/TCP Read Access (and optionally the Write Access app for setpoint control) in the FEMS App Center using the licence key provided by Fenecon.
Connect the ModbusCloud Gateway to the same LAN segment as the FEMS controller, ensuring the Gateway can reach the FEMS IP address on TCP port 502.
In your ModbusCloud portal, add a new device, import the Fenecon Mini Ess template, and set the unit ID to match the FEMS Modbus slave address (check the system profile in FEMS Online Monitoring under External Interfaces).
Spot-check register 4812 (soc) in the portal live view and compare the value against the FEMS Online Monitoring dashboard to confirm the polling chain is working correctly.
Things to watch for
All registers return zero or no data. What is wrong?
The FEMS Modbus/TCP interface is disabled by default. You must install and activate the FEMS App Modbus/TCP Read Access in the FEMS App Center. Without this app, the FEMS will not respond on port 502, even if the device is reachable on the network.
Register addresses appear shifted by one. Why?
Some Modbus client tools default to a base address of 1 rather than 0. The register addresses in this template are 0-indexed. Set your client base address to 0, or in QModMaster change the Base Address field to 0, otherwise every address will be off by one.
I wrote to grid_max_charge_current_a but nothing changed. What now?
Write registers require the FEMS App Modbus/TCP Write Access (a separate, paid app). Read access does not grant write permissions. Also confirm the Watchdog timeout: write commands expire after 60 seconds by default, so repeated writes are needed for sustained setpoints. ModbusCloud writes registers at most once per minute, so keeping this 60-second window is borderline and not guaranteed. Never exceed hardware-rated current limits when writing charge or discharge current setpoints, as this can trigger protection shutdowns.
The gateway connects but BECU cell section registers read garbage values.
Cell section registers (addresses 3020 to 3051 for voltage, 3036 to 3051 for temperature) carry raw unitless values. Verify the scaling documented in your system's Modbus table, which you can download as an Excel file from the FEMS Online Monitoring under the system profile. If the FEMS firmware is outdated, some cell section registers may not be populated; check for pending over-the-air updates.
Want to see how it works?









