Announcing the "ST_Anything" Arduino/ThingShield Project

I would love it if it lost the Zigbee chip. Throw in some Xbee headers and make an arduino shield. That way you could do Zigbee/Zwave/BLE/whatever.

I could probably knock something together pretty easily. The only issue is firmware. If i had one working copy of the original ThingShield i could pull out working firmware from there, that would make it pretty trivial. Unfortunately there are none available even on eBay, and i haven’t found a binary blob of firmware image either.

I am very late to the game, but loving ST Anything, thank you to everyone who’s contributed. I am stuck on a thermostat project and hoping someone can explain the zigbee.SmartShield command to me. I have two different states, and the command works for one but not the other. It makes no sense to me, so I assume I am missing something about how it works. The shield receives the “idle” text but never receives the “heating” text, though the rest of that section executes (event fires and debug output is correct). I read in another post that even the spacing can throw it off, so I’ve tried countless variations, including only the zigbee.SmartShield command. Thanks in advance, I imagine this is small potatoes to you folks! Here’s the snippet in question:

def evaluate(temp, heatingSetpoint) {
log.debug "evaluate: $temp, $heatingSetpoint"
def threshold = 1.0
def current = device.currentValue(“thermostatOperatingState”)
def mode = device.currentValue(“thermostatMode”)

def heating = false
def idle = false
if (mode == “heat”) {
if (heatingSetpoint - temp >= threshold) {
heating = true
sendEvent(name: “thermostatOperatingState”, value: “heating”)
log.debug "heating state"
zigbee.smartShield(text: “heating”).format()
else if (temp - heatingSetpoint >= threshold) {
idle = true
log.debug "idle state"
zigbee.smartShield(text: “idle”).format()

Try commenting out the “SendEvent(…)” function call as a test. I have seen where only some lines will be executed if you try to do too many things at once. I don’t know why nor how to fix it, but at least it might help you troubleshoot.

Thanks Dan, for the suggestion and the project! I’ve been trying for days, but I haven’t been able to get it to execute no matter what’s in the argument, including just the zigbee line. I guess I’ll have to come up with a different way to send it.

Wow. Glad all the people are okay.

At least you don’t have to worry aobut getting hit again, right? :fearful:

1 Like

As a tech geek, I would like to think I have a least heard of most types of tech. But I will say, I am intrigued about what you lost here. Only for my curiosity, would you be willing to elaborate on what you lost here?

Basically, it is a push-button and controller for activating a garbage disposal. What makes it unique is the fact the button is surface mounted into your counter-top, and connected via a fiber optic cable to the remote electronics. This ensures that you cannot be shocked when you press the button to start/stop the garbage disposal. My kitchen is such that I cannot install a traditional light switch in the wall, and thus this was the best solution for us.


Found these at

Can these items serve as alternative?

Can’t believe no alternative is available prior to discontinued device :confused:

Hmmm, maybe a Raspberry Pi alternative. This looks to be a controller, but maybe a client role is possible.


Anyone disgruntled enough to want to sell their shields?


Let your voice be heard!

My application for the ThingShield is just to turn off and off my swimming pool spa (take ~30 mins to warmup). So, I just need super basic communication between the Arduino and the Smartthings hub. To work around the availability issue with the ThingShield, I’ve resorted to using an Z-wave outlet and plugging in a USB power adapter into it to get it down from 120V AC to 5V DC. The Arduino just uses a digital input to measure whether the AC outlet is on or off. The Arduino sends commands to the pool controller over RS485 to turn on the spa on or off whenever the AC outlet (controlled by smartthings hub) is on or off.

So, basically, I can send one bit of information from the ST hub to the Arduino and no return communication. Limited but it does what I want for now. However, I can imagine wanting the Arduino to perform more complex interactions with the pool controller and I’d need sonething like the ThingShield to handle that.


Nice work-around!

If you’d prefer a smaller, lower cost, more flexible alternative, check out one of my other hacks for using an Arduino with SmartThings via the inner-workings of a Cree Smart Lightbulb… It is also a one-way only solution, so make sure your Arduino code has some built-in logic to handle the scenario where communications is lost some how (e.g. a built-in auto-off safety timer if the Arduino hasn’t received a “watchdog signal” for a long time from the ST Cloud/Hub.) The advantage of this solution is that you can trigger multiple actions by adjusting the “dim level” from 0 through 99. Thus, you could create up to 100 different “scenes” for the Arduino to interpret and take action.


I have seen you mention ESP8266 a few times and was wondering if you have looked further into it as it seems like a great candidate for the Arduino/ThingShield replacement? I replaced my RaspberryPI project with your ST Anything-Arduino to control my Garage Doors, and it works great. (I also use IFTT and Core to send me notifications when it’s left open under various conditions.)
Overall, the ESP8266 ESP-12E WIFI Development Board at around $10 seems like the best replacement. I have tried and just haven’t seen a good integration with RaspberryPI/BeagleboneBlack/etc. Even if ST wasn’t getting ride of the ThingShield, the ESP8266 may be a good option as the Aurduino/ThingShield gets a little pricey (ThingShield + Arduino) for smaller projects. At less than $10; with built-in Wifi; runs on micro-USB or a 3.3V power supply; and at least 10 open GPIO’s; this seems like it would work really good for many projects. Most of my projects are smaller than this and the ThingShield is overkill. There is also a small ESP that has just a few GPIO’s that can run fair off a battery (Wifi does drain it a little).
Thanks again, Garnet.

Yes, I have looked extensively at the NodeMCU ESP8266-12E based boards as a ThingShield replacement. I think I have an easy method to integrate it into the ST_Anything ecosystem while maintaining backwards compatibility. It is going to take me a little while to work on this and get it testing. Keep an eye on this discussion for future updates.

Right now, my hope is for the exact same functionality as the ThingShield provides - simply moving ASCII strings between the micro-controller and the ST Cloud via the ST HUB using Ethernet/WiFi. This would allow almost everything else to remain the same.

1 Like

That sounds great as I’ve been using ST_Anything for almost 2 years! (Mar '15) After using many other platforms/devices the ESP8266, seems the most promising. I know your ST_Anything would make my “Alexa turn on Home Theater” project much easier…and cheaper (less than $10 for ESP, IR reader, and IR LED).
Thanks again and I will keep watch.

Could the same logic allow a regular arduino with an Ethernet port to talk to ST without a thingshield?

Yes, that’s the idea. Trying to make the changes essentially transparent to existing users. That the advantage of the library design…it abstracts the heavy lifting from the end-user’s application specific code.

1 Like

Abandonedware suckST :rocket: