Skip to content

Low power mode does not work on Solax #3311

Description

@itrankolov

Describe the bug
When enabling low power mode predbat does not send Best rate real to the script, but instead sends battery_rate_max as "{power}"

Expected behaviour
Use "Best rate" as {power}
charge_start_service:

  • service: script.solax_remote_control_new_mode_8
    power: "{power}"
    operation: "Force Charge"

Predbat version

v8.32.14

Environment details
Solax X3 Ultra 30kW, 40kW HV5.1
Standart HAOS

Log file

55693 | 2026-02-03 01:21:52.521194: Inverter 0 Calling service charge_start_service domain charge service_name script/solax_remote_control_new_mode_8 with data {'power': '8000', 'operation': 'Force Charge'}
-- | --
55692 | 2026-02-03 01:21:52.521168: Inverter 0 Skipped service charge_stop_service domain discharge service_name script.solax_remote_control_new_mode_8 as it was previously called.
55691 | 2026-02-03 01:21:52.521123: Current SoC 48% is less than Target SoC 72. Grid charging enabled with charge current set to 65.00
55690 | 2026-02-03 01:21:52.521065: Successfully pressed button button.pv_battery_awaken on Inverter 0
55689 | 2026-02-03 01:21:48.231669: Inverter 0 write_and_poll_value: Wrote 72 to charge_limit, successfully now 72
55688 | 2026-02-03 01:21:44.227497: Inverter 0 Current charge limit is 100% and new target is 72%
55687 | 2026-02-03 01:21:44.227477: Inverter 0 adjust target SoC for charge to 72% (29.38kWh/40.8kWh 40.8kWh) based on going from 48% -> 72% total add is 9.8kWh and this battery needs to add 9.8kWh to get to 29.38kWh
55686 | 2026-02-03 01:21:44.227460: Setting charging SoC to 72% as per target
55685 | 2026-02-03 01:21:44.227435: Adjust demand (idle) time computed is 06:00:00-23:59:00
55684 | 2026-02-03 01:21:44.227386: Adjust idle time, charge 01:00:00-06:00:00 discharge 00:00:00-00:00:00
55683 | 2026-02-03 01:21:44.227342: Inverter 0 current discharge rate is 8000W and new target is 0W
55682 | 2026-02-03 01:21:44.227329: Inverter 0 current charge rate is 8000W and new target is 2500W
55681 | 2026-02-03 01:21:44.227315: Inverter 0 Target SoC 72%, (this inverter 72%), battery temperature 19°C, select charge rate 2500W (real 2500W), current charge rate 8000W
55680 | 2026-02-03 01:21:44.227290: Low Power mode: minutes left: 250, absolute: 280, SoC: 19.584kW, Target SoC: 29.38kW, Charge left: 9.8kW, Max rate: 8000W, Min rate: 2100W, Best rate: 2500W, Best rate real: 2500W, Battery temp 19°C
55679 | 2026-02-03 01:21:44.222662: Find charge rate for low power mode: SoC: 19.584kW, target_SoC: 29.38kW, charge_left: 9.8kW, minutes_left: 250, abs_minutes_left: 280, max_rate: 8000W, min_rate: 2100W, min_rate_w: 2100W
55678 | 2026-02-03 01:21:44.222619: Inverter 0 Charge window will be: 2026-02-03 01:00:00+02:00 - 2026-02-03 06:00:00+02:00 - current SoC 48%, target 72%

predbat.log

apps.yaml

Activity

  1. gcoan commented on Feb 3, 2026

    @gcoan
    Collaborator

    This seems unusual that this hasn't been picked up before.

    Can you provide some traces for the solax script when it is called to start low power charging to confirm that the problem is definitely in predbat and not in the script?

  2. itrankolov commented on Feb 3, 2026

    @itrankolov
    Author

    I can but tonight. I don't have relevant traces anymore. But in the logs it can be seen that predbat calls the script with the wrong value:
    Inverter 0 Calling service charge_start_service domain charge service_name script/solax_remote_control_new_mode_8 with data {'power': '8000', 'operation': 'Force Charge'}

  3. gcoan commented on Feb 3, 2026

    @gcoan
    Collaborator

    it does indeed, thanks

  4. itrankolov commented on Feb 12, 2026

    @itrankolov
    Author

    Hello. Any update on this ?

  5. itrankolov commented on Feb 20, 2026

    @itrankolov
    Author

    Hello. Any update?

  6. itrankolov commented on Apr 21, 2026

    @itrankolov
    Author

    Any update on this?

  7. f948lan commented on Jun 10, 2026

    @f948lan

    I've also been suffering from this, so decided to try and dig a little.
    Found my logs also full of these:

    2026-06-09 21:30:46.289726: Warn: Cannot find battery charge curve (settings missing), one of the required settings for soc_percent, charge_rate and battery_power are missing from apps.yaml
    2026-06-09 21:30:46.289791: Warn: Cannot find battery discharge curve (settings missing), one of the required settings for soc_percent, discharge_rate and battery_power are missing from apps.yaml
    

    It happens that the two are related. The default Solax apps.yaml template doesn't define charge_rate or discharge_rate (I don't think our inverters have a specific setting for them - they are passed in through the control script, and the current rate is 'battery_power'.) But predbat needs these to exist in order to store the chosen charge (or discharge) power somewhere, which is then read to send to the script.

    So the workaround seems to be to create two helper number entities in home assistant, with units of W, and then set charge_rate and discharge_rate to point to these entities. As soon as I did that, the log messages disappeared, the entities started getting set to expected values by predbat, and the correct value is passed to the script and sent to the inverter to control charge rate.

    I'm no expert on the predbat code, but it looks like to has a mechanism to create entities for these automatically if output_charge_control != "power". Maybe similar could be introduced in the case these entities are not defined to make it work more out of the box with Solax inverters?

  8. Hellohi3654 commented on Aug 15, 2026

    @Hellohi3654
    Contributor

    Low power mode was working after using that solution above for me
    But now I'm getting this in logs and just uses max rate all the time
    Low power mode: PV forecast in window 5.24kWh > 0.1kWh, default to max rate

    It starts at like 30 40kwh then goes down to 5 or 6kwh as it gets to 100% like an hour before the window ends

  9. gcoan commented on Aug 15, 2026

    @gcoan
    Collaborator

    Sorry this has sat on the shelf for a while

    Can someone please post the full suggested apps.yaml changes, and details of what helper entities were needed (creating helper entities alongside predbat as part of the install is perfectly normal, lots of inverters require this).

    Were changes required to the solar remote control script?

    And then can look at this new issue, would need the full logs and more details of what you expect and what you're now getting

    thanks

  10. Hellohi3654 commented on Aug 15, 2026

    @Hellohi3654
    Contributor

    charge_rate: input_number.solaxchargerate

    discharge_rate: input_number.solaxdischargerate

    this is all I had to add to apps.yaml

    Just need to make two input number entities then low power mode used to work

  11. chalfontchubby commented on Aug 22, 2026

    @chalfontchubby
    Collaborator

    Root-caused this during triage. `output_charge_control: "power"` inverters normally write their rate straight to the inverter via REST/cloud API, so the dummy `charge_rate`/`discharge_rate` HA entities were only ever auto-created for "current" mode - but Solax is "power" mode and script-driven (`charge_start_service`, not REST), so `get_current_charge_rate()` still needed the entity and had nowhere to store the computed rate, falling back to `battery_rate_max` (matches @f948lan's manual workaround and diagnosis further up this thread exactly).

    Fixed to auto-create the entity for script-driven "power" inverters, without touching genuinely REST-driven ones or clobbering an already-configured entity. PR: #4645

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions