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?
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."
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.
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.
The communication is Matter / Thread / Zigbee for integration with SmartThings hubs.
1 Like
AlejandroPadilla
(Please contact @nayelyz or @Luis_Humberto_Medina )
9
@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.
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.
AlejandroPadilla
(Please contact @nayelyz or @Luis_Humberto_Medina )
12
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
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 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?
AlejandroPadilla
(Please contact @nayelyz or @Luis_Humberto_Medina )
15
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:
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.
AlejandroPadilla
(Please contact @nayelyz or @Luis_Humberto_Medina )
19
@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.
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?