Summary
Fix Classe 300X (and any future BTicino model) being filtered out of /api/homesdata and /syncapi/v1/homestatus responses because of the hardcoded DEFAULT_DEVICE_TYPES list.
Bug
async_update_topology() and async_get_home_status() previously always sent a device_types filter in the request payload, defaulting to a fixed list. That list omitted BNC3 (Classe 300X bridge) and other newer module IDs, so for those users the API returned a home with zero modules — and downstream integrations (notably bticino_intercom) failed setup with No bridge module found in the system (MAC address ID check failed).
Reported and reproduced by two users in bticino_intercom#54.
Fix
Build the payload without a device_types key when the caller does not pass one. Explicit callers still get their filter forwarded as before. This matches the natural API behaviour and avoids needing a library bump every time a new BTicino model ships.
# Before (filtered by default)
account.async_update_topology() # device_types=DEFAULT_DEVICE_TYPES sent
# After
account.async_update_topology() # no device_types sent → all modules
account.async_update_topology(device_types=...) # explicit filter still worksDEFAULT_DEVICE_TYPES is kept as a public constant so callers that want the old filter can opt in with device_types=DEFAULT_DEVICE_TYPES.
Verification
- 4 new regression tests cover both endpoints, default and explicit paths
- Full suite: 71 passed
- End-to-end against the live Netatmo API on a Classe 100X home: 6 modules returned with both old and new payload variants → zero regression for existing users
Compatibility
- Required for: Classe 300X users (BNC3 bridge)
- Recommended for: all users — the fix is strictly more permissive
- Breaking change? No. Callers that didn't pass
device_typesnow get more data, not less. Callers that passed an explicit filter are unaffected.
Files
src/pybticino/account.py— drop default filter, conditional payload assemblytests/test_account.py— 4 new tests asserting payload contents
Next
bticino_intercom will bump to pybticino>=1.8.2 in its next stable (v1.9.7) and beta (v2.0.0-rc12) releases so Classe 300X owners are unblocked without needing to manually patch the library inside their HA container.