#Thermos is programable thermostat running on Raspberry PI.
Web app using Node.JS and React JS to control Thermos remotely and modify the schedule.
Hardware buttons to change mode (auto, manual, off), increase and decrease manual temperature.
##Requirements
- Raspberry Pi (Any model should do)
- Python. comes pre installed on Raspian
- NodeJS, NPM and some NPM dependencies. See installation below.
- Some electronics : leds, push buttons, thermal sensor, bread board, resistors. modmypi.com has a kit that provides most of what you need : https://www.modmypi.com/raspberry-pi-youtube-workshop-kit
- A relay : connected to the led indicating heating, to control your heating or whatever electrical device you fancy. http://store.arduino.cc/product/T010010
Just copy the content of the repository somewhere on your pi.
do not install node js from debian repo. Debian is well known to have outdated packages. Follow the instruction below instead. Install Node JS from : http://weworkweplay.com/play/raspberry-pi-nodejs/
wget http://node-arm.herokuapp.com/node_latest_armhf.deb
sudo dpkg -i node_latest_armhf.deb
rm node_latest_armhf.deb
sudo apt-get update && sudo apt-get upgrade && sudo apt-get install npm
Install dependencies using npm.
from nodejs
directory run :
npm install
##Hardware setup The hardware setup is very simple : three push buttons, three leds, some resitors and thermal sensor.
all of which is described in https://www.modmypi.com/raspberry-pi-youtube-workshop-kit
##Start Thermos
run ./start.sh
##Stop Thermos
not very clean but does the job : ./stop.sh
##Start Thermos at boot time :
add to /etc/rc.local
: /bin/bash /home/pi/thermos/start.sh &
##Access the Web App http://my-raspberry-pi:8080/
login and password are hardcodes in nodejs/node.js
##Files
nodejs/
: rest api and web app.Thermos.py
: the actual programSchedule.py
: customisable scheduler.config.py
: configuration of the software : gpios etc.data/config.json
: living configuration of thermos : mode, manual temperaturedata/schedule.json
: your schedule (edited via the web ui)data/status.json
: status of thermos (temperature, mode etc)