Remotely controlled thermostat: The 4 Best Smart Thermostats of 2023

Wireless thermostats: What are they, and which is the best?

Wireless thermostats allow you to control your home heating and cooling system via Wi-Fi.

The name is slightly misleading because wireless thermostats are still wired to your HVAC system. But they enable you to control the system wirelessly, usually via an app on your smartphone. 

Best wireless thermostat

Best overall

Nest Learning Thermostat

  • User-friendly
  • Sleek
  • Automated

Buy on Amazon

Best design

Nest Thermostat

  • Modern look
  • Variety of colors
  • Energy-savings

Buy on Amazon

Most affordable

Amazon Smart Thermostat

  • Easy install
  • Simple controls
  • Voice commands

Buy on Amazon

Most compatible

Ecobee Smart Thermostat

  • Works with older systems
  • Smart sensor
  • Speaker

Buy on Amazon

No C-wire

Emerson Sensi

  • Sensi app
  • Widely compatible
  • Usage reporting

Buy on Amazon

It’s easy to get confused between wireless, Wi-Fi, and smart thermostats. We define them as follows:

Term Definition
Wireless thermostat A thermostat you can control remotely, usually via Wi-Fi.
Wi-Fi thermostat A thermostat you can control remotely via Wi-Fi.
Smart thermostat A thermostat that learns your habits and can adjust itself accordingly. Most are also wireless.
Programmable thermostat Any thermostat that lets you set a schedule. For example, you can program the heat to start when you get out of bed at 6:30 a.m. Most wireless thermostats are programmable.

So, one thermostat can actually be wireless, Wi-Fi, smart, and programmable.

If you’re in the market for a new wireless thermostat, consider the following elements:

💰 Cost Wireless thermostats range in price from about $60 to $200+. You can get a high-quality system for around $100.
🚨 Room sensors Some wireless thermostats use room sensors to create HVAC zones within your home. This enables more precise temperature control.
🤖 Home automation compatibility Most wireless thermostats integrate with apps like Google Assistant and Apple Homekit. If you use one of these tools, ensure your thermostat supports it.
📱 App Thermostat manufacturers typically have a brand-specific app that lets you control your thermostat remotely and access its data and reports.
💡 Smart capabilities The most advanced Wi-Fi thermostats have learning capabilities. They can sense your habits and adjust themselves independently.
🔌 C-wire A C-wire (also known as a common wire) delivers supplemental power to your thermostat. Most wireless thermostats require one, but not all. Some older homes do not have a C-wire. Learn more here. 

We’ve conducted extensive research, combing through expert reviews and real customer feedback. Below are our top pics for the best wireless thermostats.  

Best wireless thermostat overall

The Nest Learning Thermostat is our favorite smart and user-friendly option. Installation is simple, taking less than 30 minutes. After about a week in your home, the Nest Learning Thermostat essentially programs itself to reflect your family’s habits. 

Of course, if you prefer to override the Nest’s automatic settings, you can do that easily on the Nest app. The Nest app also lets you use your phone as an HVAC remote control, turning the temperature up and down as needed.

This Nest model reports your HVAC system’s energy usage to your phone. You can use that information to alter its settings to be more eco-friendly and save money.

You can choose one of six available finishes that match your interior decor. The Nest Learning Thermostat pairs with up to six optional room sensors, which helps the device keep your home at a consistent temperature.

Buy on Amazon

Best wireless thermostat design

The Nest Thermostat is a more basic version of the Nest Learning Thermostat. It’s less expensive, coming in at just under $100. It doesn’t have all of the Learning version’s smart capabilities in exchange for the lower price. 

We love this Nest thermostat for its sleek and modern design. It has unique color options, like sand, a rose gold shade. The display shows only the information you need: your setting and the current indoor temperature.

Though it’s not as smart as other Wi-Fi thermostat options, the Nest Thermostat creates reports and suggests energy-saving changes to help your HVAC system operate more efficiently.

It’s not compatible with home automation platforms, but the Nest Thermostat pairs with Amazon Echo for voice control.

Buy on Amazon

Most affordable wireless thermostat

Amazon makes its Smart Thermostat with Honeywell, one of the most popular thermostat manufacturers. It’s reliable, less than $60, and great looking – win, win, win!

If you’re not an Amazon Alexa user, this thermostat probably isn’t for you. You need the Alexa app to control the thermostat remotely and utilize its voice command features. You can also review your HVAC system’s energy usage via the Alexa app.

The Amazon Smart Thermostat can adjust itself to match your lifestyle. It senses when you leave home and when you’re sleeping. However, it does not have separate room sensors for whole-home data.

This thermostat is easy to program and install with prompts from the Alexa app.

Buy on Amazon

Most compatible wireless thermostat

The Ecobee Smart Thermostat is compatible with most home automation platforms and HVAC systems, new and old. Additionally, it pairs with up to 32 room sensors – ideal for a big house that needs precise temperature control. 

The Ecobee Smart Thermostat is so smart it can sense when your windows are open and pause your HVAC system’s operation. It can also serve as a security system, monitoring windows and doors.

This programmable Wi-Fi thermostat has a built-in speaker that can answer voice commands and play music. The Ecobee Smart Thermostat is the only one on our list that can get your party jams pumpin’! You can even take a phone call on this super smart thermostat.

Buy on Amazon

Best programmable Wi-Fi thermostat without a C-wire

The Emerson Sensi Smart Thermostat is a little dated looking. But it doesn’t require a C-wire, which simplifies installation if you have an older home or an HVAC system without a C-wire. 

Its traditional-looking faceplate is helpful if you have loved ones at home who are more comfortable with a push-button thermostat. The Emerson Sensi offers a familiar interface with updated high-tech features.

This Wi-Fi thermostat is compatible with home automation systems by names like Apple, Amazon, and Google. However, integration isn’t necessary for thermostat control or usage monitoring. This is ideal for individuals who prioritize privacy and don’t wish for these big tech players to access their data.

The Sensi app provides system monitoring and energy-saving suggestions. It also delivers reminders about system maintenance, including alerts to change your air filter.

Buy on Amazon

Can I install a wireless thermostat myself?

Wireless thermostat installation is a DIY-able job. Your thermostat comes with installation instructions.

First, remove your existing thermostat and mount the new one to the wall. Check out our helpful guide on thermostat wiring for more details. 

Next, connect your wireless thermostat to your home Wi-Fi network. If your signal isn’t great, you may need to invest in a Wi-Fi extender. This portion of the set-up is usually automated via your thermostat’s app. 

If you run into trouble along the way or prefer to steer clear of DIY projects, an HVAC professional can install your thermostat for you. HomeAdvisor says this costs about $175. 

Help me install my wireless thermostat now

Is a wireless thermostat worth it?

Wireless thermostats offer many benefits, including convenience and cost savings.

📱 Remote control Whether you’re on your couch or on vacation, you can adjust your thermostat from your phone or another device.
💡 Energy savings Smart thermostats report on energy usage and make suggestions to help you cut back.
💵 Money savings Cutting back on energy usage also reduces your utility bills.
🤖 Automation You can essentially “set it and forget it” with a smart thermostat. They learn your habits and adjust themselves accordingly.
🏠 Whole-home comfort Some wireless thermostats use room sensors to ensure your home is consistently comfortable.

Wireless thermostats are ideal for:

  • Rental or vacation property owners who want to control the temperature when they’re not there.
  • Environmentalists looking for tips on how to cut back on energy consumption.
  • Budget-savvy individuals who appreciate suggestions on how to lower utility bills.
  • People who use home automation platforms for other appliances.
  • Tech enthusiasts who love having the latest and greatest tools at their fingertips.

Since most wireless thermostats cost under $200, we think they’re absolutely worth it – especially considering how much they’ll help you save on energy. In many cases, a wireless thermostat will pay for itself in less than a year.

If you need help choosing a wireless thermostat or just have questions about them, click below to connect with one of our local HVAC experts. 

I want to talk to someone about wireless thermostats

Remote Control Thermostats Comparison Chart













Aube
Phone Controller

Venstar
Comfort Call & Slimline Thermostats

Sensaphone
400

Deluxe Freeze Alarm

BayWeb

Venstar

Mi Casa Verde Vera

Honeywell





Model

CT-240,
CT-241, plus thermostat

ACC0433,
plus thermostat






YTL9160AR1000-THM6000R1002

Method

Telephone
(landline, VOIP, cellular*)

Telephone (landline, VOIP,
cellular*)

Telephone
(landline, VOIP, cellular*)

Telephone
(landline, VOIP, cellular*)

High-Speed Internet

Wireless High-Speed Internet

Wireless High-Speed Internet

Wireless High-Speed Internet

Capabilities


Toggles between two degree setpoints, announces
current temp, reports temp/power alarms (by phone)

Web/Smartphone selection
of any degree between 35F and 90F, full HVAC control (Heat/AC/Off/Auto),
displays current temp via web/smartphone, occupancy-based controls,
reports temp/other alarms (by email/SMS)

Web/Smartphone selection
of any degree between 35F and 90F, full HVAC control (Heat/AC/Off/Auto),
displays current temp via web/smartphone, reports temp (by email/SMS)

Web/Smartphone selection
of any degree between 35F and 90F, full HVAC control (Heat/AC/Off/Auto),
displays current temp via web/smartphone, reports temp (by email/SMS)

Only Web/Smartphone thermostat with full control for electric baseboard heaters, selection
of any degree between 41F and 86F,
displays current temp via web/smartphone, reports temp (by email/SMS) One thermostat can control multiple heaters, up to 8 EIM can be used per thermostat

Optional Add-Ons

none

Outdoor temp sensors available

Add’l monitoring sensors
(water, humidity, security, etc. )

Water sensor (WS-04), Motion Sensor (MA-S01)

Wireless Motion Sensors,
Wired Water/Sump sensors, wired humidity sensors, and more.

Screensaver via SD Card
(SD Card not included)

Add’l monitoring sensors
(water, humidity, security, etc.)

Wireless outdoor temp sensor, Remote control for local control without internet.

Averaging

No

**1-8 Sensors

No

No

Professional Only

No

No

No

Temp Swing

No

1 – 6 degrees F

No

No

No

No

No

No

Calibration (adjust read out)

No

Yes

No

No

No

Yes

No

No

Vendor Service Fee

None

None

None

None

None

None

None

None


* With additional Equipment see Cellular Terminals & Alarms

**Can also report outside temperature. Does not interfere with Comfort Call.








Remote
Control Setback Thermostats Selection Chart

Type of Heating/Cooling System

Thermostat Models

7-Day

Programmable?

Heat/Cool Capabilities

Fan Control Terminal?

Remote input for phone control?

Requires

XFR-0024 when used with Sensaphone,
Deluxe Freeze Alarm, WisDom, or CT241 Aube
Phone Controller?

Requires

XFR-0024 when used withCT240
Aube Phone Controller or AGM GSM Module?

Hot
Water Baseboard

or

Furnace-heated Forced Air

Th2402801

Yes

Heat
Only

No

Yes

Yes

No

Th241HC28

(aka FGD-0064)

Yes

Heat
and Cool

Yes

Yes

Yes

No

Millivolt
System

Th2402801

Yes

Heat
Only

No

Yes

Yes

No

Electric
Baseboard
Th215-A-240D

Yes

Electric
Heat Only

No

Yes

No

No

Please
note: This table simply details the capabilities of each thermostat model.
If you are unsure of which model is the proper model for your system,
please contact your electrician or HVAC specialist.

We are Here to Help!


Send us an email by filling out the contact form on our Contact Us page. Describe your situation as best you can, and we will help you select the equipment that is right for your needs!

Video Tutorial


NM0302 – Thermostat with remote control

NM0302 – Thermostat with remote control – soldering kit buy in Master Kit. Driver, programs, diagram, reviews, instructions, DIY, DIY

NM0302 – Remote control thermostat – soldering kit buy at Master Kit. Driver, programs, diagram, reviews, instructions, do-it-yourself, DIY

You can buy Master Kit NM0302 from us – Remote-controlled thermostat – soldering kit: price, photo, DIY, do-it-yourself, specifications and equipment, reviews, overview, instruction, driver, programs, scheme

Master Kit, NM0302, Remote-controlled thermostat – soldering kit, price, description, photo, buy, DIY, DIY, reviews, review, instruction, delivery, driver, programs, diagram

https://masterkit. ru/shop/2304624

Assembly kit

Automatic control / Home automation

Assembly kits / Beginner electronics

from 14 years old / Children

Thermostat assembly kit, can be used as a control and switching device in systems heating to stabilize the temperature of the premises, in an apartment, in a country house, in a greenhouse, as part of a “smart home”, to control the temperature of an electric heated floor. The temperature controller can also be used to maintain the set air temperature in an aquarium, terrarium, water temperature in a pool, etc. The thermostat can be controlled using the included remote control.

Age limit 14+.

Out of stock

4 190

discount 500


3 690

Thermostat assembly kit, can be used as a control switching device in heating systems to stabilize room temperatures, in an apartment, yes Che, in greenhouse, as part of a “smart home”, to control the temperature of the electric floor heating. The temperature controller can also be used to maintain the set air temperature in an aquarium, terrarium, water temperature in a pool, etc. The thermostat can be controlled using the included remote control.

Age limit 14+.

Specifications

Number of sensors 2
Number of load control channels 900 47 1
Temperature measurement accuracy, С ±0.5
Supply voltage, V 12
Max. current consumption, mA 55
Max. load power, kW 2
Overall dimensions, mm 120x78x35
Net weight g 108
Shipping weight g 150

Instructions

  • Instructions

Operating principle

The thermostat is made on the DD2 microcontroller, which performs all the necessary functions during the operation of the device: temperature measurement, indication of operating modes, switching on or off the load depending on the set threshold.


Additional information

Temperature measurement is performed by digital sensors SNS1, SNS2 with a standard accuracy of +/-0.5C.

The temperature controller is equipped with a real-time clock on a DD1 chip, which prevents the loss of date and time settings in the event of a power outage.

The thermostat can be controlled and adjusted in two ways: with the pushbuttons S1…S3 or with the supplied remote control.

Indication of settings and operating modes of the thermostat is carried out by a two-line LCD indicator. The contrast of the indicator is regulated by a trimming resistor R14.

All units and components of the thermostat are powered by +5V voltage from the internal regulator on the DA1 chip.

The load is turned on and off using the relay K1, controlled by the microcontroller through a key on the transistor VT1.


Schematics

Wiring diagram

Schematic diagram


Setup

  • A correctly assembled device does not need to be adjusted and is ready for use.

Precautions

  • It is recommended that the thermostat be switched on for the first time without a power load. Connect the 9…12V power supply to connector X1. Observe polarity!
  • The soldering time of one lead of semiconductor elements should not exceed 5 seconds. Use tweezers as a heat sink if necessary.

Maintenance

  • The manufacturer reserves the right to change the appearance, configuration, design and parameters without changing the technical characteristics of the product.

Comments

Ask a question in the Forum

Similar devices



31

Discuss on the forum

Copyright www.maxx-marketing.net

How to make a DIY thermostat with a web interface to heat your home remotely / Sudo Null IT News By the start of the course on Fullstack development in Python, we are sharing a translation of an article, the author of which, in the UK, where there is no central heating in the usual sense of these words, faced the inconvenience of heating in a new house and independently assembled an electronic thermostat, writing a web interface to control the device , as well as a Flask backend.


My parents recently had a smart thermostat installed. And I thought: can’t I create something similar myself? I remember very well when I was little – I was obsessed with technology, especially miniature portable devices. Mini-TVs, game consoles of the early nineties, Palm Pilots and Nokia communicators of the end of the same decade, handheld computers that appeared at the turn of the 2000s caused delight. How I dreamed about it! And I thought that miniature electronic devices and home automation systems are a hobby of the powerful, Bruce Wayne or Tony Stark. Until I got this miracle:

If you want to go straight to the code, skip the introduction. Of course, I knew that single boards existed – I had a Pi 3B model for several years that worked in many ways: as a game console emulator, as a media center, as a file server, web server, kali linux sandbox, etc. But let’s be honest: the model copes with all these tasks, but without much brilliance. From the media center on the Raspberry Pi 3, my hands are itching to assemble something cooler!

The true potential of the Pi is something I recently experienced. It turns out that the power of the Raspberry Pi computer lies in its GPIO pins ( G eneral P urpose I nput/ O utput). I watched a lot of videos on YouTube, videos of the Explaining Computers channel from my beloved Christopher Barnatt, which I subscribe to. They talk in detail about projects and trials with GPIO, but in trying to master the intricacies of hacking art from YouTube videos, I could not come up with a decent project, drop everything and dive into circuitry. It didn’t get to the point of experimentation.

Raspberry Pi SBC 9 GPIO pins0002 What prevented me from starting:

  1. Fear of damaging my Pi.

  2. Jumper cables, modules, boards, etc., they are expensive, you would have to buy them in addition.

  3. Congenital laziness.

Let’s deal with the points.

  1. Once you get started, you will immediately realize how conveniently the conclusions are located, most of which are generally the same – you just need to understand how they are located.

  2. The cost will be surprisingly low, especially if everything is well planned. You can order inexpensive components from third-party manufacturers, but finding them and waiting … It can take a long time.

Having lost my patience, for the sake of experiments, I sacrificed cables that I pulled out from other places and randomly connected to the GPIO pins – everything went fine, nothing broke, but I remembered point #1.

Like a real beginner hacker, I carefully picked up the essential tools – soldering irons, small screwdrivers. The circuit board for breadboarding or tests was never needed. And laziness is a common life circumstance. We all deal with it in our own way. You need to overpower yourself, come up with an idea and develop a plan.

A worthy project

A year ago I moved into a new house. This winter, the shortcomings of central heating showed up in all its glory, the system of which has separate branches up and down, each with its own programmer. They are designed so that the temperature is set four times a day, and on weekdays and weekends the system behaves differently.

For example, you can program the heat to 20°C at 6am, then lower it to 5°C at 8am because no one is home, and raise it to 20°C at 6pm, lowering the temperature to 5°C before bed.

On Saturday and Sunday, you can set a different mode. This is a combined system. Most of the systems I’ve dealt with had a separate thermostat and timer; in my opinion, combining these devices frees up space on the wall, but limits functionality, for example, because the wall model does not have a button to increase heating for one hour.

When you need to set some non-standard heating time, the only thing you can do is to carefully monitor the temperature on the screen to a certain threshold and fix it at this level until the next change, and then, when the time comes, reduce it. These annoying actions are automated, and after learning that parents purchased a thermostat controlled by a mobile application, it made them think about how to remotely heat the house and how difficult it is to assemble the device yourself.

Trip relay setup via RPi GPIO

This is a normal relay – bottom right – in the normally open (N/O) position

When the temperature drops below the threshold, a click is heard, and the sound of the relay is unmistakable, so I assumed that the circuit works thanks to the relay. The boiler heats up – the temperature rises; click – and the boiler cools down. On the net, I ordered the most inexpensive relay that works with Pi. I was excited and even slightly apprehensive about the first GPIO project.

For my model I chose Adafruit Power Relay Featherwing . A 5 amp, 250 volt relay must be able to handle British voltage and operate reliably from Pi’s 3V output voltage.

3V connected to pin 1, GND to pin 9 and signal to pin 13 (GPIO 27)

Relay arrived, I started programming. First, I ran a test script that I learned about on the Explaining Computers channel.

 import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setup(13, GPIO. OUT)
try:
    while True:
        GPIO.output(13, True)
        time.sleep(1)
        GPIO.output(13, False)
        time.sleep(1)
finally:
    GPIO.cleanup() 

First test

In the example above, after importing RPi.GPIO, I set the Board Numbering serial mode, and then I made the selected signal pin GPIO 27, indicated in the code by the number 13, as the input pin.

with a delay of one second turns the relay on and off. The try/finally block clears the settings before exiting the program. Everything worked right away (thanks, Chris!). It was incredibly nice to hear relay clicks and see how my script works with a physical object!

There were still a lot of free contacts, and it was good: I had to connect the temperature module. I searched a little and chose BMP280 from Bosch – the most inexpensive module with good reviews:

A couple more searches on the net, and I found a useful diagram and a guide on how to connect this module to Pi:

In our case, it is important to know the pin assignment , since 3 and 5 (GPIO 2(SDA) and 3(SCL)) are used by a serial asymmetric bus for communication between integrated circuits.

I chose the configuration above, I had to move the 3V relay cable to the Pi 3V pin in position 17. Otherwise, the temperature sensor should not interfere with the operation of the relay, I connected it without problems:

Temperature module hanging from temporary cables (later I replaced them)

Of course, at first I wrote scripts for testing the relay and the sensor module, and if the first part of this work did not present any difficulties for me, then I had to tinker with the second: data transfer depended on the characteristics of the I2C pins of the Pi. There were occasional permission issues with them, especially not on Raspbian. I’m working with Ubuntu 20.04, but everything was resolved successfully – it was enough to look for something and go to Stack Overflow a couple of times.

The problem was caused by an old friend of mine, error PermissionError , which is triggered when trying to run a script not as root. Not ideal if you want the script to run standalone on a web server.

I ended up finding a fantastically useful package, pigpiowhich , which allows you to bypass these permissions if the pigpiod daemon is running. It can serve as a replacement for RPi.GPIO, it is much easier to set up. You can install it on Ubuntu and Raspbian like this:

 sudo apt install pigpiod 

Then install the Python module: bus2 pimoroni-bme280

Troubleshooting

I recommend installing i2c-tools, which helped to detect the problem of poor soldering.

 sudo apt install i2c-tools 

This package allows you to view busy I2C addresses. If all contacts are free, you will see this output:

If everything is installed, but nothing works, the problem may be inaccurate soldering. When soldering tiny GPIO pins to the Pi Zero W, I didn’t make sure that every drop of solder went directly into the hole. Immediately after fixing the bug, i2cdetect found the module:

At this point, anxiety #1 reached its peak. My biggest fear was that I would accidentally solder one tiny pin to another and a short circuit would occur. But everything worked out, I did not damage my Pi, although I left a few spots of solder on the bottom of the board.

Hardware debugging has been completed, it’s time to write the same , non-test code. For the heating system, I decided to create a special class responsible for performing the necessary operations, so that it can be easily imported, for example, into a Flask application.

 import json
import time
from datetime import datetime
from threading import Thread
import pigpio
import requests
from requests.exceptions import ConnectionError
class Heating:
    def __init__(self):
        self.pi = pigpio.pi()
        self.advance = False
        self.advance_start_time = None
        self.on = False
        self.tstat = False
        self.temperature = self.check_temperature()
        self.humidity = self.check_humidity()
        self.pressure = self. check_pressure()
        self.desired_temperature = 20
        self.timer_program = {
            'on_1': '07:30',
            'off_1': '09:thirty',
            'on_2': '17:30',
            'off_2': '22:00',
        }
  
    def thermostatic_control(self):
        self.tstat=True
        while self.tstat:
            time_check = datetime.strptime(datetime.utcnow().time().strftime('%H:%M'), '%H:%M').time()
            on_1 = datetime.strptime(self.timer_program['on_1'], '%H:%M').time()
            off_1 = datetime.strptime(self.timer_program['off_1'], '%H:%M').time()
            on_2 = datetime.strptime(self.timer_program['on_2'], '%H:%M').time()
            off_2 = datetime.strptime(self.timer_program['off_2'], '%H:%M').time()
            if (on_1 < time_check < off_1) or (on_2 < time_check < off_2):
                if self.check_temperature() < int(self.desired_temperature) and not self.check_state():
                    self.switch_on_relay()
                elif self.check_temperature() > int(self. desired_temperature) + 0.5 and self.check_state():
                    self.switch_off_relay()
                time.sleep(5)
            else:
                if self.check_state():
                    self.switch_off_relay()
                time.sleep(900)
        return
    def thermostat_thread(self):
        self.on = True
        t1 = Thread(target=self.thermostatic_control)
        t1.daemon = True
        t1.start()
    def stop_thread(self):
        self.on = False
        self.tstat = False
        self.switch_off_relay()
    def sensor_api(self):
        try:
            req = requests.get('http://192.168.1.88/')
            data = json.loads(req.text)
            return data
        except ConnectionError:
            return {
                'temperature': self.temperature,
                'humidity': self.humidity,
                'pressure': self.pressure,
            }
    def check_temperature(self):
        self.temperature = self.sensor_api()['temperature']
        return self. temperature
    def check_pressure(self):
        self.pressure = self.sensor_api()['pressure']
        return self pressure
    def check_humidity(self):
        self.humidity = self.sensor_api()['humidity']
        return self.humidity
    def switch_on_relay(self):
        self.pi.write(27, 1)
    def switch_off_relay(self):
        self.pi.write(27, 0)
    def check_state(self):
        return self.pi.read(27)
    def start_time(self):
        if not self.advance_start_time:
            self.advance_start_time = datetime.now().strftime('%b %d, %Y %H:%M:%S')
        return self.advance_start_time
if __name__ == '__main__':
    hs = Heating()
    while True:
        print(f'''________________________________________________________________
{datetime.utcnow().time()}
Temp: {hs.check_temperature()}
Pressure: {hs.check_pressure()}
Humidity: {hs.check_humidity()}
________________________________________________________________
        ''')
        time.sleep(2) 

I’ve included the required Flask checks: start_time() method creates a variable passed to the html template so that the JavaScript timer counts down regardless of page updates and whether another device is being used.

Thermostat API

As you can see, there is no function to check the temperature module itself in the script. I did this on purpose because I find it convenient to have the Pi 3B work with a relay and the more portable Pi Zero W get data from the sensor module via an API. The code for this API for Flask with BME280 methods looks like this:0003

 #!/usr/bin/env/python3
import time
import pigpio
from smbus2 import SMBus
from bme280 import BME280
from flask import Flask, jsonify, make_response
app = Flask(__name__)
pi = pigpio.pi()
bus = SMBus(1)
bme = BME280(i2c_dev=bus)
# throwaway readings:
for i in range(3):
    bme.get_temperature()
    bme.get_humidity()
    bme.get_pressure()
@app.route('/')
def sensor_api():
    response = make_response(jsonify({'temperature': bme.get_temperature(),
                                      'humidity': bme.get_humidity(),
                                      'pressure': bme.get_pressure()}))
    response.status_code = 200
    return response 

The single endpoint returns a response with the current meter reading in JSON format.

The source of soldering problems is the new satellite thermostat API

Reverse engineering my system

What do I like most about electronics ? Most of the components are clearly labeled and have good documentation. But when it comes to electricity , things are much more complicated! When I removed the cover from the junction box that hung behind the drying cabinet, I found several wires connected to the control valve actuator that serves two heating circuits: a jumble of wires threaded through a hole in the wall, and four wires going to each actuator mechanism, that is, only eight wires.

I searched and found the official documentation for actuator valves and figured out what these four wires are and which one is the “main” one, the signal of which is interrupted by a relay in the programmer unit.

From my story, one might get the impression that everything went smoothly and without hesitation. But it took quite a long time – suffice it to say that all wires at the output of the remaining part turned out to be brown. Trying to figure out which direction to look in, I watched a huge number of videos on YouTube on the topic “how to connect a heating system in the UK.”

Then you just needed to close the relay on the wall and use it to break the circuit inside the drying cabinet, while simultaneously supplying power to both drives. I also decided to add an outlet to the cabinet to supply power to the Pi. This allowed me to hide the wires that my wife hates. The signal quality was almost unaffected, although the cable was laid in a cabinet. It is amazing!

I am laying the wires in a new way. The relay is hanging on the wall, the Pi is in a black box.

There was only one circuit from the drives to the pump, it could not be touched; the other two led to the programmers on the walls, above and below. As already mentioned, I closed one relay and used this circuit for an outlet extension. Someday I will finalize this solution, but for now, let it hang like that, all the more everything is fine.

Thermostat control interface

At the beginning, I designed the routes on the frontend in parallel with the system testing. I had to wait for a few days for a package with a temperature module, so at first I got a version with only a timer.

The Flask application is simple. I wrote routes and views for paths / , /on , /off , /advance and /settings , elementary authentication with a simple code on my RPi already worked, I decided to leave her. After the code, you will see screenshots of the interfaces.

 #!/usr/bin/env python3
import time
from threading import Thread
from flask import Flask, redirect, url_for, render_template, request, session, jsonify, make_response
from .heating import Heating
app = Flask(__name__)
hs = Heating()
# Throwaway temp checks:
hs.check_temperature()
time.sleep(1)
hs.check_temperature()
@app.route('/heating')
defhome():
if 'verified' in session:
start_time = hs. start_time() if hs.advance else None
return render_template('heating.html', on=hs.on, relay_on=hs.check_state(),
current_temp=int(hs.check_temperature()), desired_temp=int(hs.desired_temperature),
advance=hs.advance, time=start_time,
)
return redirect(url_for('login'))
@app.route('/', methods=['GET', 'POST'])
def login():
if request.method == 'GET':
if 'verified' in session:
return redirect(url_for('menu'))
return render_template('login.html')
else:
name = request.form.get('name')
if name == 'PASSWORD':
session['verified'] = True
return redirect(url_for('menu'))
else:
return render_template('login.html', message='You are not allowed to enter.')
@app.route('/menu')
defmenu():
if 'verified' in session:
return render_template('menu.html')
return redirect(url_for('login'))
@app. route('/on')
def on():
if 'verified' in session:
hs.thermostat_thread()
return redirect(url_for('home'))
return redirect(url_for('login'))
@app.route('/off')
defoff():
if 'verified' in session:
hs.stop_thread()
hs.advance = False
hs.advance_start_time = None
return redirect(url_for('home'))
return redirect(url_for('login'))
def advance_thread():
interrupt = False
if hs.tstat:
hs.tstat=False
interrupt = True
hs.switch_on_relay()
time.sleep(900)
hs.switch_off_relay()
hs.advance = False
hs.advance_start_time = None
hs.on = False
if interrupt:
hs.thermostat_thread()
@app.route('/advance')
def advance():
if 'verified' in session:
hs.on = True
hs.advance = True
t1 = Thread(target=advance_thread)
t1.daemon = True
t1.start()
return redirect(url_for('home'))
return redirect(url_for('login'))
@app.route('/settings', methods=['GET', 'POST'])
def settings():
if request. method == 'GET':
if 'verified' in session:
return render_template('settings.html', des_temp=hs.desired_temperature, timer_prog=hs.timer_program)
return render_template('login.html')
else:
interrupt = False
if hs.tstat:
hs.tstat=False
interrupt = True
des_temp = request.form.get('myRange')
on_1 = request.form.get('on_1')
off_1 = request.form.get('off_1')
on_2 = request.form.get('on_2')
off_2 = request.form.get('off_2')
new_timer_prog = {
'on_1': on_1,
'off_1': off_1,
'on_2': on_2,
'off_2': off_2
}
hs.desired_temperature = des_temp
hs.timer_program = new_timer_prog
if interrupt:
hs.thermostat_thread()
return redirect(url_for('home'))
@app.route('/temp', methods=['GET'])
def fetch_temp() -> int:
response = make_response(jsonify({"temp": int(hs.check_temperature()),
"on": hs.