Skip to content

Interface with other battery vendors (e.g. Anker Solarbank) #126

@Jos1958

Description

@Jos1958

I recently found this HBC project and I am very interested to use the charging strategies for my battery.
Instead of a Marstek Venus Battery I own an Anker Solarbank 3 Pro.
I am already controlling the Anker Battery in Home Assistant.
The Anker Integration is helas not working locally and uses the cloud api.
Implementing a NOM strategy is not really feasible since there need to be at least 30 seconds between subsequent commands to the battery.
Not really a problem since I am happy with the Anker NOM implementation.

I have updated this comment below for my latest findings and reply from Bob (12-may-2026).
See https://github.com/Jos1958/marstek-venus-rs485-node-red/blob/main/home%20assistant/other-batteries/Anker-SB3/anker_to_m1_marstek.yaml for my implementation of HBC to Anker SolarBank 3 Pro interface.

Update 25-april-2026: A separate automation has now been developed that updates the Anker Battery for charge/discharge.
https://github.com/Jos1958/marstek-venus-rs485-node-red/blob/main/home%20assistant/other-batteries/Anker-SB3/automation-hbc-for-anker.yaml

See also the Discord thread for further discussions:
https://discord.com/channels/1422227123925680228/1507859984350842890

Can I just disable the self-consumption strategy since I read somewhere that many other strategies rely on the self-consumption strategy? For now I have the PID setup (P=0, I=0 and D=0) which will sort of disable the self-consumption.

However for a dynamic prices I would prefer to have more control over the strategy and not rely on the Anker 'smart' mode.
Therefore I already installed the HBC project and I am now trying to implement the Marstek interface to the Anker Batteries.

The Marstek VenusV3-modbus-TCP-IP interface (marstek_m1_modbus_tcp.yaml) by Fonske is my starting point and I am trying to determine which sensors and templates are needed (readonly or update) for HBC.

Many sensors have a related template and for now I am assuming that I do not needed the sensor in those cases. Any comments on that? I have only implemented the templates from the modbus yaml and ignored the sensors

I am making good progress with implementing some of the sensors and templates but I am struggling a bit with the node-red flows since I am rather new on this subject.
I found the usage of some (readonly) sensors in the flows and some on the dashboard but I miss the control of the battery.
In flow 'Home Battery Start' I find a 'set mode (charge/discharge/stop)' and a 'set power' but when I click there seems to be nothing behind this node.
How do I access the logic behind these nodes? The logic is in the 'Set batteries' node

Can I assume that these nodes are using the select (for forcible charge/discharge) and the number (for forcible charge or discharge power) to control the battery? Yes, the strategies will update the forcible charge/discharge and the forcible charge AND forcible discharge power

Any feedback on my approach would be appreciated aswell.
Are there any other attempts to apply HBC to batteries of other vendors?

Below you will find my inventarisation of the sensors and templates that I think are required.
I left out the ones that I think are not relevant/required for HBC but if I missed a sensor/template that is necessary please let me know.

I now have the following modbus sensors implemented:

  • name: "Marstek m1 Device Name" *** Implemented for Anker as Readonly Template (used by the HBC dashboard to display M1 Battery)
  • name: "Marstek m1 Battery Power" *** Implemented for Anker as Readonly Template (used by HBC in the 'Home Battery Start' Flow)
  • name: "Marstek m1 Battery State Of Charge" *** Implemented for Anker as Readonly Template (used by the HBC dashboard to display M1 Battery)
  • name: "Marstek m1 AC Power" *** Implemented for Anker as Readonly Template (used by the HBC dashboard to display M1 Battery)

The following modbus sensors will not be implemented since they have a related template:

  • name: "Marstek m1 Inverter State Number" *** NOT Implemented for Anker (see Template sensor.marstek_m1_inverter_state)
  • name: "Marstek m1 Backup Function Number" *** NOT Implemented for Anker (see Template select.marstek_m1_backup_function)
  • name: "Marstek m1 RS485 Control Mode Number" *** NOT Implemented for Anker (see Template select.marstek_m1_rs485_control_mode)
  • name: "Marstek m1 Forcible Charge Discharge Number" *** NOT Implemented for Anker (see Template select.marstek_m1_forcible_charge_discharge)
  • name: "Marstek m1 Charge To SOC Number" *** NOT Implemented for Anker (see Template number.marstek_m1_charge_to_soc)
  • name: "Marstek m1 Forcible Charge Power Number" *** NOT Implemented for Anker (see Template number.marstek_m1_forcible_charge_power)
  • name: "Marstek m1 Forcible Discharge Power Number" *** NOT Implemented for Anker (see Template number.marstek_m1_forcible_discharge_power)
  • name: "Marstek m1 User Work Mode number" *** NOT Implemented for Anker (see Template select.marstek_m1_user_work_mode)
  • name: "Marstek m1 Max Charge Power Number" *** NOT Implemented for Anker (see Template number.marstek_m1_max_charge_power)
  • name: "Marstek m1 Max Discharge Power Number" *** NOT Implemented for Anker (see Template number.marstek_m1_max_discharge_power)

I am looking at implementing the following templates:
sensor:

  • name: "Marstek m1 Inverter State" *** Implemented for Anker (Readonly) (Used by HBC in the 'Home Battery Start' Flow), No update mode required in HBC?

select:

  • name: Marstek m1 RS485 Control Mode *** Set by HBC when switching between 'Full Control' and 'Manual Control' or 'Marstek Control'
  • name: Marstek m1 User Work Mode *** I assume that this mode is not read or updated by HBC
  • name: Marstek m1 Forcible Charge/Discharge *** HBC uses this to set the charge or discharge Mode
  • name: Marstek m1 Backup Function *** I assume this backup function is not used by HBC

number:

  • name: Marstek m1 Forcible charge Power *** HBC uses this to set the charge power in forcible charge mode
  • name: Marstek m1 Forcible discharge Power *** HBC uses this to set the discharge power in forcible discharge mode
    Remark: both forcible charge and discharge power are set to the same value in both modes (charge and discharge)
  • name: Marstek m1 Charge To SOC *** Not needed/used by HBC
  • name: Marstek m1 Max. Charge Power *** Implemented for Anker (Readonly for now), (used by the HBC dashboard to display M1 Battery)
  • name: Marstek m1 Max. Discharge Power *** Implemented for Anker (Readonly for now), (used by the HBC dashboard to display M1 Battery)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions