New App: Integration with HoneyWell TotalConnect Alarm & Monitoring System

I have contact from Honeywell. Without saying so I believe we are being blocked on their end… I’m concerned the async method works because they have not blocked those (different) servers. This makes my recode a temporary fix…

I’m going to hold off posting for a few days. I may have another solution that might be allowed.

The other option is to proxy commands through your own network… That is outside of my current skill set, if someone else has something that could run on a Raspberry PI or similar hardware that could proxy TC2.0 commands, that would likely fly under the radar. The issue is that as we all use this, I may only generate 3 calls per minute, but someone else has 5 calls per minute, another 8, another 3 and it adds up to 1 or 2 IP addresses (from the SmartThings cloud) generating hundreds of calls per minute to their servers. This gets categorized as a misuse of their service and we get blocked.

I will take a look at my other option and come back to the group.

Oh Crap! That sucks and will be a huge loss for everyone.

I can understand their concerns and may have to respect that. This begs a question, can we get them to tell us which API calls are hammering their servers. For example, I don’t anticipate any arming/disarming/logging calls to cause that much load, but polling for panel metadata every often so, may well be.

Thanks for letting us know and contacting them @jhstroebel

I’m being told there is an official API that will do control commands for panel and automation, but no polling. I think there is a status command for panel, that based on their rate limits for the TC Comfort line may be able to be run on a ~5 min interval. This is what I am waiting for.

It definitely comes to the constant polling of the devices. I’ve gotten it down to 1 for security, 1 for zones, and 1 for automation for each refresh, but that’s still 3 per minute. The fix here is a way to receive updates from the panel when they happen… Its not there yet. There is a chance that will come in the future (will have to come from them), but yet to be seen.

Yeah. This is where we need tight collaboration from ST and Honeywell TC, mostly later. More of a pub-sub model or at least some type of queuing.

If this will fail, I may just go and embrace Home-Assistant (Still need to buy that ‘pie’) and write some code over there. I guess, I will have to start building one soon.

I have the PI, and use it for HomeKit, etc. Could easily run a small HTTP proxy.

I can’t reinforce enough that leveraging Honeywell directly is a lost cause. This is a much cleaner solution and has worked without issue: [RELEASE] Honeywell / Ademco Vista 20P Integration

The only issue you may run into is if your network at home goes down and you have cellular on your alarm; at that point, you fire up your TC2.0 app and arm/disarm.

Yes, you need an AD2USB or Envisalink, but the cost of those is worth the trouble of this not working reliably or failing to work when you’re expecting it to and relying on someone else to code up a fix.

3 Likes

I may have missed if this was posted before, but that sounds like a decent solution. @brianwilson – Assuming you are using this, how is this working for you?

It’s working flawless. And you get real-time information about your zones.

Brian

That will only work with the Vista panel, correct? So if we have a Lynx Touch panel, we’d be out of luck, right?

Thats my understanding. If you have a Vista panel, you should be doing it that way. For those of us that don’t… Lynx and Lyric users, this is the only option we have at the moment.

I’m a developer, but I’m not Groovy or Node proficient as everything I do is .Net based. I’ll take a stab at creating a version that runs locally on the Pi. No promises though :wink: maybe I can use .Net Core on the Pi, that might be fun.

This still doesn’t make sense to me, though. I am paying them money to have access to this relative simple service (which costs what, 10 dollars a month?) Surely the fact that these are authenticated sessions called by paying users at like 1 per minute isn’t an excessive use of a paid service. If they do revoke our access completely, I just don’t see the point in even having the service anymore as this is the only use case I have.

@jasonkhonlaw, all you would need to do from a device handler perspective is have some kind of computer that will proxy your commands locally. Your Pi would just have a server that accepts requests and forwards them to the proper endpoint, and then send the response stream back to the requestor. Once you have that, you could leverage the hubAction in SmartThings to make LAN requests directly.

I understand the current issues, but with the new code everything seems to be working, except when I open the SmartThings app, I constantly see the status stuck as “Arming”. Not sure how the updating is working, but if I open the Panel from the app and click the refresh button, everything syncs up. Is there something I can do to correct this?

To clarify… when I use the actual Arm, Disarm commands in the SmartThings app, it usually works. It will say Arming, then get the appropriate armed state about 5 seconds later. However, when I use either the “switch” or the “lock” to automate the action (Home, Away). it always get stuck in Arming.

List of Apps/DeviceHandlers for TotalConnect
We really need the 1st post to echo these below, but unfortunately its too old for me to edit, so here we go:

SmartApp based on modes/Smart Home Monitor Status

Mode based Code: https://github.com/mhatrey/TotalConnect/blob/master/ModesBased.groovy2 | Author: @mhatrey

I wrote this SmartApp for simple automation based modes/routines of SmartThings. This is a very minimalistic app and I prefer not to dwindle much besides this, but there’s lot more you can do using rest of the apps/device handlers written by folks in this thread. Functionality of the app -

SmartThings away mode = Arm Away
SmartThings night mode = Arm Stay
SmartThings I’m back, Good Morning mode = Disarm
With this latest version, I have implemented a way of automatically pulling LocationID & DeviceID, so all you need to enter are your user credentials.

Per request from @berg03191, I have added a SmartApp based on Smart Home Monitor Status

SHM based Code: https://github.com/mhatrey/TotalConnect/blob/master/SHMBased.groovy | Author: @mhatrey

DeviceHandler that act as Panel as well as Virtualized Lock/Switch

Code: https://github.com/Oendaril/TotalConnectAsync/blob/master/TCAsync.groovy5 | Author: @Oendaril

This device handler is written to as a SmartThings Device i.e. a virtualized Lock & Light and performs arming actions based on Lock ON/OFF & Switch ON/OFF. Notably

Switch On = Armed Stay
Lock On = Armed Away
Switch/Lock Off = Disarm
After installing the code as Device Handler1, you will need to create SmartThings Device, by clicking “New Device” at the top right and then filling up rest of information.

Be sure to select “Device Type” by pointing to the Device Handler (Scroll to the bottom, you will TotalConnect Device) created before. Give it a name of your choice and device ID (Anything unique, thats not matching your existing devices)

Once the device is created you will have to edit and fill in preferences that contain your login credentials for TotalConnect.

To find LocationID & DeviceID @Oendaril has written a crafty SmartApp that you can run in the simulator to fetch that. Install the following code as a SmartApp and get that - https://github.com/Oendaril/TotalConnectAsync/blob/master/TCTesterAsync.groovy1

So I did everything here and it will log in through the new user and password I set up in TC 2.0, however it does not actually arm. The Location and Device ID auto fetched according to the instructions and I put in the 6 digit codes. The version states that it is 3.1.24 and thats what I enter. Under the device however there is no smart app attached to it. When trying to arm it continues to arm but never does. I am relatively proficient in creating the handler and smart app as it does show in my IDE. What am I missing?

CGDaveMac, look at this post from Oendaril:

I had the same issue and changing this to 30 seconds in each location seems to have resolved it for me.

140539b8-b7fa-4aa1-b8fc-5c366b466d11 11:35:51 AM: error Command Type: [body:SessionID=2B469569-4724-4EC0-8059-EC02733BBBF2&LocationID=7*****&DeviceID=9*****&ArmType=1&UserCode=-1, callback:armStay, path:ArmSecuritySystem, retry:0, handler:refresh] failed with ResultCode: -4114 and ResultData: System User Code not available/invalid in Database

Which App you are using @Oendaril’s or mine? Either ways, I have never seen ResultCode : -4114 (may need some digging?) so likely we will need to add to our Switch case.

Were any of your Home zones (bypassed/open) during arming ?

Installed yours ( https://github.com/mhatrey/TotalConnect/blob/master/ModesBased.groovy2 ) and the handler as ( https://github.com/Oendaril/TotalConnectAsync/blob/master/TCAsync.groovy5)

No, mine does not need Device Handler. I’d say, just install one (Either mine or @Oendaril DH).

So when i created the device, there is no need to put the type (TotalConnectAsync) in that field? So delete the device handler in IDE?