nest-datagraph
nest-datagraph copied to clipboard
Nest thermostat dashboard and graph charts
Nest DataGraph
This project try to fill the biggest Nest Thermostat gap, data history using Python and LAMP stack.
It allow you to browse your Nest thermostat history data with some pretty charts, analyze your consumption and keep a eye on your environment.
Feel free to create a pull request, open an issue or fork it !
Features
- Polls Nest API to fetch thermostat data
- Consumptions data are stored in a local database
- Generates (Google) Charts with your consumptions
- Select specific date ranges
- Hover over charts to get the exact timestamp and temperature
- Verify your Nest Protect devices state
- And more !
Installation
Prerequisite
For Docker version:
Docker Setup
If you want to use Nest Datagraph with Docker, please follow these steps:
-
Fill the
frontend/conf/settings.ini
file with your configuration:-
timezone
- Your timezone (Ex: 'Europe/Paris') -
units
- Choose your temperature units (C or F) -
api_key
- DarkSky API Key -
lat
- Latitude -
long
- Longitude -
nest_username
- Nest login -
nest_password
- Nest password -
nest_sn
- Nest Thermostat serial number -
nest_protect
- Set true if you Nest Protect product -
mysql_username
- MySQL user -
mysql_password
- MySQL password -
mysql_hostname
= IP or FQDN of your MySQL server -
mysql_database
= Database name
-
-
(Opt) Edit the docker-compose.yml file to specify your ENV variables.
-
Build Docker image:
ocker-compose build
-
Run Project
ocker-compose up -d
-
Do both build and run in one command:
ocker-compose -f "docker-compose.yml" up -d --build
Classic Setup
This example is based on Debian Jessie with NGinx/PHP-FPM web server and MariaDB database engine.
-
Update your package lists and any pending updates before starting:
udo apt-get update
udo apt-get upgrade -y
-
Install required packages:
udo apt-get install nginx php5-fpm php5-mysql php5-curl mariadb-server mariadb-client git python-pip python-dev build-essential
ip install -r setup/requirements.txt
-
Clone the repository:
d /opt && git clone [email protected]:gchenuet/nest-datagraph.git
-
Setup NGinx Virtual Host:
udo cp /opt/nest-datagraph/setup/nginx/nest-datagraph.conf /etc/nginx/sites-available/
udo ln -s /etc/nginx/sites-available/nest-datagraph.conf /etc/nginx/sites-enabled/nest-datagraph.conf
-
Modify the
server_name
parameter with your FQDN in nest-datagraph.conf :im /etc/nginx/sites-enabled/nest-datagraph.conf
-
Reload NGinx
udo service nginx reload
-
Create a new MySQL user:
REATE USER '[username]'@'localhost' IDENTIFIED BY '[password]';
RANT ALL PRIVILEGES ON * . * TO '[username]'@'localhost';
-
Create the database and grant permissions:
REATE DATABASE nest_datagraph;
RANT ALL PRIVILEGES ON nest_datagraph.* TO '[username]'@'localhost';
-
Import the DB schema:
udo mysql -h <HOST> -u <USER> -p<PASSWORD> nest_datagraph < /opt/nest-datagraph/setup/db/nest-datagraph.sql
-
Open the crontab and add the line at the end of the file:
rontab -e
* * * * /usr/bin/python /opt/nest-datagraph/backend/poller.py
-
Fill in variables with your parameters in
frontend/conf/settings.ini
:-
timezone
- Your timezone (Ex: 'Europe/Paris') -
units
- Choose your temperature units (C or F) -
owm_id
- OpenWeatherMap API Key -
owm_city_id
- Your city ID (without quote, e.g: 2988507) -
nest_username
- Nest login -
nest_password
- Nest password -
nest_sn
- Nest Thermostat serial number -
nest_protect
- Set true if you Nest Protect product -
mysql_username
- MySQL user -
mysql_password
- MySQL password -
mysql_hostname
= IP or FQDN of your MySQL server -
mysql_database
= Database name
-
-
Enjoy (and wait a hour) !
Features & Known Issues
You can find and post new features or known issues in the Issues
tab.
Contributing
- Fork it
- Create your feature branch
(git checkout -b my-new-feature)
- Commit your changes
(git commit -am 'Added some feature')
- Push to the branch
(git push origin my-new-feature)
- Create new Pull Request
Report a bug
- Create an new issue
- Explain with details your issue
- Add your configuration (OS, Software version, etc)
- (Opt) Attach files
- Submit !
Acknowledgements
- Scott M Baker, http://www.smbaker.com/ for https://github.com/smbaker/pynest
- Guillaume Boudreau, https://www.pommepause.com for https://github.com/gboudreau/nest-api
- Google for Google Chart, https://developers.google.com/chart/
- Nest for images and logos, https://nest.com