Matter SwitchBot Air Purifier using thermostat driver

I was in the market for an air purifier and I saw that Switch Bot recently released a firmware update for theirs that made it Matter compatible, so I bit the bullet.

I had to set it up with its own app to get the firmware update and eventually to get the Matter code (no Matter QR Code on the device nor manual). However, in SmartThings it is using the “SmartThings driver for Matter thermostat devices”. Is that correct??? Shouldn’t there be an air purifier driver or a more generic name for this driver?

The device screen has a Main section with Air purifier fan mode and Fan speed. There are also sections for Hepa filter and for Activated carbon filter. But every time I go into the device a popup says “This device hasn’t updated all of its status information yet. Check again later”, but it has been saying that for a day now, and the filter sections just aren’t working.

Is there a better driver to use? Or a way to get the whole screen working?

ST has made the decision to group multi-function devices into a single driver for many things like switches/dimmers and buttons. This is also the case for thermostats and air purifiers. Currently, there are only three vendor specific fingerprints to match specific capability profiles. The rest will have to match on generic fingerprints based on deviceTypeIds found in the device endpoints. If there is not a specific combination of deviceTypeIds to match your device’s capabilities, you won’t get the full functionality (or have more capabilities than your device supports). You can see your endpoints and the associated deviceTypeIds in either the ST CLI or the community developed API Browser+. You can also see the profile your device is using with either of those tools or the ST Advanced Web App.

1 Like

The device name and device profile from the ST Advanced Web App came up as “air-purifier-hepa-ac-wind”.
Thanks for the confirmation that this is the appropriate driver; Samsung should make the name a little more generic and catch-all though.

However, how do I get the “This device hasn’t updated all of its status information yet. Check again later” to go away and make the device screen fully usable?

So, I’m assuming it’s selecting that profile because the first endpoint matches the deviceTypeId for an air purifier which is explicitly mapped to that profile in the fingerprints for the driver:

 - id: "matter/air-purifier"
    deviceLabel: Matter Air Purifier
    deviceTypes:
      - id: 0x002D # Air Purifier
    deviceProfileName: air-purifier-hepa-ac-wind

and that means that the device will get assigned all the capabilities of the profile even it doesn’t support them:

name: air-purifier-hepa-ac-wind
components:
- id: main
  label: Main
  capabilities:
  - id: airPurifierFanMode
    version: 1
  - id: fanSpeedPercent
    version: 1
  - id: windMode
    version: 1
  - id: firmwareUpdate
    version: 1
  - id: refresh
    version: 1
  categories:
  - name: AirPurifier
- id: hepaFilter
  label: Hepa filter
  capabilities:
  - id: filterState
    version: 1
  - id: filterStatus
    version: 1
  categories:
  - name: AirPurifier
- id: activatedCarbonFilter
  label: Activated carbon filter
  capabilities:
  - id: filterState
    version: 1
  - id: filterStatus
    version: 1
  categories:
  - name: AirPurifier

and while there are other profiles defined for various combinations of capabilities that an air purifier supports, it doesn’t seem like the driver will override the explicit fingerprint match when it goes through its dynamic profile determination. If the profile has a capability your device doesn’t support, you’ll get the message you’re seeing.

I would be curious to see what the endpoints are that the device is presenting. Also, Hepa and Active Carbon clusters are optional in the spec so assuming that every air purifier will have them seems wrong. A little driver logging with the CLI would tell us more about what the device is reporting back to hub when you attempt to refresh in the app.

You’re getting further than me. Mine always throws an error at the last step of onboarding.

That device profile also doesn’t support any kind of air quality reading, which the SwitchBot air purifier reports a basic good, bad, very bad over Matter.

If it supports air quality, it should have an endpoint with deviceTypeId 0x005B. From reading the code, it looks like air quality is determined dynamically, but not clear if that will happen when there is an explicit fingerprint match.

Indeed!