Announcing the "ST_Anything" Arduino/ThingShield Project

FYI, you may find much more up to date information in my newer ST_Anything thread at

Within each .cpp/.h file inside the various …Arduino\libraries\ST_Anything… folders, you will find detailed comments/documentation for the use of each of these C++ classes/objects. For example, from the top of PS_DS18B20_Temperature.cpp file, you will find the following which details the usage of this class.

//			  For Example:  st::PS_DS18B20_Temperature sensor1(F("temperature1"), 120, 0, PIN_TEMPERATURE, false); (for a single sensor)
//                          st::PS_DS18B20_Temperature sensor1(F("temperature"), 120, 0, PIN_TEMPERATURE, false, 10, 3); (for 3 sensors)
//			  st::PS_DS18B20_Temperature() constructor requires the following arguments
//				- String &name - REQUIRED - the name of the object - either "temperature1" for a single sensor, or "temperature" for multiple sensors
//				- long interval - REQUIRED - the polling interval in seconds
//				- long offset - REQUIRED - the polling interval offset in seconds - used to prevent all polling sensors from executing at the same time
//				- byte pin - REQUIRED - the Arduino Pin to be used for the One-Wire DS18B20 sensor conenction
//				- bool In_C - OPTIONAL - true = Report Celsius, false = Report Farenheit (Farentheit is the default)
//				- byte resolution - OPTIONAL - DS18B20 sensor resolution in bits.  9, 10, 11, or 12.  Defaults to 10 for decent accuracy and performance
//				- byte num_sensors - OPTIONAL - number of OneWire DS18B20 sensors attached to OneWire bus - Defaults to 1

If you simply wanted the voltage/value from the sensor, I would recommend that you simply use the ST_Anything’s PS_Voltage voltage device. You could use this in addition to the PS_Water device. Both could read data from the same analog pin.

Running multiple copies is very simple… Just manually add another new ST_Anything Parent Device via the ST Web IDE. Then, in your phone’s app you will see the second parent, which will require you to configure the MAC address, TCP/IP address, and port like you did for the first one. Just use the unique MAC and TCP/IP address from the second ESP8266.

Samsung/SmartThings future plans are very unclear. I have no idea if any of this will work with the new app in the future. I have ported all of ST_Anything to run on Hubitat. In fact, I have moved about 99% of my devices over to Hubitat. I prefer local processing. So, at least you’ll have that platform as an option should ST decide to further alienate the DIY/Maker community.

One more tip - The Arduino MEGA ST_Anything examples demonstrate a vast number of example devices from ST_Anything. You will still start with an ESP8266 example, but can copy and paste the device definitions from the MEGA’s sketch into the ESP8266 sketch. At least it helps demonstrate the usage of these various devices.

And, as always… I’d love for someone to step up and help improve the documentation! :wink:

1 Like

Thanks so much for pointing out the things I obviously missed!!!

I have been a bit pressed for time and admittedly didn’t read as close as I should have.

Thanks again.


1 Like

I just came across this thread. BTW, the link to appnote is no good.

Are you saying you can connect 10k resistor from I/O pin to ground and connect I/O pin directly to alarm system pin and the alarm system will still work while letting Mega2560 sense whether alarm pin is on or off?

Does I/O pin pull-up resistor need to be enabled in your solution as source of current?

Are you assuming alarm circuit is simple normally open or normally closed switch in parallel with 10k resistor?

And this avoids need for voltage divider and transistor?


I am reading this thread two years after the post. Is this kewashi’s transistor circuit still the simplest and recommended way to connect an existing wired alarm system’s sensors to SmartThings while letting the existing alarm system continue to work normally?

This thread is really long and I’m wondering whether anyone has posted a simpler solution which allows the existing alarm system to work while still being able to connect the wired sensors to SmartThings.

At this point, I would probably recommend using optocouplers to keep the two circuits optically isolated from each other. A simple voltage divider to feed the led side of the optocoupler to step the voltage down to something within spec, and then the output to the micro controller.

The old link is no good. Here’s a new link:

I agree - the method I used referenced above wasn’t robust so I abandoned it. It turns out the alarm circuit was slightly altered and it messed things up. ST worked but my alarm had some signals shifted. Fortunately it wasn’t permanent damage so disconnecting returned my alarm to normal. I will try the optocoupler next. That should keep things truly separate.

Thanks for advice! Optocouplers it is!

My current wired alarm system has 14 wired sensors which I want to connect using optocouplers to Arduino and SmartThings.

Is the HiLetgo New Version ESP8266 NodeMCU LUA CP2102 ESP-12E Internet WIFI Development Board still recommended or is there something better?

14 sensors is far more than a single NodeMCU ESP8266 can handle. If you choose the NodeMCU ESP8266, you will probably need three of them.

If you have the ability to run Cat5 Ethernet to your Alarm Panel, you might want to use an Arduino MEGA 2560 + W5100 Ethernet shield. This will allow you to connect everything to s single board.

The third option is that you could use a NodeMCU ESP32 based board. The ESP32 has a lot more I/O pins than the ESP8266. I believe you could almost get everything connected to one ESP32, but maybe not quite. Also, the ESP32 is newer and less mature than the options above, so proceed with caution.

At least these are all very inexpensive options, so it’s not like you’d be out a ton of money if you had to change.

It is probably best to post new questions regarding ST_Anything in the more active and current thread at

Finally, have you looked at Konnected? Konnected is a purpose-built alarm panel integration for SmartThings. Not sure if they have their version ready to allow you to leave the current panel in operation though. I know they were working on a solution. If you haven’t taken a look at Konnected yet, it may be worth your while.


Thanks for your suggestions! I could run cat5 to my alarm if needed. I’d like to avoid using three ESP8266s to save space in the alarm panel box. I’m hoping to mount everything to the inside of the door.

Is this the NodeMCU ESP32 you are referring to?

After this thread, I will move future questions to current thread.

I was happy to see Konnected thread until I realized it did not support leaving current panel operational. I’ll look at Konncted thread and see what they are up to.

I am awed by the level of support you provide to your ST_Anything releases!

I use this Logic Level Converter on my DCS panel to read the key pad bus, it’s been working fine for a couple of years. it has no problem converting 12V logic to 3.3V logic. You can find these even cheaper on Ebay.

1 Like

Yes, that’s the same ESP32 module that i have done my testing with.

One way to reduce your 14 zones down to a smaller number is to combine some of them in series. You won’t know exactly which device caused the circuit to be open, but often that’s not important.

Never used one of these, but it might help with your problem.

1 Like

I’m kind of lost because it simply tells me that there’s no wifi shield.

Using :ST_Anything_Multiples_MEGAWiFiEsp.ino
with ESP01 tx to arduino’s rx1 and rx to arduino’s tx1

There’s nothing to write into the ESP01 for it to accept communication with mega2560?

Thank you in advance?

You’re going down a fairly challenging hardware path. One which I have never heard of anyone getting to work reliably.

ESP-01’s usually come flashed with what is known as “AT Firmware”. If your ESP-01 has been flashed with any other firmware, it will not work as a WiFi shield for an Arduino.

As for wiring it up, I don’t recall off the top of my head how it’s wired. But I do know that my code does NOT use pins 0 and 1 on the Arduino MEGA as those are used for the USB serial communications with the PC you program the board with. I am fairly certain I used the Arduino MEGA’s HW Serial1 pins.

From my ReadMe
* Note: If using an ESP-01 for WiFi-connecticity (i.e. as a WiFi dongle/shield) with an Arduino, the example assumes you're using an Arduino MEGA 2560. Attach the ESP-01 to Hardware Serial "Serial1" and make sure your ESP01 has current 'AT Firmware' installed.

Thank you for your answer. I had eventually found this answer in the readme file, don’t know how I missed it in the first place…

*** SOLVED****
I’m a knuckle head, I had a Zero in place of an “O” in my SSID…

Can someone help with connecting . in the Monitor it continues to say “Attempting to Connect …” I assume my IP info is wacked and I have tried everything.

IPAddress ip (192, 168, 0, xxx); //Device IP Address // <—You must edit this line!
IPAddress gateway (76, 24, xxx, xx); //Router gateway // <—You must edit this line!
IPAddress subnet (255, 255, 255, 0); //LAN subnet mask // <—You must edit this line!
IPAddress dnsserver (75, 75, 75, xx); //DNS server // <—You must edit this line!

here is a photo:

Your gateway and dns server addresses should both be the LAN address of your router, usually

1 Like

Thank Dan!

1 Like