Commit a8f93c97 authored by Jan Wagemakers's avatar Jan Wagemakers

update README.md

parent 22c7280f
#!/bin/bash
git add .
git commit -m "$1"
#!/bin/bash
git pull origin master
#!/bin/bash
git push origin master
# Thermostat
**Status :** Proof of concept (under construction)
This is a personal project where I'm creating a *smart* thermostat. The idea
is to make a *dumb* thermostat where you can change the setpoint over
**bluetooth**. A small computer like the Raspberry Pi communicates with this
......@@ -12,14 +10,93 @@ control the heating, but I don't trust computers enough to let them do the
control directly. Think about things like sd-card or file system corruption,
which on occasion can happen.
By making use of a *dumb* microcontroller based thermostat, it should still
be possible to control the heating when the *smart* part fails.
By making use of a *dumb* microcontroller based thermostat, it's still
possible to control the heating when the *smart* part fails.
## pic18f1320 : dumb thermostat
* [schematic diagram](https://gitlab.com/jan.wagemakers/thermostat/blob/master/pic18f1320/thermostat.png)
* software, written in assembler (gpasm - GNU PIC assembler)
### Commands
By using a HC-05 Bluetooth module connected to the pic18f1320
microcontroller it's possile to send commands to the thermostat.
The following commands are recognized by the thermostat:
<table style="overflow:hidden; width:auto;">
<thead>
<tr>
<th> </th>
<th>Command to µC</th>
<th>Answer from µC</th>
</tr>
</thead>
<tbody>
<tr>
<td>Get current temperature (Process Value)</td>
<td><code class="highlighter-rouge">PV?</code></td>
<td><code class="highlighter-rouge">21.0</code></td>
</tr>
<tr>
<td>Get current SetPoint</td>
<td><code class="highlighter-rouge">SP?</code></td>
<td><code class="highlighter-rouge">20.7</code></td>
</tr>
<tr>
<td>Set SetPoint</td>
<td><code class="highlighter-rouge">SP=20.6</code></td>
<td><code class="highlighter-rouge">20.6</code></td>
</tr>
<tr>
<td>Get OutPut (0/1)</td>
<td><code class="highlighter-rouge">OP?</code></td>
<td><code class="highlighter-rouge">0</code> or <code class="highlighter-rouge">1</code></td>
</tr>
<tr>
<td>Set Outside Temperature</td>
<td><code class="highlighter-rouge">OT=-1.6</code></td>
<td><code class="highlighter-rouge">-1.6</code></td>
</tr>
<tr>
<td>Set (Outside) Atmospheric pressure</td>
<td><code class="highlighter-rouge">OA=0999</code></td>
<td><code class="highlighter-rouge">0999</code></td>
</tr>
<tr>
<td>Set Year</td>
<td><code class="highlighter-rouge">YY=19</code></td>
<td><code class="highlighter-rouge">19</code></td>
</tr>
<tr>
<td>Set Month</td>
<td><code class="highlighter-rouge">MM=03</code></td>
<td><code class="highlighter-rouge">03</code></td>
</tr>
<tr>
<td>Set Day</td>
<td><code class="highlighter-rouge">DD=09</code></td>
<td><code class="highlighter-rouge">09</code></td>
</tr>
<tr>
<td>Set hour</td>
<td><code class="highlighter-rouge">hh=10</code></td>
<td><code class="highlighter-rouge">10</code></td>
</tr>
<tr>
<td>Set minutes</td>
<td><code class="highlighter-rouge">mm=58</code></td>
<td><code class="highlighter-rouge">58</code></td>
</tr>
<tr>
<td>unknown</td>
<td><code class="highlighter-rouge">blabla</code></td>
<td><code class="highlighter-rouge">?</code></td>
</tr>
</tbody>
</table>
### Pictures PCB
![pcb1](http://www.janwagemakers.be/jekyll/assets/images/2018/PCB1.png)
......@@ -32,7 +109,7 @@ be possible to control the heating when the *smart* part fails.
![pcb5](http://www.janwagemakers.be/jekyll/assets/images/2018/PCB5.png)
![case](http://www.janwagemakers.be/jekyll/assets/images/2018/CASE.png)
![case](http://www.janwagemakers.be/jekyll/assets/images/2019/CASE.png)
## Raspberry Pi : smart thermostat
......@@ -41,14 +118,24 @@ JAVA Spring Boot program that:
* communicates with *dumb* thermostat over bluetooth
* checks if a user is home by checking smartphone/bluetooth
* creates a web interface at port 8080
* reads the outside temperature from http://tgftp.nws.noaa.gov/data/observations/metar/decoded/EBAW.TXT (hard coded at the moment)
* use the outside temperature to lower the setpoint if it's warm outside
* it's possible to add/delete "users" and "rules" by using the web interface
* reads the outside temperature and atmospheric pressure from https://tgftp.nws.noaa.gov/data/observations/metar/stations/
* use the outside temperature and atmospheric pressure to lower the setpoint if it's warm outside
* it's possible to add/delete/change "users","rules" and "configuration" by using the web interface
## Source
[https://gitlab.com/jan.wagemakers/thermostat/](https://gitlab.com/jan.wagemakers/thermostat/)
## Demo
A demo version of the web interface is available at
[http://janw.mooo.com:24388](http://janw.mooo.com:24388).
Note that in this demo version it's not possible to change the database
("rules", "users", "configuration"). The current temperature it shows is
just a random value. It's just there to show the current
interface.
## Screenshots
### Index
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment