Meet a SmartThings Developer: Brian Johnson
We’re proud to support a growing community of developers who collaborate with each other and invent new ways to use SmartThings. This community is propelling the open platform for the Programmable World forward, and creating limitless possibilities for all SmartThings customers.
In the second installment of a new series shining the spotlight on developers in the SmartThings community, we’re going to get to know Brian Johnson, who, when not flying his small aircraft around, is working tirelessly on several device integrations including: camera and thermostat integrations, and extending the capabilities of the average security system.
ST: Do you primarily write software (hacker) on the SmartThings platform or create new devices (maker)?
BJ: I enjoy dabbling with code and exploring APIs. As much as I admire makers, I’ve come to grips with the fact that I solder about as well as a toddler can draw.
ST: How did you first hear about SmartThings and what attracted you to it?
BJ: I’m a recent homeowner and a longtime nerd. It only made sense that those two worlds would begin to blur together. Before I even signed the papers for my place nearly a year ago, I had already selected SmartThings as my primary focus. The appeal came from three major factors to me:
The appeal came from three major factors to me:
The Website, the devices, and the videos I’d seen made it clear that this wasn’t some hack job.
It’s as geeky as you want it to be.
Sure, you can make use of existing SmartApps and device controllers, but the platform itself is nearly as powerful as your skill and ambition will allow. And if #1 or #2 fail…
If you ever get stuck–or if you ever have a good idea that maybe needs feedback to become a great one–the community is a great resource. I’ve found it to be very positive and responsive–even to my nagging questions.
ST: How do you use SmartThings in your day-to-day life?
BJ: With any home automation system, the primary areas of focus for are security, conservation, convenience, and–probably the most important–tinkering.
ST: What are some fun and cool things you’ve built with SmartThings?
BJ: The things that I enjoy the most are the ones I’ve built myself–but I’m biased. I really like taking a few pages from the Unix philosophy playbook (“Small is beautiful” and “Make each program do one thing well”) to cherry-pick my favorites.
My favorite programs are “Nobody Home,” which simply changes modes depending on who is home and whether it’s daylight out or night. Using those modes, I’m able to trigger my “Forgiving Security” and “Secure My Foscam.” I hate having my camera looking at me, so it points to the wall unless it’s armed.
I also like “Thermostat Window Check“, which notifies me, then turns off my thermostat if a window is opened, saving electricity in a natural and transparent way. I use this in conjunction with the excellent Nest device controller by @Dianoga.
In general: if it’s something my wife will use, it’s a win.
ST: Haha. That is the second time we’ve hear a reference like that. Todd called it the WAF (Wife Acceptance Factor). Was that an uphill battle? What besides the example above, does she like about SmartThings?
BJ: The WAF is a powerful thing. There was a bit rough patch with my initial setup. I had a lot to learn (new platform, new language). I’m thankful that she’s patient, but I’m also lucky that it didn’t take nearly as long as I would have expected to get things working pretty smoothly.
As simple as it sounds – the “Hall Light, Welcome Home” SmartApp is really convenient. When you’re coming home with an armload of stuff, it’s a nice convenience to have the light turn on for you automatically.
ST: What tools do you use most often when developing for SmartThings?
BJ: I generally use a very simple syntax-highlighting text editor that I’ve used for years. I create the code there till I think it’s getting close, then paste it in the IDE. I generally only use the IDE to compile and test, as it lacks some features I’ve come to depend on. Once I get an app to what I deem as “good enough,” I’ll begin testing it myself and push it to my GitHub page. If it’s an app that I know others are using, I may leave a comment in the forums if I think it’s helpful for others.
ST: What are some of your favorite things that you’ve seen other developers in the SmartThings community create?
BJ: I’m pretty new to Groovy, so having reference material from @twack, @Dianoga and SmartThings alum Danny (among many others) has been incredibly helpful for tweaking things for my specific needs, aside from the specific apps and device controllers cited above.
“What one person deems novelty may genuinely bring some benefit and value to others.”
ST: What excites you most about the future of SmartThings and the open platform?
BJ: What one person deems novelty may genuinely bring some benefit and value to others. I see things like an egg tray that goes online and have my own opinions about how useful/useless it might be. The beauty of a truly open system is that if you want your car to talk to your egg tray for some crazy thing you’re doing… go right ahead. I know many of the projects I pour much of my time into are probably silly to some (most?), but I enjoy the idea of building those connections and trying to solve interesting, strange, and challenging problems. With SmartThings having its own system based on Groovy, or having it communicate with REST requests, or using IFTTT, it’s solidifying itself as part of a home automation “solution”–not a walled-in garden “system.”
ST: What’s one thing would you like to see added to, removed, or changed about SmartThings?
BJ: I’m an Android fan, so of course, I’m excited to see the app beginning to catch up with what I hear the iOS app is doing. I’d also like to be able to issue quick commands to SmartThings as both a reply to a notification or a shortcut on my home screen. I’m also very excited about the prospects of more refined local IP access so I can begin doing more integrations with my internal home-brew system.
Additions to documentation and the IDE will be very welcome. It’s made huge advancements in a few months, but there will always be room to focus here.
For source code, GitHub integration and a proper way to share or sell apps would both incentivize developers and encourage easier collaboration.
In the long-run, I’d love to have the Hub have some awareness of whether a command requires Internet access. If I’m checking the weather, of course that request is required. But if I’m only switching on a light, it seems a lot of lag could be reduced if those simple commands could be issued locally. I understand why the decision was made to keep things in the cloud and there are some hardware limitations, but I think the argument for such a feature is becoming impossible to ignore.
In the distant future, I’d like SmartThings to just know what to do. If it knows I come home every day around 6 p.m., open my garage door, unlock my door, close the garage door, turn on the lights and turn on my TV, I’d love it if it could should suggest that as an action instead of waiting for me to think of it. The potential for machine learning and pattern recognition is huge.
ST: Nice. Any parting thoughts?
BJ: Given the scale of what SmartThings has done and what they are aiming to do, they’ve done some really amazing things. They’ve always treated their users as partners more than customers, and I’ve always been able to get real-life human responses in shockingly short times. The IRC channel on Freenode (#smartthings) has been great for talking directly to both the people developing the platform and those using it.