From e134f7393335d47f1e2e42cb50d7ba6d88f9ef9c Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Tue, 13 Jan 2015 08:39:22 -0800 Subject: [PATCH] Added support for Nest thermostat --- source/_includes/custom/grid_item_left.html | 1 + .../2015-01-13-nest-in-da-house.markdown | 26 ++++++++++++++++++ .../screenshots/nest-thermostat-card.png | Bin 0 -> 21513 bytes 3 files changed, 27 insertions(+) create mode 100644 source/_posts/2015-01-13-nest-in-da-house.markdown create mode 100644 source/images/screenshots/nest-thermostat-card.png diff --git a/source/_includes/custom/grid_item_left.html b/source/_includes/custom/grid_item_left.html index 7385c018965..2a7759e259e 100644 --- a/source/_includes/custom/grid_item_left.html +++ b/source/_includes/custom/grid_item_left.html @@ -8,6 +8,7 @@ Home Assistant will track the state of all the devices in your home, so you don'
  • Philips Hue
  • Belkin WeMo
  • Google Chromecast
  • +
  • Nest Thermostat
  • PushBullet
  • Netgear, Tomato and OpenWRT routers
  • Tellstick devices & sensors
  • diff --git a/source/_posts/2015-01-13-nest-in-da-house.markdown b/source/_posts/2015-01-13-nest-in-da-house.markdown new file mode 100644 index 00000000000..c074aa7c0c0 --- /dev/null +++ b/source/_posts/2015-01-13-nest-in-da-house.markdown @@ -0,0 +1,26 @@ +--- +layout: post +title: "Nest in the house!" +description: "Home Assistant has added Nest to its list of supported products." +date: 2015-01-13 08:29:04 -0800 +date_formatted: January 13, 2015 +comments: true +categories: component +--- + +For thet majority of its existence, Home Assistant primary focus was on presence detection, lights and switches. But not anymore as we're expanding the supported devices. Today, we're proud to introduce Nest Thermostat integration for Home Assistant contributed by [Stefano Fiorini](https://github.com/sfiorini)! + +

    + +

    + +The new integration exists out of two parts: a generic thermostat component and a Nest platform implementation. The initial version implements provides a read-only card and services to control it. The plan is in the future to add temperature and away mode controls from the thermostat card and more info dialog. Internally, we are using the Python package [python-nest by jkoelker](https://github.com/jkoelker/python-nest) to talk to the Nest. + +If you own a Nest thermostat, add the following lines to your `home-assistant.conf`: + +``` +[thermostat] +platform=nest +username=YOUR_USERNAME +password=YOUR_PASSWORD +``` diff --git a/source/images/screenshots/nest-thermostat-card.png b/source/images/screenshots/nest-thermostat-card.png new file mode 100644 index 0000000000000000000000000000000000000000..356e848f043f89ebba4b41cbaf564db2770b0f89 GIT binary patch literal 21513 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 nTKmWDpSb*OM8W^rd7(iSm