Announcing beta for enabling raspberry pi direct-connected devices

I have cracked the code to be able to implement device applications on a Raspberry Pi using the new SmartThings direct-connected device integration methodology. If you currently have a Pi-based application communicating with SmartThings, you know you’re going to have to move your code to be either a cloud-connected device or direct-connected device. The advantage of the latter is you don’t have to open up your home network to the internet or move your code to a public cloud. You can keep it all running locally on your Raspberry Pi.

This also enables a whole new opportunity for those of you that want to explore LOCAL IOT device workloads on a Raspberry Pi that can easily connect to SmartThings as a supported device.

Currently the SmartThings direct-connected device API is available for C-language device applications, but one of my next steps is to create an API wrapper for Python so we can expand the opportunity for more Pi-based development projects.

Before I release my enablement package generally, I’m looking for volunteers to take my package and help me wring it out for various Pi and Rasbian OS combinations.

Please comment here if you have interest in this project - either as a beta volunteer or as a final release user, so I can gauge the level of interest.

One last note, I’d like to thank Kuang-Hui of Samsung for answering my many questions along the way of development and test.


Wow awsome news, congrats !
I have a pi4 8gb running a 64bit HA(Home Assitant). I dont think i may help as am new to all of that.
However what i am interested in, is in pushing HA devices to ST because of the lack of compatible devices in ST, so i have been looking towards fison67/HA-Connector

Generally, I am new to the Raspberry Pi environment. However, I do have a Pi 3+b running the Smartthings node proxy to connect my AV system to ST ([RELEASE] Russound Multi-Zone Controller Integration). Honestly, I would appreciate it if you would take a look at that link and tell me if I would fit your beta requirements. Thanks.

Matthieu - do you think it would be bad form if I posted something about this to the HA forums - in the spirit of ‘extend your RPI-based projects to SmartThings platform’ ? I don’t want to piss anyone off thinking I’m on there promoting ST :thinking:

Sure, I’ll have a look.

Hi, This is great news. I’ve started to look at this, and I am struggling. I have a homebrew Node JS app that controls my somfy blinds (using an RFXCOM USB connected to the Pi). I am also trying to control some BLE devices and a few Yeelight wifi lights using the same architecture.

The blinds app has worked pretty flawlessly for over a year. the yeelights were working, but I stopped using it. The BLE devices are under development.

I am very happy to beta test, but I am a bit disorganised, so a little scared to commit.

I will certainly be an end user /

Good luck and I hope you succeed

Hi OF COURSEplease do post on HA forum, this diserves to be better ! Because ST UI is awsome and HA core is superawsome too. Both are the perfect solution for me.t

Hi David - thanks for replying. Sounds like you have some interesting use cases going there. Having your pi-based apps being supported as SmartThings direct-connected devices would be a useful thing for you.

No worries about beta test - it’s not that formal. I just want some others besides myself to exercise the install/configure scripts I wrote as well as the enabling code itself. You don’t have to write anything - the end goal is to get an example app up and running to show it can all work on your Pi.

What Pi model and Rasbian version are you running?

Thanks I will! I even tweeted at Smartthings yesterday; haven’t used Twitter in ages :grin:
I think I’ll make some posts on Reddit as well. Gotta get that marketing engine reved up!

I am very interested in this as well. Mainly to provide a way to facilitate communication between a hubitat hub and the Smartthings environment.

Awesome! Your Pi model and Raspbian version?

I have a few pi4’ with 4GB of ram. I also have a Pi zero if that would be something we want to test with. I will load the latest version of Raspbian.

I also have a always on x86 server i can load a container on if that will help.

Hi again. Took a look at your post, and yes, I think you should definitely look at the possibility of using my package if you don’t mind moving to a Raspberry Pi. The one area that might need some additional investigation is how the currently-defined ST capabilities would map to your device needs. I have not yet explored the use of custom capabilities through the direct connect interface, and last I looked at it (granted it’s been a couple months), ST’s custom capabilities are a royal pain to work with since all they have is some cryptic CLI to define them. I’ve been meaning to post a question to confirm if custom capabilities will be supported through the direct-connected device approach, so I’ll try to do that today.

Certainly any currently defined device capability is supported, so if you think they would satisfy your needs, you should proceed.

I’m sure you will hate to walk away from all the cool work you did to build your node proxy, but who knows how long that interface will continue to be supported on the ST platform. I have a similar situation where I built an announcer application (before Alexa could do it) and created a pretty awesome upnp interface to connect to my Hub, but again I can only assume that ability is probably going away with Groovy and the IDE.

Be glad to talk through this some more with you.

I have a few…My ‘production’ machine is an old 3B (a02082) running raspbian jessie
…I am developing on a 4 with 2gb running rasbian buster

OK - I will post here a pointer to get started.

For all interested in trying out the beta, I’m going to go ahead and post a link for you to get started. I ask that you take notes as you go through the install and config and let me know if anything is unclear or even (gasp) broken.

This beta should be fairly solid on any Pi 3b or later running the latest Rasbian buster. I’m quite interested in other configurations too, as far back as Pi 3 and Raspbian jessie. I’m also hopeful we can test variations in network interfaces: i.e. wifi-only and/or wifi/ethernet combo (ethernet-only/no wireless is not possible because of onboarding requirements).

If I’ve done my job, and after you’ve done some pre-reading, this whole process shouldn’t take much more than 30 minutes from start to having a running device app on your Pi that you can control from the mobile app. That is, if you follow the automated script (‘mastersetup’) and it’s accompanying 1-page quickstart guide.

For those more technically-inclined and wanting to get into the setup & config details, there is also a very detailed configuration guide that will help you do everything manually.

I’d recommend everyone use the automated script initially and use the configuration guide as a reference to know the details. You can always go back using the configuration guide and tinker around some more with various configuration alternatives. One last thought on this, don’t be put off by the size of the configuration guide. I’ve documented and explained everything to great detail, but once you’ve gone through the process you’ll see it’s not that bad. :grin:


I’m really looking forward to any feedback you can provide. I promise to be very responsive! I really want to get passed beta phase and onto a rock-solid release ASAP.

Thank you.

I have a Raspberry Pi Model B Rev 2 running Raspbian Buster. The script says “This Raspberry Pi model not tested or supported” for this configuration.

I’m sorry for the issue, Brad. Is it a Model 3b? Can you tell me the model number? It must not be included in my table:

modellist=(“a02082” “a22082” “a32082” “a020d3” “a03111” “b03111” “c03111”)

/sys/firmware/devicetree/base/model says it’s a Raspberry Pi Model B Rev 2, which I think is generally referred to as a Raspberry Pi B. Probably too old to support your script and/or the Smartthings software? I’m not sure how to get the model number.

Try opening a terminal window and doing a “pinout” command. It should show you in the output. Sounds like maybe you have a model 2. If that’s the case I can give you a workaround and we can try it.