[OBSOLETE] Integration with HoneyWell TotalConnect Alarm & Monitoring System

You could check tho… If you have a TotalConnect 2.0 interface, try this:

  1. Go to: https://rs.alarmnet.com/TC21API/TC2.asmx?op=AuthenticateUserLogin1

  2. Enter your userName, password, ApplicationID 14588, and ApplicationVersion 3.0.32

  3. Hit Invoke. It will open a new window. You need the data inside the brackets. Copy it to a txt file.

  4. Then go to: https://rs.alarmnet.com/TC21API/TC2.asmx?op=GetSessionDetails1

  5. Use the SessionID you copied and the same ApplicationID 14588, and ApplicationVersion 3.0.32.

  6. Hit Invoke. Copy the LocationID from that.

  7. Go to: https://rs.alarmnet.com/TC21API/TC2.asmx?op=GetPanelMetaDataAndFullStatusEx_V1

  8. Use your SessionID, LocationID, and LastSequenceNumber: 0, LastUpdatedTimestampTicks: 0, and PartitionID: 1

See if your sensors are listed there…

1 Like

jhstroebel
Much much thanks.

I updated the Smart app from your new code and all three fields are now populated with correct values.

The only buggy part (most likely caused By android or ST ) is that i had to manually enter them in even though you populated them.
I was able to pass this by going tot the ST IDE and seeing what it was hung up on and on this case it was the “LocationID” the error was “LocationID not yet defined”

Keep up the amazing work… Lastly on the “Arm stay instant” vs “arm stay” i too have the Night mode.
Your delay tile works nicely.I selected instant and arm stay and Night mode was enable on mine.
Again Muchas Gracias

Interesting… may be an android thing. Its supposed to refresh the page when you select a location, which in turn sets the default values of what those are supposed to be. On iOS it will let you submit then with those default values without touching them.

I successfully installed the app and all of the device handlers. The alarm functions all work properly. My sensors all show up and I specified which ones were motion and which were contacts. I turned the polling on and set all polling timers to 1 minute. All of my contact sensors are displaying “faulted” when I know they are not. Any ideas?

Post withdrawn

Here is a picture of the IDE log

Just wanted to follow up because I’ve been away a few days. Just updated to your new code and, similar to others experience, I was then able to successfully set this up! Thanks very much!

Glad to hear it! Had to make a lot of assumptions based on the data I got back for only my panel, just took some information from other panels to figure out the patterns!

1 Like

Can you give me more log before this? This is indicating by the time it gets to updating the status of the zone sensor, there is no data pulled from TC to update from. The Map that should contain all the statuses is null or was never initialized. Possibly the call for the zone data failed?

I get these occasionally, normally following an error such as “error Timeout Error: java.net.SocketTimeoutException: Read timed out” Which means TC didn’t respond in time meaning we have no data to update from. Normally it will try again on the next window and eventually pick back up.

You might also try manually refreshing the contact sensor and see if that works.

Here you go - I cleared the logs, pressed “refresh” on device, and this is what shows in logs

Ok, that makes sense. The call to get status fails… but I have never seen the -30000 result code, and the lack of result data doesn’t give us much to go on… I’m trying every way to put in bad data into that command and cannot get that result. I’ll keep looking for information on that. In the meantime, can you try manually pulling the data from the API?

  1. Go to: https://rs.alarmnet.com/TC21API/TC2.asmx?op=AuthenticateUserLogin11

  2. Enter your userName, password, ApplicationID 14588, and ApplicationVersion 3.0.32

  3. Hit Invoke. It will open a new window. You need the SessionID data inside the brackets. Copy it to a txt file.

  4. Then go to: https://rs.alarmnet.com/TC21API/TC2.asmx?op=GetSessionDetails1

  5. Use the SessionID you copied and the same ApplicationID 14588, and ApplicationVersion 3.0.32.

  6. Hit Invoke. Copy the LocationID from that.

  7. Go to: https://rs.alarmnet.com/TC21API/TC2.asmx?op=GetZonesListInStateEx

  8. Use your SessionID, LocationID, and PartitionID: 0 (or 1), and ListIdentifierID: 0

See if it gives you the same -30000 error and if there is any more information…

I sent you the XML in private messge - the message is “We are unable to connect to the security panel. Please try again later or contact support” But that seems odd as the Armed/Stay. Armed/Away and Disarm commands are all working. Is there a place in the Device Handlers that I need to check to see if they have all of the correct LocationID’s set? Or are those variables all set in one place? Just wondering if the DH’s did not inherit all of the proper LocationID’s and credentials somehow if they even store them?

One more thing it could be - I have two Locations in my IDE. Is it possible that the DTH for the contact switches is trying to access the wrong SmartThings hub?

They all call back to the service handler to update. It holds all those values and pushes updates back into the DHs. I doubt the multiple locations matter, I think SmartThings takes care of that plus we don’t really care about the location, just that the SmartApp and Child Devices can communicate, but I would doubt SmartThings would let you create child devices from a SmartApp that are across locations.

I’ll respond to your message.

Hello jhsroebel,
A s Usual much thanks for working on this App.
I came across an error when setting the poll interval to 5 minutes or greater, in the logs i see this error below.
If you get a chance and/or if you feel up to it, could you help me out on this?

The smart app will poll at 1 minute and not error out just the longer time intervals error out.
Much thanks

EDIT: For the below issue simply following the Possible solutions as stated by ST worked.
Changed the word Minute to Minutes for intervals 5 and 10 minutes.

7:33:28 AM: error groovy.lang.MissingMethodException: No signature of method: script1498911902422114174522.runEvery5Minute() is applicable for argument types: (java.lang.String) values: [panelAutoUpdater]
Possible solutions: runEvery1Minute(java.lang.Object), runEvery5Minutes(java.lang.Object), runEvery15Minutes(java.lang.Object), runEvery1Minute(java.lang.Object, java.lang.Object), runEvery5Minutes(java.lang.Object, java.lang.Object), runEvery10Minutes(java.lang.Object) @ line 576"

Missed this. Sorry! Updated and republished with that change. Thanks!

FYI: There is a new version up on GitHub. Biggest change being all the polling methods have moved to Asynchronous HTTP methods which helps to prevent timeout on those calls. Its a pretty big change and one that will probably get implemented in some of the control calls as well in the coming days.

Jhstroebel,
Much thanks for the update.

I have a few questions if i may on this Smart app.

  1. Is the password for TC 2.0 sent in clear unyncrypted/unmasked text to TC2.0?
    I looked at the logs for the app this morning and the password was visible…Just curious on how its sending it.

  2. If this has been asked and answered before sorry…
    Your app finds my two locks connected to the Automation portion of the Alarm system.
    Is there a way to interact with them from with in your app or maybe have them show up as things like the when you choose the sensors?

Password is sent in clear text. There appears to be an encrypted option but I don’t know how that is expecting it to be encrypted or with what key… the problem of non-official APIs. Ill see if I can find anything. I don’t think any of the other implementations in here used it either

Locks are coming. Are they z-wave locks? If so I’d pair them through z-wave (even after I get this done), but as an exercise I’m looking to flesh that out in here as well. Part of the code is in the service handler but it’s not implemented yet.