Monday, May 2, 2016

Walking the Open Path

Not an Apology


The a couple of weeks ago I wrote a post bagging on SmartThings.  While I stand by what I wrote there, I want to clear up any misconceptions that I might have created.

I am a SmartThings fan.  It is as a fan that I feel compelled to point out issues when I see them in the hopes that I can remain a fan.  Stability issues and developer complaints are not fun and no one on any side of the community (corporate, developer, end-user) wants them.  On the other hand, these issues are the result of one of the core reasons that I am a fan of SmartThings: openness.

At Least, More Open


That is not to say that SmartThings is the most open smarthome platform on the market.  They are not.  That honor goes to systems like OpenHAB.  Unfortunately, getting a more truly open system comes with drawbacks.  Namely, configuration and upkeep.  Because it does more and works with more things, it also offers more configuration options, requires more initial setup time and results in a different set of stability issues.

SmartThings is trying to provide an open system that is still easily configurable for ninety percent of end users.  They do this by hiding many of the more advanced configuration options on their API page (you need a login and a hub to get anything out of this).  This splits the user base between (filthy) casuals and those that really want to dive in.

For example, the average person wants to plug in an smart plug, connect it to the hub and control it from their home as quickly as possible.  With SmartThings (and admittedly a little practice), this can be done in about five minutes.  Setting up a schedule for that plug takes a few minutes more.

For the more advanced user, SmartThings allows them to change how the connected devices respond in different ways through that API page.  The example that comes to mind for me is the relay controlling my garage door.  Normally, this FS20Z-1 Z-wave relay switches toggles on and off each time you hit its command button.  But a garage door only responds to the on command, not the off.  When you hit the button on your old garage door remote, it sends a pulse to the drive assembly, telling it to toggle its state, either from closed to open or from open to closed.  The remote button does not stay pressed until you want switch back.  So that relay needs to pulse instead of staying on.  It needs to switch on, telling the garage drive motor to switch states, then it needs to turn back off.  In the SmartThings API, you can do that.  You can edit the code that drives that relay and make it a momentary relay.  It isn't easy if you are the first to dive into the code, but you can do it.

Fortunately, for semi-filthy casuals like myself, I'm rarely the first person to encounter a problem and there is usually a comment thread to walk you through it all complete with GitHub code repositories and instructions that don't take too much effort to parse. Couple this with things like IFTTT, and there is very little that can't be controlled through SmartThings (if you are willing to work at it).

But... The Cloud


The downside to this two prong approach, coupled with the need for competitive pricing, is that much of the processing needs to be done outside the end user's home on SmartThings' servers.  This is were the recent problems have arisen, not on the hubs in people's homes, but in the servers that communicate with the hubs.  SmartThings was using one kind of database to control all of this, the kind that they had developed on from the beginning because it was the best available then.  Now, they have outgrown it an need to switch.  I don't pretend to know the pros and cons of different database systems, but I do know that data migration from one to the other is a massive pain in the ass for everyone involved.

And this isn't even a security issue on their end, just disruption caused by the ongoing march of technology.  It is also the only way that they can provide what they provide with a $99 hub.  For more money, they could cram more memory and more processing into the hub.  Then all of the rules are kept locally.  There is a smaller database because it is the database for that hub, not the entire SmartThings user base.  But now it is $199 (or more) and prices itself out of the casual market.

This is Love, not Hate


As I said before, this is the best (mostly) open system available for the money.  They have just completed their 2016 developers conference, and many of the take-aways from that event appear very positive for this platform.

I criticized before from a position of worry and concern.  I have invested my own time and money into SmartThings.  I want them to succeed.  It is in my best interest that they continue to innovate.  I am a fan.  I just want what I see as best for both of us.

No comments:

Post a Comment