[DEPRECATED] ST_Anything - Arduino/ESP8266/ESP32

UPDATE 2022-08-17 - Per this recent SmartThings announcement, the Groovy IDE will disabled on September 30, 2022. My best guess is that any existing ST_Anything devices will probably cease to operate at this time, or shortly thereafter. It has been a good 7+ year run for ST_Anything users. I want to thank you all for making ST_Anything a successful project! My son and I really had a lot of fun creating it together, and have enjoyed hearing how you have all used it in so many creative ways.

As many of you probably already know, I have moved on from ST and have ported ST_Anything over to Hubitat as “HubDuino”. If you have devices running ST_Anything that you ‘can’t live without,’ at least you know you have options. Another option for ESP8266/ESP32 users would be to use ESPHome along with Home Assistant.


UPDATE 2020-09-28 - All - I have made changes to almost every ST_Anything DTH to try and make them all work properly with the New SmartThings Mobile App. For the most part, I believe things are working pretty well. @vseven had already made some changes a few years back, which was a nice start - THANK YOU! I had to piece together bits and pieces from a variety of sources to try and get things to look correct and display the correct values in the New ST App. In the process, I also did clean up some custom attributes which will not properly display in the New ST App, including @vseven’s old ‘lastUpdated’ custom attribute. Since it can no longer be displayed in the New ST App, I did not see any reason to keep it. I did leave the code for it commented out in every Child DTH, so feel free to uncomment those lines if you need that attribute for anything. Just remember that in two weeks the Classic ST App will be gone for good. :wink:

I really hope this helps the ST_Anything users!

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.

[v2.9.9] This is a minor release to improve support for the latest ESP8266 and ESP32 Arduino IDE Board Support Packages.
[v2.9.7] Minor changes to IS_Button device
[ v2.9.6] Added support for Arduino NANO 33 IoT (thanks @Corey_Spears1!)
[ v2.9.5] Added support for MKR1010, Arduino 1.8.9, ESP8266 v2.5.2, updated numerous libraries, etc…
[ v2.9.4] Added support for the SHT31 (temp, humid) I2C sensor
[ v2.9.3] Significant enhancements to the EX_Servo class and Child Device Handler - Thanks Jeff Albers! ALso, an attempt to prevent duplicate child devices from being created.
[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 MKR1000
  • 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.

New ST_Anything v2.5+ Architecture Flow Chart

Please see the ST_Anything v2.9.1 ReadMe below for more details, as well as the new ReadMe I created for the new v2.x SmartThings library.

ST_Anything Library

37 Likes

Awesome…can’t wait to test it out!

1 Like

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.

   standardTile("contact1", "device.contact1", width: 1, height: 1, canChangeIcon: true, canChangeBackground: true) {
		state("open", label:'CS1 ${name}', icon:"st.contact.contact.open", backgroundColor:"#ffa81e")
		state("closed", label:'CS1 ${name}', icon:"st.contact.contact.closed", backgroundColor:"#79b821")
	}
1 Like

Oh, and as for the siren, yes you can connect a relay to the digital output pin you assign on the microcontroller. Attach that relay’s output to the Siren and you should be good to go!

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.

Will it be able to run both this and mysensors gateway on the same Arduino? In that way we could expand our systems both easy and cheap

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.

2 Likes

I have added support for using the inexpensive ESP-01 WiFi module in conjunction with an Arduino MEGA 2560 to the SmartThings v2.1 library.

I have also added a new example to ST_Anything that demonstrates the usage of this new hardware comnination. Please see the new ST_Anything_WiFiEsp.ino sketch.

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!

1 Like

Glad to hear it’s working for you. Please let me know if you have any suggestions for improvements.

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!

1 Like

Have you read the two ReadMe’s already in my Github Repository? They are linked in the first post. If not, that’s a good place to start. I detail the exact steps on what to copy where on your system.

Also, there are a multitude of guides already online on how to use the Arduino IDE, including the use of libraries.

Note: Use the “Manual Installation” instructions
https://www.arduino.cc/en/Guide/Libraries

And for using an ESP8266 with the Arduino IDE


or
https://learn.sparkfun.com/tutorials/esp8266-thing-hookup-guide/installing-the-esp8266-arduino-addon

4 Likes

Thanks Dan!

Has anyone found an appropriate Arduino breadboard shield to use with the ESP8266?
A full size breadboard won’t fly…

1 Like

I ordered a few of these for my NodeMCU boards and they work quite nicely.

2 Likes

Thanks - I ordered two. Adafruit also has an ESP8266 board. Ordered one of those.
At least these things are cheap enough to play with!

Hi @ogiewon,

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.
Regards,
Jack