v0.9.0 — ISDT Air 8 + K2 Air support
What's new
ISDT Air 8 support (1S–6S LiPo balance charger, DeviceModelID 01030000, issue #2).
Previously misidentified as "C4 Air" with six phantom slots — the Air 8 firmware ignores the channel byte, so multi-channel polling caused identical data to fan out across six fake slots. The integration now polls one channel and uses Air-8-specific work-state and battery-chemistry maps (LiPo at index 1, plus storage / discharge / balance modes).
ISDT K2 Air support (two-slot round-cell charger, DeviceModelID 01040000, issue #3).
Previously misidentified as "C4 EVO" with six phantom slots. The K2 Air uses the C4-Air round-cell protocol but exposes only two slots.
Auto-detect future ISDT devices. When the DeviceModelID isn't in our internal map, the integration now reads the marketing name from the BLE advertisement (e.g. K2Air → K2 Air) and uses that. Future chargers that self-announce should resolve without an integration update.
Silent migration for misidentified setups. Both reporters had their device already added to Home Assistant under the wrong name. On the next load, the integration re-detects the model from the cached BLE manufacturer data and updates the config entry transparently — no delete & re-add required.
Tooling
scripts/isdt_air8_probe.py → scripts/isdt_charger_probe.py, generalised for every ISDT BLE charger via --channels. Drop the JSONL it produces into tests/fixtures/<model>/ to grow the regression suite.
Tests
New tests/ directory with 34 pytest cases against real hardware:
- 5 Air 8 captures (idle / 2S / 3S / 4S / 6S LiPo packs)
- 6 C4 Air sessions (empty, 1-cell soft-start, 1-cell done, 2-cell front, 2-cell back, 4-cell parallel)
- 10 detection unit tests including issue #3's
manufacturer_dataverbatim
Upgrading
No config changes required.
- Air 8 owners (issue #2): device renames itself on first load; four phantom slots disappear.
- K2 Air owners (issue #3): device re-identifies; polling switches from six to two slots.
- C4 Air / A8 Air / MASS2: unchanged.
Thanks
@TRES9000 for the Air 8 probe captures across all 1S–6S pack sizes, and @Mngnt for the K2 Air manufacturer-data report that pinpointed the second case of the same misidentification pattern.