Implementing 5-speed fan control (excluding off) on ESP32 Direct Connected device

Hi,

I’m implementing SmartThings Direct Connected on an ESP32-based ventilator. I’d like to verify my understanding and ask for advice on the following points.

fanSpeed Capability step limitation

I want to implement 5 fan speed levels excluding off: 1% / 25% / 50% / 75% / 100%.

From the official documentation, it appears the standard fanSpeed capability presentation is limited to 5 steps including off (off / slow / medium / fast / max). Since removing “off” leaves only 4 steps, I believe “5 steps excluding off” cannot be achieved with the standard fanSpeed presentation. Is this correct?

Custom Capability and WWST certification

To implement the desired number of steps, I would need to use a Custom Capability. My understanding is that using a Custom Capability disqualifies the device from WWST (Works With SmartThings) certification. Is that correct?

Practical impact of selling without WWST certification

My understanding is that even without WWST certification, users can still register the device via QR code scan and use all SmartThings features normally.

Is the practical difference limited to just these two points?

  • The brand/product is not listed in the official SmartThings app device catalog
  • Cannot attach the WWST logo to the product packaging

Alternative approach

Is there any way to expose 5 speed steps (excluding off) while still using a standard capability?

e.g. Low / Gentle / Medium / Strong / Max (1% / 25% / 50% / 75% / 100%)

fanSpeedPercent release timeline

I noticed fanSpeedPercent listed as a proposed capability in the documentation. Once released, would it allow continuous percentage-based fan speed control? Is there a known release timeline?

One more question: Device discovery without WWST

For devices without WWST certification, is QR code scanning the only way to add the device in the SmartThings app? Or is it also possible to discover and pair the device through the “Scan nearby devices” feature?

If QR code is the only option, does that mean a physical QR code label on each unit is mandatory for end users to onboard the device?

Thank you!

Hi, @JohnJo
I need to check with the certification team if changing the labels of fanSpeed is acceptable for certification, because it can be done through a custom device presentation.

Correct, custom capabilities cannot be used in a WWST certification.

I need to verify this, but I’ve mostly seen the nearby scan feature used for Hub-Connected devices.

Thank you, @nayelyz

I want to make sure I understand your first answer correctly, because it seems a bit contradictory to me.

My original question was whether the standard fanSpeed capability supports 5 steps excluding off. You mentioned that the label change can be done via a custom device presentation — but at the same time, you confirmed that Custom Capabilities cannot be used for WWST certification.

Since a custom device presentation is typically used with Custom Capabilities, I’m now confused:

  • Does “custom device presentation” here refer to modifying the presentation of the standard fanSpeed capability (without creating a Custom Capability)?
  • Or does it require a Custom Capability, which would then disqualify the device from WWST certification?

Could you clarify this point? I want to make sure I understand the distinction correctly.

Also, when you have a chance, could you help with these two remaining questions?

fanSpeedPercent release timeline
I noticed fanSpeedPercent listed as a proposed capability in the documentation. Once released, would it allow continuous percentage-based fan speed control? Is there a known release timeline?

Device discovery without WWST
For devices without WWST certification, is QR code scanning the only way to add the device in the SmartThings app? Or is it also possible to discover and pair the device through the “Scan nearby devices” feature?
If QR code is the only option, does that mean a physical QR code label on each unit is mandatory for end users to onboard the device?

Thank you so much!

Yes, sorry for the confusion, @JohnJo. We call a “custom device presentation” even when we use standard capabilities, but we add extra configurations to modify their original configuration, labels, enums, etc.
However, my question to the certification team will focus on how much we can customize the standard capability while still being accepted into the WWST process.

I also asked the team whether this capability can be used for certification; there are some “proposed” capabilities that are already stable.

I also asked about this to confirm if the approach is possible.

Hi, @JohnJo
The team confirmed the capability “fanSpeedPercent” can be used now despite its “proposed” status.
Would you like to use it as is or would want to change the range to go from 1-100 or maybe have the steps you mentioned of 1% / 25% / 50% / 75% / 100%?
This can be achieved with a device presentation. It would be similar to what I shared here:

You would only need to change the capability’s ID with fanSpeedPercent.

To modify the profile’s presentation, you need to:

  1. Open the Developer Console
  2. Go to Device Integrations and select “Device Profiles”.
  3. Find the one being used for the Direct-Connected project
  4. Click on the menu for this profile (three-dot symbol at the end of the row) and download the file.
  5. Open the JSON file and go to the section called “deviceConfiguration”. This is where you need to add the configuration I mentioned above.
  6. Once it’s done, you need to upload the file through the same menu in the Developer Console
  7. Then, you need to reinstall the device to force a refresh in the app because some configuration is cached and it can present the previous UI.

About this, the team confirmed that for the Direct-Connected device to work for final users, there must be a certification process since adding the device’s data is the key part for a successful onboarding, as mentioned in the doc below. Otherwise, users will receive an error.

Thank you so much for always being so kind and helpful, @nayelyz :blush:
Hope you have a wonderful day!