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.

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.
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:

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. This is what the recorded waveforms look like:
It took a while to realise that those saw-toothed waves were actually square waves, mangled by all the filters that my soundcard has, and that the heights were different only because of those same filters.
Measuring the number of samples between rising edge and falling edge gave me the timing. Then I had to do the whole thing again when I noticed that the "low" widths where not always equal to the preceding "high" width: it's not a 50/50 duty cycle square wave.
Then I built a transmitter:

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.