Block diagram:

Operation modes:

Manual operation:
In this operating mode, the room temperature can be freely selected within certain limits using the thermostat's touchscreen. The "Automatic" entry in the Google Calendar can be used to switch back to automatic mode.

Automatic mode:
In this operating mode, the Google Calendar automatically switches between a presettable setback temperature and a presettable heating temperature. These two above-mentioned temperatures can be set separately in the thermostat's options menu.

Thermostates:

AZ-Touch Feather kits were used for the thermostats. Each of the thermostats is equipped with a 2.8 inch ili9341 touchscreen. 



As the AZ-Touch kit is not designed for 230V supply voltage, a small additional board was designed which, in addition to a 230V ACDC converter, also contains a relay for controlling the heating and a DS18B20 1wire sensor for measuring the room temperature.

The circuit board of the AZ-Touch has been slightly modified so that the ACDC module fits into the housing:



An Adafruit Feather M0 RFM96 LoRa Radio - 433MHz module was used as the microcontroller for controlling the thermostats.

Gateway:

The gateway was mounted on a perforated grid plate. Essentially, the gateway consists of an ESP32 DEV KIT C module as CPU and an Adafruit RFM96W LoRa Radio Transceiver 433 MHz Breakout. The connection to the Internet is established via the WiFi of the ESP32 module.

If you want to save yourself this work, you can alternatively use an Adafruit Huzzah32 and an Adafruit LoRa Radio FeatherWing - RFM95W 433 MHz.

Google Calendar:

The heating can be controlled remotely via a Google Calendar. I used the script and instructions from Seweryn Tałaj for this.

If the heating is now to be activated, a date is simply entered in the calendar. The appointment must contain the term "Room1" or "Room2" in the subject line as the key word in the subject line. You can of course adapt the program in the gateway accordingly and assign better key words. Please set the time so that there is enough time to heat up - in other words at least 2-3 hours longer. Otherwise leave the description of the date blank and do not invite any participants.