Getting SwitchBot TRVs up and running via Matter - all local, no cloud (solution)

I recently bought 11 SwitchBot TRVs (Smart Radiator Thermostats) along with a SwitchBot Hub 2 and a Hub Mini, with the plan being to get my currently single-zone heating system to be able to adapt to the situation in each room.
According to the product blurb these all support Home Assistant and Matter, but it turns out I turned up way too early to the party and the documentation is very sparse!

But I have got them up and running and present in HA so I thought it might be useful to write this up for anyone else.

Key points

  • The TRVs themselves have no wifi - they are resolutely BLE only
  • You then need some kind of SwitchBot hub (minimum of Hub 2 or Hub Mini Matter) to act as a BLE bridge
  • As BLE is relatively low range, you likely need more than one hub (which is why I have two - one for each floor)
  • The hubs support Matter, which would appear to be the only way to get the TRVs into Home Assistant

Config

  1. Get the hubs set up first otherwise the TRVs will stay in BLE, non-bridged mode
  2. Set up each TRV individually
  3. From your phone, install a new Matter device and scan the QR code of each of the hubs in turn
  4. The hubs will be added, but no TRVs yet
  5. Back to your phone for the missing link: within the Switchbot app, select the hub, go to Settings and “Matter Setup”
  6. Inside Matter Setup there’s a buttong for “Secondary Devices” - go in here, and you should see your TRVs - expose each of them
  7. Do this for all hubs

And now the TRVs should appear in Home Assistant!

Hub limits
Note that the hubs have limits on the number of devices they can expose:

  • Original Hub Mini - none (avoid!)
  • Hub Mini Matter - four
  • Hub 2 - eight
  • Hub 3 - thirty

Note that you have to explicitly expose specific devices from a specific hub, so this means they won’t be “load balanced” across multiple hubs, so plan the purchase, location and pairing of the hubs accordingly.

Hope this helps some folks - it was far from obvious and far from painless!