All Projects β†’ peckrob β†’ Nest Watch

peckrob / Nest Watch

Licence: gpl-3.0
A script to take Nest thermostat data and put it into InfluxDB

Projects that are alternatives of or similar to Nest Watch

Tsbs
Time Series Benchmark Suite, a tool for comparing and evaluating databases for time series data
Stars: ✭ 545 (+3792.86%)
Mutual labels:  influxdb
Typeorm
TypeORM module for Nest framework (node.js) πŸ‡
Stars: ✭ 807 (+5664.29%)
Mutual labels:  nest
Casbin Example
A Demo App of Attribute-based Access Control in Node.js Based on Casbin.
Stars: ✭ 19 (+35.71%)
Mutual labels:  nest
Cryptofeed
Cryptocurrency Exchange Websocket Data Feed Handler
Stars: ✭ 643 (+4492.86%)
Mutual labels:  influxdb
Swagger
OpenAPI (Swagger) module for Nest framework (node.js) 🌎
Stars: ✭ 734 (+5142.86%)
Mutual labels:  nest
Varken
Standalone application to aggregate data from the Plex ecosystem into InfluxDB using Grafana for a frontend
Stars: ✭ 829 (+5821.43%)
Mutual labels:  influxdb
Wizzy
Manage & automate Grafana with easy wizzy
Stars: ✭ 461 (+3192.86%)
Mutual labels:  influxdb
Typescript Starter
Nest framework TypeScript starter β˜•οΈ
Stars: ✭ 853 (+5992.86%)
Mutual labels:  nest
Stream Reactor
Streaming reference architecture for ETL with Kafka and Kafka-Connect. You can find more on http://lenses.io on how we provide a unified solution to manage your connectors, most advanced SQL engine for Kafka and Kafka Streams, cluster monitoring and alerting, and more.
Stars: ✭ 753 (+5278.57%)
Mutual labels:  influxdb
Junos monitoring with healthbot
Healthbot configuration examples. Scripts to manage Healthbot. Closed loop automation. Healthbot building blocks description and troubleshooting guide
Stars: ✭ 17 (+21.43%)
Mutual labels:  influxdb
Onboarding
A list of resources we at flyeralarm use to get new developers up and running
Stars: ✭ 648 (+4528.57%)
Mutual labels:  influxdb
Graphql
GraphQL (TypeScript) module for Nest framework (node.js) 🍷
Stars: ✭ 697 (+4878.57%)
Mutual labels:  nest
Nodepress
😎 RESTful API service for Blog/CMS, powered by @nestjs
Stars: ✭ 829 (+5821.43%)
Mutual labels:  nest
Nestjs Learning
nestjs 学习教程 πŸ“šοΌŒθ·Ÿζˆ‘δΈ€θ΅·ε­¦δΉ  nest ζ‘†ζžΆ~ πŸ’ͺ
Stars: ✭ 638 (+4457.14%)
Mutual labels:  nest
Chronicler
Scala toolchain for InfluxDB
Stars: ✭ 24 (+71.43%)
Mutual labels:  influxdb
Monitoring
Monitor ESXi, Synology, Docker, PiHole and Raspberry Pi and Windows using Grafana, InfluxDB and Telegraf
Stars: ✭ 493 (+3421.43%)
Mutual labels:  influxdb
Node Influx
πŸ“ˆ The InfluxDB Client for Node.js and Browsers
Stars: ✭ 820 (+5757.14%)
Mutual labels:  influxdb
Influxdb Java
Java API for influx database to fetch and persist data.
Stars: ✭ 12 (-14.29%)
Mutual labels:  influxdb
Influxdb Bundle
Bundle service integration of official influxdb/influxdb-php client
Stars: ✭ 24 (+71.43%)
Mutual labels:  influxdb
Nest Cli
CLI tool for Nest applications 🍹
Stars: ✭ 889 (+6250%)
Mutual labels:  nest

Maintainer Wanted

October 2019: I no longer use Nest thermostats, so I have no need for this code anymore and will not be actively maintaining it. If you are interested in taking over, comment here.

Nest Watch

Nest Watch is a small command-line script that polls your Nest thermostats and stuffs the results into InfluxDB. From there you can use an analytics platform such as Grafana to build reports.

Why?

I have two Nest thermostats in my house and, after some teething pains (yay the life of an early adopter) they have been pretty solid. But they're also black boxes that I know little about. I know they're collecting mountains of data and sending it back to the Google mothership. Wouldn't it be nice to get at some of that data and build my own reports?

The more practical reason, however, is that I have a house that is heated and cooled by electric heat pumps, with heat strips as an auxiliary backup. Those things pull 50 amps when they are in use. I might as well light dollar bills on fire. So anything that I can do to reduce my use of aux heating I try to do.

Unfortunately, Nest's reports are delayed by a day so I can't make realtime adjustments to my usage. Furthermore, Nest's reports don't give me any data more granular than "(heat|cool) was used (in 15 minute increments) today". You can look at a timeline and kinda see where it was used, but that's it.

This may be fine for a normal person. But I'm an engineer, not a normal person. :) I want data!

So when I came across this unofficial API, I instantly thought of how neat it would be to use it to grab that data and do something with it. Rather than write my own analytics on top of it, I decided instead to just stuff the data into a time-series database (InfluxDB), off which I could use any platform I wanted to build reports or alerting.

Warning

This is a wholly unofficial project. It might stop working at any time. Do not rely on this for life-critical stuff. I am not responsible for what you do with it.

Installing

Prerequisites: Needs InfluxDB, PHP, Composer and probably some other stuff.

Clone the repo:

git clone [email protected]:peckrob/nest-watch.git /opt/nest-watch
cd /opt/nest-watch
chmod +x nestwatch

Install packages:

cd src
composer install

Configure source:

cp nestwatch.conf.sample /etc/nestwatch.conf
vi /etc/nestwatch.conf

Fill in your Nest username and password (yes, that sucks, but this is an unofficial API after all). Also fill in the InfluxDB information. Then run it and see if you get data:

/opt/nest-watch/nestwatch -v

If everything is good and you have data going into InfluxDB, cron it up. I have mine running once every five minutes, mostly because I really don't have any idea of how often Nests report back to Google and, anyways, I don't want to hammer the API. I figure 5 minutes is good enough resolution for my purposes.

crontab -e
*/5 * * * * /opt/nest-watch/nestwatch

Nest Target Mode

0 = Off
1 = Range (Cool & Heat)
2 = Cool
3 = Heat

License

GPLv3

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].