top | item 7075626

Building an open source Nest

662 points| simonbarker87 | 12 years ago |blog.spark.io | reply

250 comments

order
[+] imroot|12 years ago|reply
I've just built something very similar to this last weekend -- For around $43/sensor (Raspberry Pi Model B, DigiSpark, and 1-Wire Temperature Sensor) I made 20 of these for my home, farm, and hackerspace for temperature logging. I did this because we're getting another 'polar vortex' next week and the cows don't like it if it's colder than 20 degrees out.

This allows me to measure the temperature inside, outside, and get the relative humidity (not nearly as accurate as the $20 honeywell sensor that they're using, but, it's close enough for my needs). I then built a simple website using mrtg (for temperature trending) and a ruby script that checks the temperatures versus what the set points are and mounted the raspberry pi's in various locations around my places.

My "Controller" nodes are a beagleboard with a 4 or 8 channel relay board attached that allow me to turn on or off the individual controls on the furnace. It works well with my two stage heat pump and fan at my home, but, I need some work to get it 100% at the hackerspace and at the farm.

I mainly did this because I needed something that allowed me to cover more rooms than the Nest (and I'm adding duct dampers and fans to my heating system, so I can selectively heat and cool more rooms to better temperatures).

[+] simplekoala|12 years ago|reply
When you get a chance, would you be kind to write a "how to" blog post about how to build and wire one yourself, so others without any clue about how to do this can have a shot at learning and doing it themselves?
[+] tcdent|12 years ago|reply
As a software developer aspiring to be a farmer, you don't see much overlap. Thanks for the inspiration.
[+] shmikshmak|12 years ago|reply
What is the DigiSpark for? Is the Pi's IO not enough? How are you networking them?
[+] mrfusion|12 years ago|reply
I like the use of short 2-5 second videos instead of pictures. They did it tastefully and made it useful.

I never thought I'd see a good use case for auto playing videos. (It kind of reminds me of Harry Potter too)

[+] teh_klev|12 years ago|reply
I'd rather I it didn't auto-play and let me choose whether I want a page to swamp my bandwidth and CPU. Even over an 8Mb/s ADSL connection on a quad core Xeon workstation with 12GB or RAM and fairly decent video card this page is one of the worst behaved I've encountered in a while.

Sadly I won't be reading any of the content because even after five minutes it's killing my browser. To the spark.io blogging team, please don't assume unlimited wads of broadband. Let the reader decide whether they want to play your videos, and you know, I can only watch one video at a time on that page, so why start them all playing at once? This is no better etiquette than CNN or MSNBC or an adware farm where they start playing videos at you upon arrival. It's very rude.

[+] ddoolin|12 years ago|reply
Agreed. I had to open the source and see what they were using. Native video elements...I like it. I figured it was a nice GIF or something.

Not sure what the others guy are talking about. Works fine on my MacBook Pro...not issues at all?

[+] zz1|12 years ago|reply
Thank you for your comment: it allowed me to understand that the empy blocks I was seeing were meant to be videos (Firefox user here).

It's sad to find out that they ignored that mp4 isn't supported by all browsers. I know: HTML5 video is just a PITA, and that's indeed a reason why so many still rely on gifs.

I hope this project grows, and that they will care a bit more than they did here.

[+] cabalamat|12 years ago|reply
> I like the use of short 2-5 second videos instead of pictures.

I utterly disliked it. It made my browser slow and so I didn't read their page.

[+] pistle|12 years ago|reply
Autoplay has been the devil for 15 years in UI. You don't repeat animation and you don't auto-start it unless that is the expected primary feature of the landing page.
[+] FatalBaboon|12 years ago|reply
I opened the page with Firefox and my (reasonably powerful) laptop started overheating instantly.

Opening the page via eww in EMACS made it readable since it doesn't load videos if I don't ask it to.

[+] theallan|12 years ago|reply
Possibly, although I'm not that keen on my CPU fans spinning up just to scroll through a web-page.
[+] bluefinity|12 years ago|reply
Oh, I was wondering what those were. They just appear as black boxes on my tablet. I guess they're flash?
[+] adventureloop|12 years ago|reply
I like the idea, but the moving images in my eye line as I tried to read made me feel really queasy.
[+] rlpb|12 years ago|reply
So that's why I had a bunch of random gaps.

Poor degradation to those of us running NoScript, there.

[+] lukejduncan|12 years ago|reply
I actually really disliked this. Too distracting for me. Maybe my tastes will change over time - but I stopped reading because I couldn't concentrate on the text.
[+] MereInterest|12 years ago|reply
As someone who often browses over remote desktop, it gets quite frustrating, since all of the sudden my connection, which is fast enough for static text, freezes.
[+] corresation|12 years ago|reply
On a well-equipped i7 Windows 7 x64 machine, this web page brought Chrome 32 to an absolute crawl.
[+] grinich|12 years ago|reply
Funny-- the first Nest thermostat prototypes were also built with acrylic and wood. (I used to work there.)

I always hoped they would switch back to wood, but it's incredibly hard to do right in mass manufacturing.

[+] ama729|12 years ago|reply
> but it's incredibly hard to do right in mass manufacturing.

Any particular reason? From the outside, wood seem easier to use than plastic.

[+] analog31|12 years ago|reply
Flammability.
[+] parfe|12 years ago|reply
This makes me happy. I have a house with electric heat and eight thermostats pushing Nest costs into unreasonable territory. I'd love to be able to remotely set all my thermostats to 55 degrees or get certain zones to react based on events fired from my phone, (e.g. coming, leaving, charging with screen off aka sleeping, pending alarm)

Unfortunately, with my electric heat the thermostats sit inline with the heater's power source so I need devices that can safely handle 120v.

[+] declan|12 years ago|reply
Nest thermostats seem to be around $250. If you want thermostats that you can control with Applescript, Perl, mobile apps, etc., check out these Insteon-based ones for $150: http://www.smarthome.com/2441TH/INSTEON-Thermostat/p.aspx

One problem with the Nest is that if your thermostat is in a poor location (more of a problem with central heating), the motion sensor won't see you. With the ones I suggested above, you can programmatically link those to ~$40 motion sensors installed in the correct locations that will actually work.

[+] jusben1369|12 years ago|reply
Why do you have 8 thermostats? Is your house very very large? If true then is the personal cost to you of 8 Nest's really prohibitive?
[+] stephenjudkins|12 years ago|reply
It's pretty simple to wire up a 24VAC thermostat to control 120V power. Purchase a transformer [http://www.amazon.com/Honeywell-AT140A1000-40Va-120V-Transfo...] and a 24VAC relay [http://www.amazon.com/dp/B00097BDUA/ref=pe_385040_30332190_T...], get a junction box, and wire it all together.

This doesn't solve your problem of the $250/room cost, but if you'd like to use some other thermostats in your rooms this would work great.

The only complaint I'd have about mine is that the relay is very loud. You might want to search for a quieter one.

[+] jonhohle|12 years ago|reply
Not only that, but basic, programmable load bearing thermostats are relatively expensive compared to the typical control line alternatives. However, even with basic programmable thermostats (>=$75 a piece), I saw my electrical bill drop considerably vs. a 30 year old mechanical thermostat in an apartment I lived in the past 4 years.

We've moved since then and took the thermostats with us. I still have two if you want to buy some slightly used aube programmables (nothing with wifi, but better than nothing).

[+] george88b|12 years ago|reply
I have the exact same situation but I have spoken to Nest Customer Service and other "smart" thermostat CS and all have told me that they will not work with the wiring for electric heaters commonly controlled by a single dedicated mechanical thermostat. I was out of luck so if you find an working "smart" thermostat I would love to get one.
[+] noonespecial|12 years ago|reply
One thing I found about hardware is that the prototype is only 10% of the effort. Sourcing components for mass production, government regulatory hurdles, and then that damn enclosure are 90% when everything goes right.

I can build all kinds of things with my arduino and all of those awesome little one-off function boards you can snag on ebay from china theses days. I can't build 10000 of any of them.

[+] jevinskie|12 years ago|reply
See, hobbyists have it lucky! Well, nowadays samples are harder to get..
[+] pessimizer|12 years ago|reply
>we built our own approximation of the Nest Learning Thermostat in one day — and we’ve open sourced everything. In this process, we’ve come to respect the incredible technical challenges that Nest has solved while also coming to understand how much the game has changed since they first started.

I missed the technical challenges - this seems trivial, and exactly how easy that I would imagine it to be. The only challenge that I see is figuring that people would want a thermostat controlled by a phone app.

Since that's been figured out, I'm going to be very surprised if within 2 years 10 vendors don't have $50 versions sold at Wal-Mart, and there aren't 2-3 different open source software stacks competing to support a few of them.

[+] nostromo|12 years ago|reply
Design matters.

I remember when the iPod was still crazy expensive and people were abandoning their much cheaper Rios in droves.

Btw, I've purchased a few cheap home devices. For example, a few smart light switches. I've ended up switching back because they made my life more complicated and difficult, the opposite of the intended effect.

[+] jcastro|12 years ago|reply
The tricky bit is the learning; the first few weeks or so with it I was adjusting it all the time, now I don't need to do that, it knows I prefer to go to bed warm and wake up cool and just sets the right temperature.

I thought the phone app would be gimmicky, but it's nice to be able to get off the plane and un-autoaway the thing so by the time you get home it's comfortable.

[+] zedpm|12 years ago|reply
I'm trying to understand if you can self-host the server-side piece of this. I've wanted to have a networked thermostat for a while, but all the ones I found connect to the vendor's server, which is silly. I'd like to be able to point the device at my own server so I have full control.

EDIT: Yep, the Common Questions section of their website[1] says that they'll be releasing an open source version of their Cloud. Awesome.

[1] https://www.spark.io/

[+] dsr_|12 years ago|reply
Even better than not sending your usage information offsite: not having the system stop working when spark.io goes out of business (or is purchased, or goes to version 3, or...) and stops their servers.
[+] mwsherman|12 years ago|reply
I think this is great but there are lessons here from desktop Linux, Facebook clones, etc, which is that retail is hard.

In order to ship a widely used operating system, you need a support infrastructure, consumer research, drivers for lots of hardware, warranties, marketing, payroll, operations, accountants, regulatory compliance. The product is almost the easiest part.

I imagine that Nest understands all this. Putting a piece of hardware in someone’s house – one that’s connected to a furnace or which claims to protect against fire – means a lot of liabilities, broadly defined.

I’d love to see an open source version get to that level of maturity and support. It does happen but it takes a lot of people.

(Tangent, but when I started at Stack, a lot of people said they could (and did) build a clone in a weekend. Sure, as an approximation of the technical product. But that ain’t the ‘retail’ product, which is actually comprised of community, goodwill, SEO, quality control, and a lot of other things.)

[+] maxerickson|12 years ago|reply
In that context, this is a well done promotion for their hardware platform.
[+] batoure|12 years ago|reply
I think that this is a really cool project. But I think that the problem here is still fundamentally the same as the one faced by the nest.

The thesis of spark.io is "you can trust us with your data" not you have control of your data.

The spark is built on a cloud connected platform. even if you can see and control outputs from your board you still exist as part of their ecosystem. Which is basically the functional equivalent of using the dropbox api to build something instead of google drive.

I won't be excited about home automation until someone goes the way of an open protocol for these types of devices that doesn't require a centralized pass through.

Because if history has been any kind of teacher, it shows us that spark.io will probably get sucked up by google or somebody in the near future.

[+] davexunit|12 years ago|reply
There is a project called GNU remotecontrol that I just discovered that could be used for this purpose. It's important that you can be in control of your thermostat data instead of handing it over to Google/Nest/some other malicious vendor.
[+] zellyn|12 years ago|reply
I was under the impression that one of the major challenges faced by Nest was running off only the power available by safely drawing from the existing wires.

Without that constraint, it's a much easier problem.

[+] g8oz|12 years ago|reply
Nice, but I'd rather not be tied to a 3rd party service like Spark Cloud. Indeed thats my problem with Nest. It would be great if it would just connect to my private VPS or something.
[+] malandrew|12 years ago|reply

   "At Spark, we’re making it easier to bring connected 
   devices to market with the Spark Core, our Wi-Fi 
   development kit, and the Spark Cloud, our cloud service for 
   connected devices."
I found SparkCore on github[0] and the C++ communication lib for Core to communicate with SparkCloud [1], but I did not find SparkCloud itself on Github. Is that component going to open-source as well?

It would be nice if you had the option to host your own cloud service. You could protect your business model at least partially by using an open source license that requires people to change the name if they decide to fork it and productize it, such as the Artistic License v2.

[0] https://github.com/spark/core

[1] https://github.com/spark/core-communication-lib

[+] coreymgilmore|12 years ago|reply
I have built a similar system, and expanding it to more devices (think: devices other than thermostats). However, I use my own custom messaging/web server for communicating with the device from anywhere in the world. Think controlling your (ex: toaster) in NYC from LA without configuring any networks, vpn, ports,...aka Nest-like. Combined with some machine learning and machine "thinking", its pretty powerful.

The Spark Thermostat is great minus the fact that you need their web api for communicating with it. But for a 1-day build, how can anyone disappointed! Great job Spark team.

In regards to my own devices, I am definitely going to have to take a look at Spark now. Cool hardware.

[+] skue|12 years ago|reply
Are there any specifics on how the underlying Spark platform handles security? On their product page it says that Spark Cloud "creates a secure environment without forcing your web browser and the Core to speak the same language, which would be taxing on a low-power, low-cost microcontroller." Which isn't reassuring.

They don't provide any specifics in the docs either, only this:

"Security is hard. It’s especially hard on an embedded system, because encryption is resource intensive. But it’s also important, because you don’t want anyone turning on and off your lights, or worse, locking and unlocking your front doors.We hand-picked a set of rock-solid security protocols that are secure and efficient, so they work great on an embedded system. They’re baked into the Spark Protocol, which is open source and ready to be extended to other products."

I get that encryption may be difficult on embedded systems, but I would also argue that if a small embedded system can't handle strong encryption then it's not ready to connect devices to the web. I can't find any links to source code - anyone know what sort of encryption they use?

[+] strick|12 years ago|reply
If your next iteration includes a physical switch to put the fan in 'always on' mode, it will already be superior to the Nest.
[+] potench|12 years ago|reply
How does the thermostat control temperature? Am I crazy, I feel like I'm missing a section on how this device connects to the central air, Ac, heater, fan or something that can affect temperature. Under hardware: "relays to control the furnace and the fan." But I don't see details on the relay.
[+] lowglow|12 years ago|reply
If you're interested in building IoT, wearables, and externals, I'm getting an expo + hackathon together called Hackendo (http://hackendo.techendo.co) for April. I would really love the community's support in helping make this awesome, so anyone with experience in this area or feedback on how I should run the event, please reach out.

Also if you're in the bay area, you should check out this meetup group run by my friend Nick Pinkston: http://www.meetup.com/HardwareStartupSF/

[+] jaredcwhite|12 years ago|reply
I gotta say -- the use of video in this blog post is outstanding. Best use case of HTML5 Video I've yet come across, frankly. Sorry, I'm supposed to comment on the actual comment...haha. Just saying I love the format. :)