summaryrefslogtreecommitdiff
path: root/src/HW/thermostat/document.en.rest.txt
diff options
context:
space:
mode:
Diffstat (limited to 'src/HW/thermostat/document.en.rest.txt')
-rw-r--r--src/HW/thermostat/document.en.rest.txt105
1 files changed, 105 insertions, 0 deletions
diff --git a/src/HW/thermostat/document.en.rest.txt b/src/HW/thermostat/document.en.rest.txt
new file mode 100644
index 0000000..d3c282d
--- /dev/null
+++ b/src/HW/thermostat/document.en.rest.txt
@@ -0,0 +1,105 @@
+===========================
+Building a smart thermostat
+===========================
+:CreationDate: 2018-03-25 12:47:54
+:Id: HW/thermostat
+:tags: - hardware
+ - software
+
+I'd like to have a computer-controller thermostat, that behaves the
+way I want to, doesn't need to talk to external servers, can measure
+temperature in multiple rooms.
+
+I'll need:
+
+* multiple cheap temperature sensors that can report their readings
+ wirelessly
+* a way to start / stop the boiler
+* some clever software to decide when to turn the boiler on/off based
+ on the temperature readings
+* a computer to run that software
+
+The sensors
+===========
+
+The current candidate is a ESP32_ running off (probably alkaline)
+batteries, using a DHT11_ sensor.
+
+.. figure:: thermometer-diagram.png
+ :align: center
+
+ Connections:
+
+ =============== ======
+ microcontroller sensor
+ =============== ======
+ +5V VCC
+ GND GND
+ pin 13 DATA
+ =============== ======
+
+`The code for the thermometer`_ uses the DHTesp_ library to read the
+sensor, and the `esp8266-oled-ssd1306`_ library to drive the
+display. The final sensor will most probably not have a display.
+
+.. _ESP32: https://en.wikipedia.org/wiki/ESP32
+.. _DHT11: https://www.adafruit.com/product/386
+.. _`The code for the thermometer:
+ https://www.thenautilus.net/cgit/thermostat/tree/sensor/thermostat.ino
+.. _DHTesp: https://github.com/beegee-tokyo/DHTesp
+.. _`esp8266-oled-ssd1306`:
+ https://github.com/ThingPulse/esp8266-oled-ssd1306/
+
+Talking to the boiler
+=====================
+
+Using the process described by `Steven Hale`_, `Dave Hope`_, `Ross
+Harper`_ and probably others, I connected a 433MHz receiver to my
+soundcard:
+
+.. figure:: rf-receiver-diagram.png
+ :align: center
+
+ Connections:
+
+ ============= =======
+ From To
+ ============= =======
+ Power + receiver VCC
+ Power - receiver GND
+ Power - microphone cable shielding via 22kΩ resistor
+ receiver data microphone cable channel via 47kΩ resistor
+ ============= =======
+
+By turning the knob the thermostat that was installed with the boiler,
+I generated the on and off signals. I recorded them with Audacity_,
+and spent a few hours puzzling them out (I'll write more details about
+this part at some future time).
+
+Then I built a transmitter:
+
+.. figure:: rf-trasmitter-diagram.png
+ :align: center
+
+ Connections:
+
+ =============== ===========
+ microcontroller transmitter
+ =============== ===========
+ +3.3V VCC
+ GND GND
+ pin 7 DATA
+ =============== ===========
+
+and wrote `code to send the correct pulse train`_. The receiver wired
+to the boiler recognises the signals and turns on and off.
+
+.. _`Steven Hale`:
+ http://www.stevenhale.co.uk/main/2013/08/home-automation-reverse-engineering-a-worcester-bosch-dt10rf-wireless-thermostat/
+.. _`Dave Hope`:
+ https://damn.technology/controlling-british-gas-wr1-receiver-arduino
+.. _`Ross Harper`:
+ http://rossharper.net/2015/11/decoding-a-siemens-rcr10433-thermostat-signal-to-control-a-boiler-from-a-raspberry-pi/
+.. _Audacity: https://www.audacityteam.org/
+.. _`code to send the correct pulse train`:
+ https://www.thenautilus.net/cgit/thermostat/tree/trasmitter/sender.ino