The problem: In my house I use a gas heater to heat the water and all the rooms. In most rooms there is floor heating but the children’s rooms are heated by radiators. When the heater stops, you can feel that these “radiator rooms” get cooler earlier than the other rooms. Unfortunately, the thermostat is placed in the other part of the house and doesn’t know that. It is also sometimes required to start the heating “on demand”, ignoring the thermostat informations that control the heater. So, let’s make something that solves that problem.
THE SOLUTION
I’M AN ENGINEER, I’LL DO IT MYSELF. PROOF OF CONCEPT.
After some investigations the easiest solution was to add a switch parallel to the output from the thermostat – this starts heating on demand when the switch is on (because the heater “thinks” the thermostat said it is cold). So I can control the heating the easy way, without reprogramming the thermostat each time. The case is solved. Definition of Done satisfied.
But… really? Someone still has to stop the heating (as the thermostat is overriden now). Can I do it better? Let’s do it Agile!
1ST SPRINT
Let’s add something that is a bit smarter than the switch. I chose an Arduino-clone board with a relay that is programmed to switch the heating off after some time (depending on the number of buttons pressed). Soldering. Programming. Move to Done.
But again… Can it be done in a better way? The “switching center” is placed in the room where the gas heater is and someone has to go there and press the button. This should be possible remotely. There is still room for improvement.
Sprint demo: Product owner: Ok, now go there and switch it on! Developer: …
2ND SPRINT
I decided to use the MQTT broker so I can easily communicate with the “switching center. I used Addafruit IO that gives MQTT communication and access from anywhere in one service. There are also many different visual controls that can be directly used for building an Adafruit IO Dashboard. I can now switch the heating on or off from any place in the world. I have the IoT device now!
Sprint review: Product owner: You mean we need to do it from the browser? Ok, but you’ll do it! Developer: Maybe we can use some app?
3RD SPRINT
Adafruit IO can connect directly with If This Then That (IFTTT) service. It allows some automation, then IFTTT sends a request to Adafruit and the IoT device does the switching. But if it can be automated then why do we need to tell it when to switch on or off? Can’t it do it on it’s own? Let’s add some sensors. Again: soldering, programming. Now I have 3 IoT devices: “The Executioner” that switches the heater and 2 IoT sensors that report the temperature and humidity in different rooms. One of the sensors also gets the weather forecast and sends it using MQTT to Adafruit IO. Because it can.
After some observations (Adafruit IO has graphs that illustrate the data from IoT sensors) it came out that one of the children’s rooms is 1-2 °C colder than the other rooms. Not that we didn’t know that but now it is proved. It can also show how warm it is in the room during the day.

What can I do with that information? I can switch the heating on or off depending on the temperature info from that colder room. Fortunately, Adafruit IO has Triggers feature so the logic can be programmed in the cloud.

Because there are some triggers also in IFTTT, let’s use them. Now it is possible to start and stop the heating in different ways: manually (I think nobody will use it anymore and it will be deprecated soon), by the app (on demand), automatically (Adafruit triggers) or by calling some fictional number from the phone with IFTTT app installed. When this number is saved as “start heating” and “stop heating” in the contacts, you can start heating by saying “call start heating”.

But is it really so comfortable? Let’s use it for some time and see how it works.


4TH SPRINT
It can be improved! We have another sprint!
IFTTT can also connect with Amazon Alexa. Is it really needed to use some app or even get the phone when we can do it easier? No! Let’s use Alexa IFTTT skill. Just a bit of configuring actions in IFTTT and we can just say something that does the job. The hardware and IoT software stays untouched – everything is programmed in the cloud! You need to change the settings? Do it from the browser, no compiler, no cables, no need to solder anything. Welcome to the future!

SOMETHING IS MISSING… ALEXA, CAN YOU HELP? …PART 2 OF THIS ARTICLE IS COMMING SOON!
AMB’S TECH INSIGHTS – AN ARTICLE BY IREK
Ireneusz (Irek) started his carrier as a Software Developer mainly programming in Java.
Since 2014 Irek developed his skills in Quality Assurance (QA) of frontend and backend software using automated tools wherever it was possible also for DevOps challenges. Jenkins and Selenium are his mother tongues.
Irek has a „never settle“ attitude, which led him to get into new technologies and making his Microsoft Azure Cloud Certificate this year, where he will continue his hands on experience also in the AI fields.