A community developer has published Zendure RestAPI, a custom Home Assistant integration that controls Zendure SolarFlow home batteries entirely over the local network. It talks to the battery's own HTTP server through Zendure's zenSDK API, with no Zendure cloud account and no MQTT broker. The author announced it on the Home Assistant forum on 16 October 2026. Version 1.6.0, released on 17 October, added price control for dynamic tariffs, and 1.6.2 followed on 18 October.

Zero export, once a second

At its core is a control loop that reads a grid meter every second and adjusts the battery's charge and discharge limits so the house neither draws from the grid nor exports to it. A slower second loop handles direction and safety, and without a valid meter reading the battery stops. Seven operation modes sit in a single select entity: standby, smart_matching, smart charge-only and discharge-only, quick charge and discharge, and manual. The smart modes write their limits to RAM rather than flash, which spares the device's memory. In standby the battery can drop to about 5 W instead of the 29-36 W it draws while awake, by the author's measurements.

For the meter, the integration works with the HomeWizard P1 (found automatically), the YouLess LS120 and the Zendure P1 meter, and lists the Zendure Smart Meter 3CT, EcoTracker and Shelly Pro 3EM as experimental. Any power sensor already in Home Assistant can be picked too, but it only steers the battery if it updates every second.

Which batteries

The author runs a SolarFlow 3000 Mix AC+ every day. The 4000 Mix AC+, 2400 AC, 2400 AC+ and 1600 AC+ are listed as supported because they share the same AC-coupled design. The SolarFlow 800, 800 Plus, 800 Pro, 800 Pro 2, 2400 Pro and 4000 Mix Pro work, but the smart modes are experimental on them, since their solar panels connect to the battery itself. The Hyper 2000, Hub 1200/2000, AIO 2400 and Ace 1500 have no local API, so the integration cannot use them.

A day plan on Nord Pool prices

Price control is off by default. It can follow two fixed price thresholds from any price sensor, or build a day plan from the Nord Pool prices for today and tomorrow. For each quarter of an hour the plan decides whether to charge, discharge or do nothing, weighing separate import and export prices, conversion losses, wear per kWh and a minimum margin. It needs the Nord Pool integration from HACS, plus ApexCharts Card for the chart.

The author replayed 30 days of his own Dutch installation. The trading day plan earned €1.58 a day under Dutch net metering, which ends with 2026, against €0.21 with fixed price thresholds under the same rules. Under the rules that take over in 2027 the day plan made €0.83 a day. These are replays on one battery, not independent tests. Version 1.6.2 adds a "Second controller" binary sensor and a repair notice when something else, such as the Zendure app left outside Custom Mode, keeps writing the battery's limits.

Before you install

Under EN 18031 the local API is off by default. In the Zendure app, add HEMS to switch it on and set the energy plan to Custom Mode so that Zendure's own control stops writing to the battery. Then add the integration in HACS as a custom repository; its submission to the default HACS list is pending. Setup screens and entity names come in eleven languages, Polish included. The project is not affiliated with Zendure.