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

I am creating a device that is a combination of a couple other types of devices. It will have a switch, a plug / bulb and a temperature sensor.

I already have the firmware running for this device based on the light bulb example. I also added a second endpoint that is from the temperature example for Nordic. This basically generates a random value as a temperature and can be turned on and off.

When I go to the Edge Device Builder it just gives me standard devices. How do I take one of those and then add the standard temperature device profile to make a combined profile?

1 Like

I think that the Edge Device Builder is designed to provide an easy lo/no-code way to build Edge drivers for new non-complex devices. According to another topic I read, “It’s a way for companies to add (match) their device fingerprints to a stock edge driver and submit it for certification.” So following that notion, there would need to be an existing stock driver that at least closely matches your device’s capabilities. And note in the Edge Builder, once you select an Edge driver for your device, you get this notice " For custom solutions contact partners@smartthings.com."

Thank you for your reply. I sent an email to that email address.

Hi @Mindfire Welcome SmartThings Community

Could you tell me more about your project? Are you interested in certifying the device?, it looks like you are working with a LAN device but the Edge device build works with Matter, Zigbee, and Z-Wave devices.

We will get it certified at some point.

Before we tell you about our device, we need to understand how confidentiality works. Do we need to put an NDA in place?

I can say that the device is a Matter device that will connect to a Smartthings hub (hub device). It uses the Nordic 5340 chip, so the communication is Bluetooth (I believe), but could also be Zigbee.

As I said it is Matter based, so the raw communication method probably doesn’t matter a lot.

Tony

I assume since this is a public forum and we don’t want to disclose the details of our device, this is not the place to give details.

Is there a private channel we could converse on?

If it’s Matter, it has to be Matter over Thread or Matter over Wi-Fi.

The communication is Matter / Thread / Zigbee for integration with SmartThings hubs.

1 Like

@Mindfire For the moment, I recommend you check this documentation Get Started with SmartThings Edge to explore some concepts about edge drivers, Based on it, you can decide the best way to integrate your device, you can create a driver for Zigbee, Matter, LAN, or Z-wave devices.

You can test your driver using Smartthings CLI

as your device is a custom device you will create a profile based on your requirements.

I have been reading the documentation and reached out because what I was reading said to use the Edge Device Builder, but when I tried to do that it didn’t point me to how to combine functionality.

I will take a look at the profile, but a simple tutorial about how to build what we want would be nice.

The Edge Device Builder is an option if your device matches one of the standard drivers. In your case, since your device is more complex, you can use the official drivers as a base

Edge Device Driver Reference

I suspected as much. Thank you for the confirmation.

I think where I got a little turned around is when I was looking at the documentation around making a device profile, most of the things I read kept saying something like “use the new Edge Device Builder…it is the new improved way to build profiles”.

From what I read I didn’t get the sense that would only really work if your device was cookie cutter. I was expecting the Edge Device Building to include tools to customize my device profile to the extent that I need to. That doesn’t seem to be the case after all.

I will go back to building a custom profile…

I have been learning more about how to manually create a matter driver.

I have the CLI and have copied some drivers from the github repo and modified it.

I ran into a question: While I am just developing the driver, what do I use for the vendor ID and product ID? I don’t have one yet and don’t know how to get them. We are also not really ready to start paying any money if those things cost money.

How do I develop my driver without those for now?

Related to SmartThings the vendor ID and product ID are necessary to create the Fingerprint that is the way that the hub will identify your device.

I’m not familiar with the process of how those values are assigned, as far as I know after joining as a CSA member you can apply to get it, and when the device is certified you can see something like this Cync Outdoor Plug - CSA-IOT

In the case that SmartThings doesn’t match the device with specific Fingerprints, It will try to find a genetic fingerprint based on the deviceTypes you can use this to generate your fingerprint, for example:

# fingerprints.yaml
matterGeneric:
  - id: generic-temperature-and-humidity
    deviceLabel: "Temperature and Humdity Sensor"
    deviceTypes:
      - id: 0x0302 # Temperature Sensor
      - id: 0x0307 # Humidity Sensor
    deviceProfileName: temperature-and-humidity-sensor

We are not ready to join CSA because of the cost, but we do need to continue development.

The issue I am running into is that I am trying to build my edge driver and it is complaining that I don’t have a vendor or product id.

Is there a way to develop and build and test my driver without those? I can’t image you have to join CSA just to develop a driver, do you?

We also know from another topic that having just the vendorID in the fingerprint.yml will cause all devices of that vendor to match.

Also, multi-capability devices that don’t have specific vendorID/productID will only match the deviceType in the first endpoint for a device. For example, the ThirdReality Smart Color Nightlight has 3 endpoints 0x10D (Extended Color Light), 0x0106 (Light Sensor), and 0x0107 (Occupancy) sensor and the Matter Switch driver with the light-color-level profile is what is selected for the device.

Device types are defined in the Matter spec Matter Device Library.

Can’t you just use dummy values for now?

@Mindfire It is not necessary to join CSA to develop the SmartThings driver for the device. I only explained how those values are used in SmartThings.

I’m assuming that you are using a device as ESP32-H2 for your integration. Therefore, I’m not sure how those values are set or if they can be set on the device side. I will try to investigate it, but unfortunately, I only have devices from manufacturers to test things related to Matter.

We are using the Nordic nRF 5340 module.

Here is the command that I run and the error I am receiving:

% smartthings edge:drivers:package .              
    AxiosError: Request failed with status code 400: {"requestId":"8261223721364904685","error":{"code":"ConstraintViolationError","message":"The request is malformed.","details":[{"code":"%s cannot be null.","target":"fingerprints[0]","message":"ProductId and 
    VendorId cannot both be null","details":[]},{"code":"%s cannot be null.","target":"fingerprints[1]","message":"ProductId and VendorId cannot both be null","details":[]},{"code":"%s cannot be null.","target":"fingerprints[2]","message":"ProductId and 
    VendorId cannot both be null","details":[]}]}}
    Code: ERR_BAD_REQUEST

As it turns out it might just be because I am calling the package command in the CLI and it is trying to upload it and I don’t have a vendor id or product id.

I figured this out by doing the same command, but added the -b parameter. At that point it created a zip file that is basically all the files in my project.

Is there a tutorial that shows how to just build my driver and run it on my local Smartthings Hub?