Skip to content

Add Solarbank 3 E2700 Pro support - #47

Draft
MrChurch wants to merge 2 commits into
flip-dots:mainfrom
MrChurch:agent/solarbank3-e2700-pro
Draft

Add Solarbank 3 E2700 Pro support#47
MrChurch wants to merge 2 commits into
flip-dots:mainfrom
MrChurch:agent/solarbank3-e2700-pro

Conversation

@MrChurch

@MrChurch MrChurch commented Jul 20, 2026

Copy link
Copy Markdown

Summary

Add direct local BLE support for the Solarbank 3 E2700 Pro (A17C5). This PR intentionally covers the device library only: it does not add Home Assistant entities, system-level Solarbank aggregation, or cloud metadata handling.

Protocol and controls

  • Dynamic secp256r1 ECDH key pair per connection, followed by AES-GCM session authentication with the captured AAD.
  • Authenticated 4022 account and 4027 client-security steps; the decrypted 4827 result is validated before the session is accepted.
  • Encrypted 4040 telemetry requests, plus an authenticated 4030 firmware-information request.
  • Local controls:
    • set_schedule(power_w): a uniform seven-day 405e schedule, 0-1200 W in 50 W steps.
    • set_schedule_mode(charge): writes the observed charge-slot direction; discharge remains the compatible default.
    • set_max_load(max_load_w): 4080 values 350, 600, 800, and 1200 W.

Follow-up stability update

The follow-up commit 0f27631 is based on repeated local A17C5 BLE captures and addresses stability after reconnects and firmware updates:

  • Handle authenticated 4409 battery metadata and preserve it across normal reconnects.
  • Accept both observed expansion-battery record markers: 6301 and the changed 6a01 marker seen on firmware 1.0.7.3.
  • Correct the individual PV mapping to c6/c7/c8/c9; ca is not the fourth MPPT input.
  • Reassemble only actual multi-fragment encrypted frames. In particular, a valid single encrypted frame beginning with 0x11 is no longer mistaken for a fragment and discarded.
  • Merge partial authenticated telemetry updates instead of clearing existing values.
  • Decode the 4830 firmware-information response and expose the verified Solarbank/component strings through firmware_versions.
  • Include expansion battery SoC values in the aggregate battery percentage where available.

Validation

  • python -m pytest tests/test_solarbank3.py -q: 8 passed.
  • Targeted Ruff F/E checks pass for the changed Python files.
  • Python bytecode compilation passes for SolixBLE and tests.
  • git diff --check passes.
  • Behaviour was verified against a standalone A17C5 Solarbank 3 E2700 Pro on firmware 1.0.7.1 and 1.0.7.3.

The implementation is deliberately scoped to the standalone Solarbank 3 device. System integration and Home Assistant-specific code are not part of this library PR.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant