Solarbank 3

class SolixBLE.Solarbank3(ble_device: BLEDevice)

SolarBank 3 Power Station.

Use this class to connect and monitor a Solarbank 3 power station. This model is also known as the A17C5.

Note

This model was added using data from anker-solix-api. It has not been tested!

Note

It should be possible to add more sensors. I think devices with lots of telemetry values split them up into multiple messages but I have not played around with this yet. That and I am being a bit conservative with these initial implementations, if you want more sensors and are willing to help with testing feel free to raise a GitHub issue.

__init__(ble_device: BLEDevice) None

Initialise device object. Does not connect automatically.

add_callback(function: Callable[[], None]) None

Register a callback to be run on state updates.

Triggers include changes to pretty much anything, including, battery percentage, output power, solar, connection status, etc.

Parameters:

function – Function to run on state changes.

async connect(max_attempts: int = 3, run_callbacks: bool = True) bool

Connect to device.

This will connect to the device, determine if it is supported and subscribe to status updates, returning True if successful.

Parameters:
  • max_attempts – Maximum number of attempts to try to connect (default=3).

  • run_callbacks – Execute registered callbacks on successful connection (default=True).

async disconnect() None

Disconnect from device and reset internal state.

Disconnects from device, resets internal state, including connection attempts, cancels the automatic reconnection task and will not execute state changes callbacks.

remove_callback(function: Callable[[], None]) None

Remove a registered state change callback.

Parameters:

function – Function to remove from callbacks.

Raises:

ValueError – If callback does not exist.

property address: str

MAC address of device.

Returns:

The Bluetooth MAC address of the device.

property available: bool

Connected to device and data is available.

Returns:

True/False if the device is connected and sending telemetry.

property battery_health: float

Battery health as a percentage.

Returns:

Percentage of battery health or default float value.

property battery_percentage: int

Battery Percentage.

Returns:

Percentage charge of battery or default int value.

property battery_percentage_aggregate: float

Battery Percentage average across all batteries.

Returns:

Percentage charge of battery or default float value.

property battery_power: int

Battery power in and out.

I don’t know what direction is which.

Returns:

Power in/out of battery or default int value.

property charged_energy: int

Energy into battery?

Returns:

Energy into battery or default int value.

property connected: bool

Connected to device.

This does not mean that an encrypted connection has been established or that any data values have been populated, use the available property to determine that.

Returns:

True/False if connected to device.

property discharged_energy: int

Energy out of battery?

Returns:

Energy out of battery or default int value.

property grid_export_energy: int

Grid export energy.

Returns:

Total energy exported to grid or default int value.

property grid_import_energy: int

Grid import energy.

Returns:

Total energy imported from grid or default int value.

property grid_power: int

Grid power in and out.

I don’t know what direction is which.

Returns:

Power in/out of grid or default int value.

property grid_to_home_power: int

Grid to home power.

Returns:

Power from grid to home or default int value.

property house_consumption: int

House consumption power.

Don’t ask me how this differs from house demand, I have no idea.

Returns:

Power used by house or default int value.

property house_demand: int

House demand power.

Returns:

Power used by house or default int value.

property last_update: datetime | None

Timestamp of last telemetry data update from device.

Returns:

Timestamp of last update or None.

property name: str

Bluetooth name of the device.

Returns:

The name of the device or default string value.

property negotiated: bool

Has an encrypted session been successfully negotiated.

This does not mean that any data values have been populated, use the available property to determine that.

Returns:

True/False if session has been negotiated and connected.

property power_out: int

Total Power Out.

Returns:

Total power out or default int value.

property pv_yield: int

Solar power generated.

Returns:

Total solar power generated or default int value.

property serial_number: str

Device serial number.

Returns:

Device serial number or default str value.

property solar_power_in: int

Total Solar Power In.

Returns:

Total solar power in or default int value.

property solar_pv_1_power_in: int

Solar Power In for port 1.

Returns:

Solar power in or default int value.

property solar_pv_2_power_in: int

Solar Power In for port 2.

Returns:

Solar power in or default int value.

property solar_pv_3_power_in: int

Solar Power In for port 3.

Returns:

Solar power in or default int value.

property solar_pv_4_power_in: int

Solar Power In for port 4.

Returns:

Solar power in or default int value.

property temperature: int

Temperature of the unit (C).

Returns:

Temperature of the unit in degrees C.