SimpliSafe DTH

I have tried so many times for SimpliSafe to respond to the need for official integration into other systems besides Google and Alexa. The only response I have ever received is thanking me for my suggestion.

When you think about the risk of integration from 3rd party sources there has to be a financial and legally accountably reason for them not to enable this on par of why the automakers don't give you access to the control systems of your car.

What type of attack surface does 3rd party integration open up? Imagine walking up to the front door and screaming "Alexa turn off my Alarm" and then breaking in with the alarm being disabled. These are some of risk scenarios I think they are trying to prevent. The official Alexa integration prevents this action but using a Hubitat or other system you could inadvertently open yourself up for unintended risks.

I hate telling folks that they can't use their ABC products with product XYZ but currently many systems are still walled off from open platforms.

No resolution to this issue as of yet. :frowning:

I have contacted them multiple times about getting API access, even setting up a "read only" method (yes, it cuts the usefulness a LOT but it alleviates the concerns at the same time).

Their only response? Adding me to their daily "spam" email list. No response at ALL to the actual requests. The only saving grace is that their "unsubscribe" link does seem to legitimate so once I did that I did not get further spam from them.

I have not given up hope on trying to work this... but I will admit it has been put on a lower priority than some other things that are producing results. There are so many ways you can format HTTPGet/Post requests to their API and none of the methods described out there at this point seem to work...

1 Like

I'm one of the co-authors of the SmartThings SimpliSafe integration. My setup is still working properly and not reporting any errors (I'm still leveraging SmartThings for cloud based connectivity). There is another integration (not mine) that leverages the new API and push events that doesn't require polling. It unfortunately is for Homebridge, but some work could be done to port it to Hubitat.

And another for Home Assistant

Ok, I will have to take a look.

One definite problem I run into with looking at the other integrations (I have seen bachya's before) is that I am not a developer by trade, and python is not something I am familiar with. So while I can understand portions I often get confused or such.

Plus, to be honest, I really do not WANT to learn a bunch of new languages... just learning Groovy, ZigBee, and Z-Wave elements is proving enough for me at this time (nevermind the various APIs I am working with).

@snell I am right there with you. I work tech-adjacent but I donā€™t write code and Iā€™m not trying to learn anytime soon. I play around with Java and SQL, but 100% stealing and modifying, no actual code written by me.

I am in the territory of ā€œthis thing I tried to do to make my life simpler is now adding more complexity and is a major resource drain so why again am I doing this?ā€ territory, but I am suffering sunk cost angst.

I canā€™t figure out if Iā€™m ready to learn all the tech and start building my own stuff, or throw it all in the garbage and just go back to the way it was. :-/

I've made some changes to the Device Handler to try and support the MFA authentication changes. It's still very rough and could use some better error handling / cleanup, but it's here if anyone would like to test it:

Donations for beer gladly accepted: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=5C9KVK6LLLZRC

1 Like

I downloaded the new driver and when I try and login it generates a MFA token, what do I do with that?

Update: So I verified via email and now the error goes away but none of the buttons seem to work, this is the error log after pressing each button:

dev:20582020-11-10 05:05:11.433 pm infoExecuting polling...
dev:20582020-11-10 05:05:11.039 pm infoRefreshing SimpliSafe state...
dev:20582020-11-10 05:05:07.832 pm errorgroovy.lang.MissingMethodException: No signature of method: user_driver_tobycth3_SimpliSafe_1348.strobe() is applicable for argument types: () values: []
Possible solutions: home(), asType(java.lang.Class), hashCode(), run(), getTime(), poll() (strobe)
dev:20582020-11-10 05:05:04.611 pm errorgroovy.lang.MissingMethodException: No signature of method: user_driver_tobycth3_SimpliSafe_1348.siren() is applicable for argument types: () values: []
Possible solutions: run(), run(), grep(), sleep(long), grep(java.lang.Object), run(java.io.File, [Ljava.lang.String;) (siren)
dev:20582020-11-10 05:05:01.692 pm infoExecuting polling...
dev:20582020-11-10 05:05:00.582 pm infoExecuting polling...
dev:20582020-11-10 05:04:54.456 pm errorgroovy.lang.MissingMethodException: No signature of method: user_driver_tobycth3_SimpliSafe_1348.off() is applicable for argument types: () values: []
Possible solutions: run(), home(), poll(), run(), any(), is(java.lang.Object) (off)
dev:20582020-11-10 05:04:51.294 pm debugAlarm SET to HOME Error: groovy.lang.MissingMethodException: No signature of method: user_driver_tobycth3_SimpliSafe_1348.httpPost() is applicable for argument types: (java.util.LinkedHashMap) values: [[uri:https://api.simplisafe.com/v1/ss3/subscriptions/.../state/home, ...]]
dev:20582020-11-10 05:04:50.920 pm infoSetting SimpliSafe mode to 'Home'
dev:20582020-11-10 05:04:50.821 pm infoExecuting polling...
dev:20582020-11-10 05:04:44.068 pm errorgroovy.lang.MissingMethodException: No signature of method: user_driver_tobycth3_SimpliSafe_1348.both() is applicable for argument types: () values: []
Possible solutions: with(groovy.lang.Closure), home(), poll(), each(groovy.lang.Closure), notify(), wait() (both)
dev:20582020-11-10 05:04:40.446 pm debugAlarm SET to AWAY Error: groovy.lang.MissingMethodException: No signature of method: user_driver_tobycth3_SimpliSafe_1348.httpPost() is applicable for argument types: (java.util.LinkedHashMap) values: [[uri:https://api.simplisafe.com/v1/ss3/subscriptions/.../state/away, ...]]
dev:20582020-11-10 05:04:40.093 pm infoSetting SimpliSafe mode to 'Away'

I think I found the issue, I used the old code for the setState function and it now works, the response part was missing in the new code:

def setState (alState){
	//Check Auth first
	checkAuth()
    def timeout = false;
    
    if (alState == "off")
    {
    	try {
        	httpPost([ uri: getAPIUrl("alarmOff"), headers: state.auth.respAuthHeader, contentType: "application/json; charset=utf-8" ]){response ->}
        } catch (e) {
        	timeout = true;
        	log.debug "Alarm SET to OFF Error: $e"
        }
    }
    else if (alState == "home")
    {
    	try {
        	httpPost([ uri: getAPIUrl("alarmHome"), headers: state.auth.respAuthHeader, contentType: "application/json; charset=utf-8" ]){response ->}
        } catch (e) {
        	timeout = true;
        	log.debug "Alarm SET to HOME Error: $e"
        }
    }
    else if (alState == "away")
    {
    	try {
        	httpPost([ uri: getAPIUrl("alarmAway"), headers: state.auth.respAuthHeader, contentType: "application/json; charset=utf-8" ]){response ->}
        } catch (e) {
        	timeout = true;
        	log.debug "Alarm SET to AWAY Error: $e"
        }
    }
    else
    {
        log.info "Invalid state requested."
    }
    
    //If not a timeout, we can poll immediately, otherwise wait 10 seconds
    if (!timeout) {
    	poll()
    } else {
    	//There was a timeout, so we can't poll right away. Wait 10 seconds and try polling.
    	runIn(10, poll)
    }
}

I've uploaded a new version to Github which should fix the button issue. Sorry about that!

2 Likes

Make it a good beer. Well earned sir. Thank you, now about getting SS3 to push notifications to Hubitat like it does the native app. That would be worth more beer for sure

That's the plan!

New version published to GitHub

  • Improvements to MFA login and Polling

All future posts, updates and support will be handled on this thread:

Toby, if I may request a feature beyond the ability to monitor sensors through push notifications, it would be access to the ā€œpanicā€ feature. Again, it is an enhancement worthy a very good IPA

Hope you and your family have a happy, and reflective Thanksgiving

Ed

1 Like

Reading through a few threads, thank you for your contributions, very helpful.

I just can't fully determine if I can use the simplisafe keypad in HE in silo, without the SimpliSafe hub?
Others have also mentioned using two sensors on doors, I am hoping to use Phillip Hue motion sensors with an Aeotec siren, and am hoping HSE is agnostic in this way.
Can someone kindly advise if I am going in the wrong direction here?
Either looking at the Ring Keypad, or the Simplisafe - I have seen the Ring keypad IS compatible but the Simplisafe one is sexier (as much as technological inanimate objects can be)...

Thank you for this device handler. Im trying to determine if there is a way to see individual sensors (such as contacts). I noticed that when I sync'd this device with HomeBridge it did see some sensors (only 1 of each type) and they were oddly all in triggered (wet, open, motion) status when they arent

really appreciate this work @toby

An alternative solution might be using this HB plugin:

and Node-RED with these "node-red-contrib-homebridge-automation" and "node-red-contrib-hubitat" nodes.

The idea would be to either use NR for your rules (like I do) or as an intermediary between HB & HE.. either way might give you some additional flexibility.

I am doing this for my Ring doorbell...

The "Front Door" box is an HB device - my Ring Doorbell "Button" and the "Living Room Door Chime" box is an old Aeotec Siren on my HE. The middle box just prevents the doorbell from ringing off hours.

1 Like

@erktrek Thanks! I had also looked at the HB/Simplisafe Bridge. It actually does what I'd like minus that I dont want to be able arm/disarm simplisafe from this. I tried to. do the serial exclude, but it still appears.

NodeRed keeps appearing for ideas of things I want to do. Its just starting to feel overly cobbled together and a lot of moving parts .. but I might need to get there

I hear you! KISS principal is usually best...

I prefer NR because it simplifies and centralizes a lot of things. Also reduces overhead on my 3 HE production hubs. There are a lot of members here on these forums who use NR.

You already have HB running and if it's not in docker you could easily install NR as well..

Also there are other possibilities including Home Assistant and MQTT.. but they require a certain level of technical commitment.

Homebridge is in docker ... I will poke at NR .... its seeming, inevitable :wink:

1 Like