Arduino Programmable Heater Blower Thermostat With DS18B20 Temperature Sensor

High Voltage Warning:
Before we begin I would like to caution that this project will involve high voltage and proper precautions should be exercised during these steps. Make sure all sources of house 115v AC voltage is disabled at the source such as an electrical breaker box. High voltage can cause SEVERE INJURY or DEATH.
A little bit of background:
I recently bought a house during the cold winter months. This house is equipped with a hot water boiler where as hot water is passed through passive radiators in each room. That being said the kitchen was absolutely the coldest room in the house and no obvious radiator was to be seen in only this one room.
Since the kitchen was to be remodeled, the cabinets were being removed and the above pictured Beacon Morris K120 TwinFlo III Hot Water Kick Space Heater was found. When found there was no power and it was not plumbed to the boiler system. After plumbing and adding it to the breaker box the unit worked.
The issue to solve:
This sucker is LOUD and only controlled by manually turning on a 3-position switch to either HIGH > OFF> LOW. This non-ideal situation involved waiting for the boiler to cycle hot water and then poking a pencil through a grate to bring the blower roaring to life.
Simpler Options:
Leaving the blower on as long as the heat was set via a solution to the thermostat was out of the question for at least these 2 reasons; I did not want to hear that blower run for any longer than necessary; I wanted this unit to be completely independent.
Solution to be covered:
A thermostat that is able to measure the water temp inside the radiator, be completely self contained, and have 2 variables that could be user controlled; water temp to cut on the blower and blower run time (make sure radiator is “cool enough” but not cold as to not waste heat.
But wait?You may be asking yourself; I have seen these before! This is a “Use a relay to control a fan based on a temp sensor” scenario, why do I want to use this specific set of instructions when there a others?
I test drove a few of these examples from both this site and in the wild on internet forums. Either the code was for really old sensors with outdated libraries or mostly what I found, the code was not exactly bullet-proof… . loops running off the rails, long term failures or other complications. I needed this to be a production quality solution that would meet my needs, not waste electricity or burn the house down.

With all of this said; Lets get started!”

Link