Background

A house has a handful of line voltage electric baseboard heaters (240V, 3600W).

Problem

Control the schedule and current temperature without connecting beyond a local area network.

Hard Requirements

  • Supports Wi-Fi connectivity to local area network.
  • Does not require Internet connectivity at any time.
  • Thermostats can be uniquely referenced by name (or IP address).
  • Encrypted transport protocol and password protected.
  • Change the temperature from a terminal using REST over HTTP:
    $ curl -d "thermostat=kitchen&set=20C&token=T" -X POST https://10.0.0.15/temp
    

Soft Requirements

Optional requirements include:

  • Offers a simple web server (or Bluetooth for initial setup).
  • Thermostats can be named.

Hub

If a hub exists that offers an open REST over HTTP API, then that would work. Preferably, the thermostats will operate standalone (without a hub).

Alternatives

Mozilla's Things Gateway looks promising as a way to connect to a hub. Benjamin Francis wrote,

My one suggestion would be to look for a Zigbee thermostat and then use the Things Gateway to bridge it to an IP network and expose a REST + WebSocket API. We already have a Zigbee adapter and would like to add support for a thermostat web thing type. I'd be interested to hear what you find because I'm looking for something similar for my own home. I was considering Honeywell.

Research

Here are a variety of contenders and reasons they don't work, as I've discovered or been told from sales representatives:

There are a number of 24V thermostats that won't work, which include:

Question

What thermostats would permit controlling temperature via the command-line over Wi-Fi without Internet connectivity?

Alternatively, are there any absolutely silent 240V to 24V relays that would be perfectly safe to use with one of the typical 24V devices?

  • Generally, I would not expect consumer devices to provide an open API - there is insufficient demand, and vendors seem to rely on high margin customers right now. Build your own is potentially 'easy'. – Sean Houlihane May 3 at 14:01
  • Not sure if this exactly meets the need, but I have built a load manager that accepts eight 10-to-24 Volt sensor inputs (say from thermostats) and controls eight 24 Volt relays. Inputs and outputs are logically controlled by an internal computer (RaspberryPi) running C++, so it has RJ-45 Ethernet, WiFi, and Bluetooth capability (I'm just using the wired Ethernet so far). (1/2) – user297954 Oct 12 at 18:05
  • Primary application is controlling furnaces, heat pumps, possibly smart appliances (anything with separated control and power). The code prioritizes inputs (call-for-service) and can then limit the number of outputs that are served. Right now the priority is only based on available power (e.g. from a solar array or battery/inverter), but it would be possible to add time-of-day or other criteria. (2/2) – user297954 Oct 12 at 18:05

It might be hard to find an off-the-shelf product that immediately satisfies your requirements. How confident are you with DIY? There are plenty of open source hardware platforms that are relatively easy to re-flash with custom firmware, you might find that approach most suitable for your needs. See https://github.com/arendst/Sonoff-Tasmota as an example for the ESP8266 SoC based hardware.

I worked on a similar DIY open source project ages ago, it does many of the things what you want. It is not maintained anymore, but you can still use PCB layout/code: https://harizanov.com/wiki/wiki-home/three-channel-wifi-relaythermostat-board/

Regarding your requirements:

Supports Wi-Fi connectivity to a local area network. - That's easily achievable with ESP8266. You might even skip that whatsoever using You might consider using ESP-NOW https://www.espressif.com/en/products/software/esp-now/overview

Does not require Internet connectivity at any time. - That's fine and easily achievable with ESP8266.

Thermostats automatically detect one another - What is your use case? Why do the thermostats need to see each other? You only need to be able to identify them by name, so the hub code can address them. That one might be a bit tricky and will require some extra coding, maybe use mDNS?

Encrypted transport protocol and password protected. - Since you are not exposed to the Internet, why bother? Anyway - it is doable at the added cost of complexity

Change the temperature from a terminal using REST over HTTP - Easily achievable using the example code I linked above

  • 2
    Hi, and welcome to the site! Please edit this answer to include more detail; as it stands, it's really not an answer, apart from the link. When posting links, please post the essential parts of the article / blog post / whatever, and include the link for reference only. Thank you, and welcome aboard! – anonymous2 Oct 24 at 0:58
  • You're right, they don't need to detect one another: the actual requirement was to individually reference them by name or IP address. – Dave Jarvis Oct 29 at 16:59

Your Answer

 

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.