FAQ: I have no idea what Edge is. Is that a new developer tool? (2022)

SmartThings is in the middle of a transition to a completely new architecture, part of which is called Edge.

The Samsung-hosted free groovy cloud will gradually go away beginning on September 30, 2022. For hub-connected devices, including Zwave and Zigbee, the DTH replacement will be Edge Drivers, which are written in the Lua programming language and will run locally on your own hub.

IF YOU ARE NEW TO SMARTTHINGS

If you are new to SmartThings, the basics of the SmartThings architecture are pretty simple:

A) An “Edge Driver” is code that runs on your SmartThings/Aeotec hub so the hub can talk directly to an individual device. If you don’t have a hub, you can skip all the rest of this thread: it won’t apply to your setup. :sun_with_face:

B) If your device uses a “cloud to cloud” integration where it talks to its own manufacturer’s cloud and that cloud sends messages to the SmartThings cloud, again this FAQ will not apply, so again you can skip all the rest of this thread. Some examples of this are Ring doorbells, Arlo cameras, and Google Nest products. These do use the 2023 architecture but they don’t need Edge Drivers. :cloud::sun_behind_small_cloud::cloud:

C. To use an Edge Driver, you have to get it loaded onto your own hub. Samsung supplies every customer who has a hub with a bunch of “stock” Edge Drivers. These are automatically downloaded when you add the hub to your account. They also get automatically updated as needed when the hub gets a firmware update. 🛜

D. Sometimes you might want to use a “custom” edge driver created by the device manufacturer or another community member instead of the stock edge driver for that device. To use one of these you follow a link to a “channel” page where you can subscribe to individual custom edge drivers created by the author of that channel. Once you have subscribed to a driver, it will be automatically downloaded to your hub. You will also automatically get future updates to that edge driver.

E. Once the edge driver is downloaded to your hub, when you go to add a new device that needs that particular edge driver, it should automatically use it. You can also switch from one edge driver to another for zwave or Zigbee devices by going into the “device details“ for that device in the smartthings app. Just remember that you have to already have the edge Driver you want to switch to downloaded onto your hub. (While it is possible to switch between drivers by using the web interface at my.smartthings.com/advanced , that appears to just sync up the change to be implemented later, probably on a time cycle. If instead you make the change in the smartthings app on your mobile device, it will take effect immediately.)

Caution: switching works fine for Z wave or directly-connected zigbee devices. In contrast, LAN devices typically exchange a security key when they are first added to your account and trying to switch to a new driver may make that device non-functional. Devices in this category include the hue bridge and Sonos. If you are getting custom code for an LAN edge driver the author will usually give you instructions about how to switch your device to it, so you’ll need to read those instructions carefully if your device is not using Z wave or directly-connected Zigbee. The community has put in a feature request to have the smartthings app changed so you won’t be allowed to try to switch an LAN device (since it isn’t going to work anyway), but that hasn’t happened yet.

F. If you want to find detailed information about your smartthings account which is not available in the app there are two good places to look.

SmartThings provides an official account web interface for the new architecture at my.SmartThings.com

In July 2023 they added an “advanced users“ page with more technical details:

https://my.smartthings.com/advanced

There is also a community-created project called “API BROWSER PLUS” which is a web interface that can give you even more of the technical details about your account like all the edge drivers you have installed on your hub. Here’s the thread about that:

SmartThings API Browser+ ... Now Available to All

Summary for New SmartThings Users

So that’s it for the basic information on Edge Drivers! :tada: SmartThings uses “Edge Drivers” so a SmartThings/Aeotec hub can talk to a specific device. Samsung provides stock Edge Drivers which are automatically loaded Whenever you add a new hub to your smartthings account and will be automatically updated and used from then on.

Some customers may want to use custom edge drivers in order to get access to additional features of a device which are not available through the stock edge driver. To use a custom edge driver you follow a link to subscribe to the author’s channel and then select the individual edge drivers you want to have downloaded to your own hub. Once you have selected the one you want, it will also be automatically downloaded and updated. You might have to manually switch your device from the stock edge driver to the custom edge driver, but once you have downloaded the custom edge driver you can do the switch in the smartthings app just by picking from a list of available edge Drivers for that device. :calling:

If you don’t have a SmartThings/Aeotec hub or you don’t plan to use any custom code and you aren’t interested in the technical details of the smartthings Architecture, you can probably skip all the rest of this thread. :sunglasses:

If you are a power user, you are planning to use custom code, or you just like to read about the internal details of how the system works, the rest of this thread is for you.

POWER USER EDGE FAQ BEGINS HERE

  1. Here are the official announcements:

Announcement | Changes to our Legacy SmartThings Platform

Announcement | SmartThings Edge for Devices and Automations

The End of Groovy Has Arrived

December 2022 update announcement on progress of the migration

Update to SmartThings Groovy Transition

Official transition FAQ:

https://support.smartthings.com/hc/en-us/articles/9339624925204

List of stock edge drivers which hav been put into production:

Groovy to Edge Device Migration List

Official timeline for what gets shut off when:

The End of Groovy Has Arrived - #765 by SmartThings

Groovy SmartApp Shutdown

And here is a thread on which hub models will work with Edge:

Smartthings Edge and code/hw requirements

And on December 27, smartthings added a new thread, which lists which models have been migrated:

Some of your devices may be automatically transitioned to stock edge drivers as this rollout takes place.

2. Using a custom edge driver

You can find a list of community-created Edge Drivers in the quick browse lists in the community-created wiki. You are limited to a total of 50 Edge Drivers per hub, but many handle many different models in one Edge Driver.

https://thingsthataresmart.wiki/index.php?title=Quick_Browse_Lists_for_Edge_Drivers

To use a custom Edge Driver, you have to subscribe to the author’s channel, which means following a weblink they will give you. That will take you to a webpage that SmartThings hosts where you can select which specific drivers you want downloaded to your hub. If you have more than one hub, you will be able to specify which one you want to use.

It can then take a little time for the driver to be downloaded to your own hub (in some cases as much as 12 hours has been reported), but it usually happens within a few minutes.

Once it is on your hub, you can add a device of that model to your account by using the “scan nearby” option in the ST app and it should automatically use the driver that matches its “fingerprint.” The device should then show up in your app either under “no room assigned” or in the same room as your hub.

@Terri_Baker has an excellent post that details the complete process for getting a new Edge Driver on your hub. Or removing one you don’t want anymore.

https://community.smartthings.com/t/post-requests-for-edge-drivers-here-community-created/237327/668?u=jdroberts

Note that during the transition phase while both architectures are still running There are a bunch of extra steps you have to take in order to switch from using a groovy DTH to using a custom edge driver. The exact steps are detailed in post 3 below.

3. How To tell if your device has a driver already available on your hub

If no driver is listed that just means you don’t already have one on your hub. you may still be able to find a custom driver and download that.

Switching between available drivers

If your device uses zigbee or zwave, you will be able to switch from one of the listed drivers to another just by selecting it on the list.

However, if your device uses LAN communications, like the hue bridge, and you try to use the device details list of drivers to switch between available drivers, your integration will break, and your device will become uncontrollable, because these kinds of devices require some security information which is only available when the devices first connected to your smartthings account. :disappointed_relieved:

There have been community requests to support that the app be updated to not allow for a driver change if it would break the integration, but this has not been done yet, and right now you can get yourself in trouble.

It appears that the only way to fix it once this problem occurs is to remove the device from your smartthings account, remove all the matching drivers except the one you want to use, and then re-add the device. But that’s a lot of work and also requires updating all your routines and automations. :sob:

Hopefully not too many people will run into this issue as there are very few LAN devices that have drivers right now, but it’s definitely something to be aware of.

How to see which custom driver channels your hub is subscribed to

To see which custom driver channels you are subscribed to, go to
your hub device page in the mobile app, tap the upper right menu and choose Drivers.

To see which Devices are using each driver on your hub

4. IDE Information will be incomplete for devices using Edge Drivers

Note that the IDE will be going away when the groovy cloud goes away, and it has not been updated to deal with non-groovy code, so all the edge drivers will show up just as “placeholder“ and if you try to make changes to them through the IDE you can break communications with the device. :persevere:

The following thread may also be helpful:

Life after the IDE: Questions and Answers

5. Questions about a specific edge driver

If you have any questions about a specific edge driver, ask in the author thread for that channel.

6. The future for groovy

And, yes, this means that all groovy DTHs, stock and custom, will stop working once the transition is complete. SmartThings says they are working on a method to automatically transition everyone if there is an Edge Driver with a matching fingerprint, but if you are using a custom DTH that might lose you some features unless you can find a custom Edge Driver with feature parity. But this is just something you’ll have to research model by model. :thinking:

7. More tools

The following thread discusses how to use the CLI to get device information in the new architecture and how to set up a development environment if you want to write your own edge driver.

CLI: How to Install and Use

The CLI is a programmer’s tool and requires that you have a laptop.

If you’re looking for something more like the old IDE, a webpage with details about your account that doesn’t require getting into code, a community member has created a webpage for the new API which helps fill that gap. (The topic title is a clickable link.)

8. A note about “fingerprints“

You will see a lot of discussion of “fingerprints“ with respect to edge drivers. A “fingerprint“ is the smartthings’ term for a numeric code representing the manufacturer and model number of a device. Zigbee and zwave Devices will send this information to the hub at the time that they join the network for the first time.

Some smartthings documentation and third-party apps Will call this The “manufacturing code.“ It’s the same thing.

If all you need is the fingerprint for an individual model, you can skip the rest of this section, and just use the new “advanced” section of the official web interface:

https://my.SmartThings.com/advanced

If you’d like to know more details, or get more information, the rest of this section goes into that.

@jds13 had a very good post on the details

There are several different ways to find a device’s fingerprint without using the IDE:

The most popular method at the time of this posting was probably the API browser plus webpage. It gives a very nice view of device details, including the fingerprints. The following image was posted by @h0ckeysk8er in another thread:

But if you are already using the CLI for other things, you may prefer to use that directly. It’s up to you.

9. a note about edge driver integrity

The old smartthings architecture was unusual in that you could look at every line of custom groovy code that was going to run on your account. But of course that’s not how most apps work. If you download something from the Google playstore, you don’t really have any idea what the code does and you are not typically given a means to look at it.

Custom edge drivers are more similar to google play store apps in that regard.

edge drivers run on your own hub.

In order to get them onto your hub, you have to download them from a “channel“ which is in the smartthings cloud.

In order to do that download, you will follow a link that the channel owner gives you that takes you to a webpage which is accessing the smartthings cloud.

You sign into your SmartThings account on that webpage.

It then displays the channel details. You can subscribe to the channel and then select individual drivers that you want to have downloaded to your hub. ( the download process can reportedly take as much as 12 hours, but it’s usually pretty quick.)

Once the driver has been downloaded to your hub, you will be able to see its presence through the smartthings app.

In order for a developer to get a channel in the smartthings cloud, they have to go through some paperwork and sign up. But it’s not like an app in the Apple store: they are not required to have the code reviewed for malicious intent before it becomes publicly available.

So at no point does the code have to be available for the end user’s inspection. And even if there is code in GitHub that the channel owner says is what will be downloaded to your hub, there’s no guarantee that it will be the same.

Which is pretty much the same as apps on the Google playstore, if I understand that process. There are promises, but no guarantees that the promises will be kept. :thinking:

There is a thread in the developer section of this forum which discusses these issues in detail if you are interested in that.

Note that a lot of community developers welcome this change, because it allows them to charge a license fee for their work Without concern that someone will get a copy and then just share it around.

10. OK, that’s edge drivers. What about groovy smartapps, including webcore? Are those being shut off, too? Are there edge smartapps?

Yes, all custom Groovy cloud that runs in the SmartThings cloud will be shut off, including Webcore. And, no, there are no edge smartapps. That’s because we as customers are not allowed to add anything to the hub except edge drivers.

The official announcement says that the shut off will occur during the week of January 16, 2023.

Groovy SmartApp Shutdown

11. Wait
what? So how do I replace my custom smartapps?

The short answer is you can still write your own customs smartapps, even in Groovy, but you have to host them yourself, either at a hosting service or on a local server. The smartapp will then communicate with the SmartThings cloud through a REST API. (There is no option for a smartapp to communicate directly with an ST hub, so the new architecture for SmartApps is very similar to the old groovy cloud architecture in that regard. Your smartapp basically requests the cloud to talk to the hub for you.)

And, yes, that’s a lot more work and potentially money.

Noncoders May prefer to use other prebuilt alternatives. One of the most popular is SharpTools. It has a very user-friendly visual interface that runs in any browser. More powerful than the routines built into the SmartThings app, although not as powerful as Webcore (yet). There’s a free tier that may be all you need, or a pro tier for $30/year. And a free trial. So if you’re not a programmer, it’s worth a look.

There are other options, too. See the following discussion thread:

Replace Groovy with Automations—what’s your plan?

Just remember that when it comes to smartapps, you are usually talking about “automations,” not “Edge.”

21 Likes

Yup, everyone just sit tight (no pun) and dont make any drastic moves like jumping to another platform as it just might have underlying hidden problems of its own.

HOW TO MANUALLY SWITCH FROM A CUSTOM GROOVY DTH TO A CUSTOM EDGE DRIVER DURING THE TRANSITION PHASE

The following gives the details for manually switching to a custom edge driver during this transition phase, while both architectures are still running.

Once the transition is fully complete, you won’t have to do this anymore: you will just subscribe to a custom edge driver, and then add a device in the regular way. All these extra steps are just because both architectures are currently running. This is why many people are just going to wait for the automatic migration, and then fix any issues that occur then. But if you do want to manually force a transition, here are the steps.

(if you are trying to manually transition from a custom groovy DTH to a stock edge driver, it’s all the same steps except you won’t have to do step five if the stock edge driver is already on your hub. If it isn’t already on your hub, you can’t force the transition to a stock edge driver right now.)

Right now, custom groovy device type handlers are still operational, so the priority sequence during this transition time gives them a higher priority than edge drivers.

That means that in order to manually transfer from a custom device type handler to an edge driver at the current time you must:

  1. If you have any routines that use the device, they may be deleted when you do the next steps in this process. :scream: So you have to manually change those to temporarily use a different device, or a virtual device, to keep the routines from being deleted.

  2. As @Terri_Baker noted in another thread, the following step is absolutely critical: make sure that the exact fingerprint of your device is included in the custom edge driver that you want to use. Not just the same model name. Not something close. But an exact match. If you are not sure, ask the author of the edge driver to confirm that your fingerprint is included.

  3. Delete the device from your account. (After you do this, check the IDE as well: some people have said they have to delete device in two places to make it work.)

  4. Delete the custom DTH from your account using the IDE. Note that you will not be able to get it back again, so be sure you want to do this. :thinking:

You can probably still get to the IDE on the day of 27 February 2023 at the following URL, but it is expected to go away soon. However, a lot of the functionality has been shut off. You can’t edit existing custom DTH‘s or add them, but you may be able to delete one or delete a device.

They keep changing the functionality without announcement, so I can’t promise what you’ll find when you get there, but this is what you can try.

https://graph.api.smartthings.com/

  1. Subscribe to the new custom edge driver. You do this by following a channel link that the author gives you and selecting the edge drivers that you want to have downloaded to your own hub. This normally only takes a few minutes, but it can take longer.

  2. Open the SmartThings app, go to the device tile for your hub, and check the drivers that you have installed. Make sure the new driver that you want is listed there before proceeding.

  3. If this is a physical Z wave or Zigbee device, Put your device into pairing mode. (see the user manual for instructions)

  4. now use the smartthings app to add a device using “scan nearby.” it should now pick up the custom edge driver.

  5. If you have more than one custom edge driver on your hub that matches the fingerprints of the device, it will randomly pick one. After that, go to the device in the app, select the three dot menu to open up “more“ choices, choose “driver“ and you will be able to switch to a different driver on your hub if you want to.

  6. Now go back into any of the routines that you had to change in step one and change them to use the correct device.

And if that seems like a lot of work, it is, which is why many people are just waiting for the automatic migration to happen.

Here’s a link to the official transition FAQ that explains the priority sequence during this transition time while both architectures are still operating.

9 Likes

It def seems like way to much work. I have about 8 devices left that have not been migrated. I’m not sure when the official migration period ends -says Q1 2023 (but who knows).

Most of the work is looking thru posts to confirm I have the right edge driver installed. I do use the API browser (LOVE this) to compare code, but IDK how to look at the driver installed to confirm its the correct one. I will look for the thread you mentioned. Thanks for the detailed instructions!

How do I download a stock edge driver? I’m adding a thermostat I previously had on the generic z-wave thermostat DTH, but it’s picking up a custom driver that I don’t want to use. When I try to change drivers I see no other option.

I mean edge driver. So it at least moved to edge vs picking up generic thermostat groovy DTH.

I’ll try the beta channel quickly. Will beta drivers be moved automatically to a production driver or will I have to exclude and re include again?

The fingerprint is below. It’s not in the production driver here (SmartThingsEdgeDrivers/drivers/SmartThings/zwave-thermostat at main · SmartThingsCommunity/SmartThingsEdgeDrivers · GitHub) but I see generic thermostats at the bottom of the fingerprint file, so I thought that might pick this up.

type:0806 mfr:009B prod:5354 model:5A31

I get that, but will I forever be on a beta driver? Or will that switch automatically to a production version at some point? Or will I be able to download the production one and switch to that?

I switched to the beta one and seems to be working.

1 Like

Got it thanks for the help. Guess will just take the plunge with the beta. Seems better than having the device potentially getting temporarily bricked in the transition.

No they said the beta drivers will stay and you dont have to switch to production version.

@nayelyz can correct me if I’m wrong, but my understanding is that to switch from a ST beta channel driver to a production channel driver, you would have to delete all devices using that driver, delete the beta channel driver, unsubscribe from the beta channel, and then reinstall the devices.

However, she has said in other topics, there is no reason to switch over to production channel drivers from beta channel drivers as they are equivalent with beta channel drivers being released slightly ahead of production.

1 Like

As drivers in the default channel (AKA production drivers) cannot be currently installed through a channel invitation but only during the onboarding process, it would be the correct path.
You’re also correct about this:

They used to be different only in the fingerprints they had enabled (uncommented in the code) to be matched during the onboarding process (beta drivers had enabled all fingerprints and production drivers had only those that were confirmed that worked correctly with the driver) until the migration moved on and the priority during the onboarding process changed (Edge drivers before DTHs), the other code was the same.
So, changing from the “beta” driver to “production” would require extra work from you for no reason.

1 Like