How do I use Smartthings Edge Device Builder to Create a Standard Combined Device

Yes, that is the reason, one thing you can do is connect your device to SmartThings without the driver, more than likely, the device will be added as a Matter thing. That means your device didn’t match with an official driver, but SmartThings detects that it is a Matter device. After that, you can use my.smartthings.com to check how the device was added and use that information to create the fingerprint.

This is very common when people buy devices that are not certified and they want to create a custom driver.

Here are some examples of drivers.

1 Like

Why does he need a ProductID and VendorID to package the driver? Can’t he just use a generic fingerprint based on Matter device type like you previously mentioned? I know that the Matter button and media drivers have no vendor/product specific fingerprints defined.

I’m sorry if I didn’t make myself clear, he can, for example, I made a test with this fingerprint, and work correctly at the moment to run smartthings edge:drivers:package

matterGeneric:
  - id: generic-switch
    deviceLabel: "generic-switch"
    deviceTypes:
      - id: 0x0100
    deviceProfileName: switch-level
2 Likes

Glad my understanding is correct. As long as his Matter device’s endpoint[1] returns an application device type that is defined in the Matter Device Library, it should match his driver generic fingerprint for that device type and be installed (assuming a valid profile is defined).

One thing to note is that the ST Advanced Web App does not provide the vendorID nor the ProductID for Matter devices (hint…it should). You can find that information in the community developed API Browser+. It also shows the endpoints available for the device and the device types for those endpoints.

2 Likes

This is all extremely helpful.

My device is basically a combination device that contains a switch, bulb, plug, temperature sensor and a couple other things that are all standard devices, but mine has them all in one.

It sounds like I basically need to just make sure it exposes all those things in the right way and then the fingerprint will match it if I follow that method of connecting the device and then looking on my.smartthings.com.

I will give that a try and see how far it gets me.

You’re going to have to define a profile that includes all those components and create a fingerprint using VendorID and ProductID once you know what those are. Using the generic matching method, the driver will use the endpoint[1] device type to assign the profile and only the components defined in that profile will show up in the ST app. For example, I have the THIRDREALITY Smart Color Nightlight which is primarily a color changing bulb with dimmer leveling. The profile selected exposes those capabilities. It also has a illuminance sensor and motion/presence sensor. Those capabilities are not exposed in the ST app. I’m working on creating a device specific fingerprint and profile for it. I’ll let you know how that goes.

Also, the ST website will not show the VendorID and ProductID. Use the community developed website I referenced in my previous post to see those as well as the endpoints and device types your device provides.

3 Likes

I am back to being confused then. I don’t have a vendor or product id and won’t have them for a while.

So how do I develop me device with the capabilities that I have mentioned and test this on my local smartthings hub?

Detailed steps would be helpful at this point. I am very confused.

You might be able to use a fingerprint with multiple device types included like this:

  - id: "matter/color/temp/light/2"
    deviceLabel: Matter Color Light
    deviceTypes:
      - id: 0x0100 # OnOff Light
      - id: 0x0101 # Dimmable Light
      - id: 0x010C # Color Temperature Light
      - id: 0x010D # Extended Color Light
    deviceProfileName: light-color-level

or this:

  - id: "matter/media/video-speaker-player"
    deviceLabel: Matter Video Player with Speaker
    deviceTypes:
      - id: 0x0022 # Speaker
      - id: 0x0028 # Basic Video Player
    deviceProfileName: media-video-speaker

But you’re still going to need a custom profile to include all the components your device supports.

1 Like

A device profile looks like

name: deviceprofile-name # This needs to be the same as deviceProfileName on your fingerprint 
components:
- id: main
  capabilities:
  - id: switch
    version: 1
  - id: switchLevel
    version: 1
  - id: anotherCapability
    version: 1
  - id: anotherCapability2
    version: 1
  categories:
  - name: category-name 

You can add the capabilities that you want but your driver must be able to handle it Capabilities Documentation.

For example, as you mention your device has a temperature sensor, so you must be interested in using the capability temperatureMeasurement

1 Like

That makes sense and is what I was thinking before. I was just confused again when you said I would need a vendor and product id again in your last post.

Yeah, I probably should have said “you’re going to want to use ProductID and VendorID or you’ll have to use multiple device types”. Sorry for the confusion.

Does each profile need to match up to a single endpoint or can a single profile match to multiple endpoints?

I went to my.smartthings.com and see my hub, but can’t figure out how to upload my custom profile to it. I was not able to publish it because I still don’t have a vendor or product id.

So how / where do I upload my custom driver without a vendor or product id and install it into my smartthings hub?

From my testing, if you are matching on device type, you can specify a fingerprint that includes multiple device types, hence multiple endpoints.

I packaged my driver and was able to upload my driver to my hub using the ST CLI.

As we’ve been discussing, you can have a fingerprint that matches solely on device types. With this method, you can package and install a driver that has no vendorID or productID defined in the fingerprints.yml.

1 Like