ST_Anything allows you to integrate a custom Arduino or ESP8266 device with SmartThings by editing only 1 Arduino sketch file! No groovy programming skills are required! You simply decide what devices/sensors are attached to each pin of your Arduino, ESP8266, ESP32 and ST_Anything handles the rest for you! Numerous example sketches are included to help get you started.
[UPDATE v2.9.2] I have added I2C sensor support for the MAX44009(lux), TSL2561(lux), BH1750(lux), AM2320(temp and humid), BME280(temp, humid, pressure), BMP280(temp and pressure), and updates for the TCS34725(color lux). A new example sketch to demonstrate these is included as well.
[UPDATE v2.9.1] I have added Servo Motor support. I have redesigned some of the inner workings/architecture of the Parent and Child devices. I have updated all of the Parent and Child devices in Github. I have tested everything that I was able to, but there is always a chance that something was missed. There is no requirement that you upgrade your Device Handlers at this time. If you do, I just want you to be aware of the changes.
[UPDATE] Added ESP8266 Arduino OTA support. Update your SmartThingsESP8266WiFi library, compile your sketch, and load your ESP8266 via USB. Afterwards, you can update your ESP8266 Over The Air from the Arduino IDE. This is especially helpful for hard to reach devices.
I am happy to announce the release of ST_Anything v2.5, with added support for SmartThings new Composite Device Handlers (i.e. Parent / Child DHs)! No more messy/complicated SmartApps/Virtual Devices. In fact, you probably will never need to modify the groovy DH code for ST_Anything ever again!
V2.7 adds support for the Arduino W5500 shield and includes a new AlarmPanel ESP8266 example sketch. V2.71 adds support for the Arduino WiFi101/Adafruit ATWINC1500 shield, the Arduino MKR1000, and fixes the performance and reliability issues found earlier when using the Arduino MEGA + ESP01. V2.8 adds support for the ESP32 V2.9 adds ESP8266 Arduino OTA support plus much more (see ReadMe for more details)
V2.x was created in response to SmartThings recent decision to stop selling and supporting the original ThingShield. This version has support for the following tested hardware configurations:
Arduino UNO R3 or MEGA 2560 + ThingShield
Arduino UNO R3 or MEGA 2560 + W5100 wired Ethernet Shield
Arduino UNO R3 or MEGA 2560 + W5500 wired Ethernet Shield
Arduino MEGA 2560 + ESP-01 WiFi module (using “AT” firmware and WiFiEsp library - not very reliable!)
NodeMCU v1.0 ESP8266-12e WiFi (no Arduino needed!)
ESP8266-01 (ESP-01) WiFi (no Arduino needed!)
ESP32 board WiFi (no Arduino needed!)
Arduino MEGA 2560 + WiFi101 shield
As always, feedback is welcome. If any of you try to implement this, please feel free to improve the ReadMe files via a GitHub pull request. I welcome the assistance! I will continue to update this post/thread as I receive feedback from the community.
I’ve got it up and running on my old security system. With some modification I’ve got multiple doors and my motion sensor working perfectly. Is there a good way to label each door on the app? It’s not a big deal I just thought it’d be a nice touch.
Also, I see the siren portion of the code. Does this mean I can wire this to my existing alarm siren? Any documentation on how to do this?
You can add a label to each tile if desired in the Device Handler groovy code.
Here is an example (see code below.) Note the addition of the “CS1” text in the ‘label:’ fields below. You’ll have to play around with it a bit as the formatting of text is kind of hit or miss depending on whether you’re an Android or iOS user.
The second step after you get the Device Handler working is to create a Virtual Device for every Tile in the Arduino’s Device Handler. Then use the Multiplexer SmartApp (with mods as necessary for your specific use case) to glue the Virtual Devices to the individual tiles in the Arduino’s Device Handler. These virtual devices will then be used as individual devices, with unique names, for all of your other SmartApps to use.
I updated the ReadMe with some of these details near the bottom.
This is great to see! I plan to start using this when I get finished with my current project - controlling some RGBW led strings with ST. Hope your using the Arudino IDE to program the ESP8266, but I guess that I will see.
Thanks again - Been using the original ThingShield to control my Garage Doors since the beginning. Now my GD open automatically when I return home from work.
Yes, everything is done via the Arduino IDE. I built everything using v1.8.1.
I have been wanting to add some RGB Lighting Support as I have a 5m strip of NeoPixels laying around. Should be a simple matter of adding another ST_Anything device sub-class, possibly of the EX_Switch class. Should be fun! I am hoping the ESP8266 is compatible with the NeoPixels. I know an Arduino UNO/MINI/MEGA works with them.
While I have looked at MySensors in the past, I have not looked at trying to combine ST_Anything with MySensors. Seems like trying to squeeze two Master Controllers into the same Arduino. Sounds complicated to me, but maybe it would be simpler than I am thinking.
Thanks for the reply.
I believe that the ESP8266 can control the NeoPixels as it is a digital RGB that can be controlled by just 2 digital pins. (Info is located at: https://learn.adafruit.com/digital-led-strip where they use a Arduino.) I am controlling an Analog RGB, separate input for each color, using a SmartLife H801 controller which is ESP8266 based. (See [RELEASE] SmartLife (H801) RGBW LED Strip Wifi Controller & Bulb for reference.)
I wanted to buy a 1M RGBW but they are only available in digital, so I have been stuck. If you get NeoPixels working then this would add another option for the community, and of course fix my problem. Also, it would work out pretty well as the other project only works for Analog LED’s and your would work for the Digital ones.
First I gotta get my ESP working with your new Anything v2.
I just added support for running ST_Anything directly on the tiny ESP-01 module. The ESP-01 is normally used to add WiFi capabilities to an Arduino. However, it is quite capable all by itself. It only has 2 GPIO digital pins, but often this is all that is necessary.
New ESP-01 standalone example sketches can be found in my github repository at
WOW WOW WOW…and THANK YOU! This is beyond cool and worked like a charm on the first shot via your instrux and code. I loaded it onto an ESP826612E (NodeMCU V0.9 I have HUUUGE plans for using this goodness on all kinda ‘Things’. Once again, Thank you VERY MUCH and have a most wonderful weekend!
Any chance for more of a how-to writeup? Like This is how you add the library, this is how you add the sketch, etc.
I have two ESP8266’s on order and I want to get ready… Already have the Mega 2560.
Thanks for your work on this!
Never mind - I just found your writeup. Looks comprehensive even enough for me!
Complete noob here but I can see you’re a bit of a guru when in comes to ST anything. I’ve been getting my head around Smartthings a bit but when it comes to Arduino I know nothing. However, I’m a fast learner.
I’m working on a residential construction project so there is the potential for some paid consultation if you are interested.
There are 25 blinds in the house to be bought, these will more than likely be from China with 433Mhz multi channel remote controls (because they’re cheap). I’ve tested one with a Aeon micro motor controller and got it up and running on ST but we want to be able to control the blinds from the room without the use of the phone. Due to my limitations with coding etc I’m thinking of using the dry contacts on the motor controller to put an up down stop switch in each window. But by the time we buy 25 motor controllers and 25 switches that wont look out of place the cost is starting to add up.
What could you recommend for getting the up down and stop functions on ST so that we could use the original 433 remotes in each room? Bearing in mind my limitations and the fact that this is not my home and if something goes wrong the owner would need to get some sort of support.
I appreciate your help with this and I look forward to hearing from you.