Floor heating controller - brainstorming

I just bought an apartment with floor heating. Currently, there are bi-metal based thermostats installed in every room. 6 of them control one circuit, one controls 3 circuits, the actuators are just set in parallel. All thermostates are connected with normal 3-wire power cable, with one unused wire in PE coloring.

Since these things do not work too great, I got the idea of replacing everything with a self built solution:

  • Each thermostat will be replaced with a device consisting of a BME280 (or maybe BME680) and an OLED display in a §D printed wall mount. I can use the power wires for powering them and the PE wire a a command channel to the base.
  • at the circuit distributor with the actuators, I'll put a board with 9 SSRs and probably an ESP32 for controlling everything.

Generally, I have a plan and am able to get everything going, but I would like to get some input on a few things.

  • Ideas on improvement?
  • Ideas on the data connect? I thought of slow UART. Since I have only one wire, I cannot use anything differential.
  • Any suggestions on how to drive the line? will an ATMEGA at 3.3V be enough to reliably drive slow UART over power cable at maybe up to 20m distance?
  • Any suggestions on how to receive the signal? I need to receive from at least 7 thermostates. Go with software UART on the ESP32, or add dedicated receiver chips (ATTINYs?) and signal to the ESP32 via I2C?

At least 2 wires are required for data transfer.

Never use power line wires for other purposes, or you risk that your devices will burn as soon as somebody will establish proper power distribution.

Or treat it as data-over-powerline so the Arduino doesn't know or care if there is mains voltage on the wire.

DrDiettrich:
At least 2 wires are required for data transfer.

In your favor, I assume that this is not comolete nonsens but you just did not get that I would use the L and N wires for 5V DC supply, so there would be ground wire.
With GND, 5V and DATA, of course data transmissiin is possible, even two way (which I don't need). With 1-wire parasitic power mode, I wouldn't even need the third cable.
I should probably just not directly connect the MCU to the wire, optimally, but maybe a better protected buffer.

Never use power line wires for other purposes, or you risk that your devices will burn as soon as somebody will establish proper power distribution.

Unrealistic. It is a dedicated cable running from an outlet socket to floor heating central. Someone who wildly cuts and connects cabkes would have long put 400V somewhere, before he burns my thermostat.
"Establishing proper power distribution" by color would currently build an installation that shorts main when the room gets too cold, by the way.

Or treat it as data-over-powerline so the Arduino doesn't know or care if there is mains voltage on the wire.

Homebrewing a power supply and a data-over-powerline connection into an outlet socket sounds way safer ...

Please provide a complete circuit diagram, your description is only confusing.

ElCaron:
Since these things do not work too great,

First thing you need to do is document that with numbers - changes in outdoor temperature, changes in room temperature, response to thermostat settings etc - over two or three weeks. Keep in mind that underfloor heating will be slow to respond and that has nothing to do with the type of thermostat.

When you have data on the performance of the present system you will be in a position to draw up the requirements for the replacement and you will be able to compare the results with the performance of the present system.

I suspect it will not be as easy to get an improvement as you may think.

...R

PS. If the present system is old you may be able to buy off-the-shelf improved control units. Don't be fooled into thinking you can do it cheaper if you put even a minimum hourly value on your time.

PPS. Make sure you can put the system back the way it is now if your project does not work.

PPPS. Check with your home and contents insurer and your landlord if DIY heating controls are acceptable. If they aren't you will have to pay a professional to install an acceptable system before you can sell the apartment.

Please provide a complete circuit diagram, your description is only confusing.

This. 6 times like this, and then one with 3 actuators in parallel. The actuators are little motors that run on AC and fully close and fully open the valve with very little current over about 3min. "PWM" with these things and a floor heating is on the scale of 30min periods. (One reason to PWM these instead of half-opening the valve is that it works better with ultra-efficient dynamic pumps.)
I already put on the check list that my SSRs have to be able to deal with the low current.

First thing you need to do is document that with numbers - changes in outdoor temperature, changes in room temperature, response to thermostat settings etc - over two or three weeks. Keep in mind that underfloor heating will be slow to respond and that has nothing to do with the type of thermostat.

A few of these thermostats are downright broken. They also behave differently in every room and there does not seem to be any way to calibrate them. I replaced one, but I kind of want something more intelligent, with accurate sensor readings and integration into the home automation. I absolutely know the physics of a floor heating.

I suspect it will not be as easy to get an improvement as you may think.

I would expect that it is quite easy to get the same performance as a bi-metal based bang-bang controller, seeing that is about 3 lines of code to simulate one. That would already be an improvement, since I had remote control and consistent sensors. From there, I could work my way to a PID controller with above-mentioned very slow PWM.

If the present system is old you may be able to buy off-the-shelf improved control units. Don't be fooled into thinking you can do it cheaper if you put even a minimum hourly value on your time.

The issue is that current intelligent system usually want 3 wires for mains. I am willing to put a 5V signal on a PE-colored wire, but not 230V mains. If I use PE-colored wires for GND and actually put them on earth potential, this would not cause a safety issue even IF someone would interrupt the cable somewhere in the wall and randomly decides to use it as PE.
Some models have batteries and only need two wires, but I want to avoid batteries. They are also quite crappy looking and have no smart features. I assume they switched the bi-metallic switch with a relay, a (questionable) sensor and put on buttons and an cheap LCD.
If anybody knows an of-the-shelf solution with these requirements, go ahead.

PPS. Make sure you can put the system back the way it is now if your project does not work.

That should be no issue. I am not cutting any cables.

PPPS. Check with your home and contents insurer and your landlord if DIY heating controls are acceptable. If they aren't you will have to pay a professional to install an acceptable system before you can sell the apartment.

This is my apartment. There is no landlord. Assume that insurance is fine.

El Caron,

It's an ambitious project and one that I'm sure you're aware that you have to be careful. Since we don't know your system currently and all the values we are talking about, we can only give limited input while blindly trying to understand. Such as we have no idea about the current you need for the motors and actuators or the signals involved so it's hard to suggest any sort of switching.

My dad's house has underfloor heating but yours seem extra complicated with zones and such. At the very least you can improve your system by putting in better zone sensors... I'm not a fan of bimetallic sensors.

I suggest you build a test system where you can try out the scenarios and test run everything so you wont have frozen pipes one morning.

It's do-able but the scope of this project is hard to predict as only you know the actual needs and challenges.

Please keep us updated on the progress, perhaps we can better help with individual challenges you face.

wolframore:
It's an ambitious project

Honestly, with a little PCB design and coding skills, I do not consider it THAT challenging. It is basically just a bunch of temperature sensors and relays. To get to the current state, it is essentially just a few lines of programming.

I am clear on most of it, but there are a few things that I would like to have input on. Mainly, I am asking here to avoid flooding the General Electronics subforum with related but separate electronics questions. Maybe I should note them down a bit more clearly:

  • I need to switch AC in the low milliamp range, but reasonably often say, 2-4 times per hour, 24/7. Any suggestions on an SSR that works with these currents? 3.3V preferred, but I could low-level switch around that, I will send 5V there anyway and regulate down for more stable supply

  • I want to send a slow digital signal over a single, 20m long unshielded wire (no RS422 differential transmission possible). What would be good way to do that? Slow UART, 1-wire IC?

such as we have no idea about the current you need for the motors and actuators or the signals involved so it's hard to suggest any sort of switching.

Current: 10mA mains and below. Think of this unit.

Signals: Temperature signalling every few minutes from the wall units to the main control unit. I could essentially Morse it out, but with 20m of power cable, I am concerned about capacitance and noise, so I would at least put in some beefy buffer in front of the pin.

My dad's house has underfloor heating but yours seem extra complicated with zones and such. At the very least you can improve your system by putting in better zone sensors... I'm not a fan of bimetallic sensors.

That is what I am thinking. I can also improve balance between the 3 zones that are currently controlled by one thermostat.

I suggest you build a test system where you can try out the scenarios and test run everything so you wont have frozen pipes one morning.

It is a middle apartment, there is really no danger of anything freezing over. In the other other extreme, there is not much danger in maxing it out, since the whole warm water system is low temp, so even at max, it will not damage anything.

The problem with underfloor is there are very long lags and it will be hard to get anything better than the on off control . You could , I guess, model the room and heat loss and make a predictive model , no idea of the value.

For your job, I would look at smart stats - something that will work in its own right , but you can then add a layer over the top to , say modify the set point of the local controllers . That way you are optimising, but if ( when) it falls over then it will work on it’s own. Also you don’t have to alter any existing wiring, just replace the stats .

  • I need to switch AC in the low milliamp range, but reasonably often say, 2-4 times per hour, 24/7. Any suggestions on an SSR that works with these currents? 3.3V preferred, but I could low-level switch around that, I will send 5V there anyway and regulate down for more stable supply

There are a couple factors involved here... I am guessing again but you must be talking about the switching current to actually initiate the "gate"?

There's also the current that you are turning on... what is it? Is it AC? Voltage, current???

I know this is clear to you but not so much for us that are just reading what you are sharing.

ElCaron:
This is my apartment. There is no landlord. Assume that insurance is fine.

Even if there is no landlord you have a duty of care to the owners of the other apartments in the building.

I don't care if you have or have not insurance - but you should IMHO.

...R

wolframore:
There are a couple factors involved here... I am guessing again but you must be talking about the switching current to actually initiate the "gate"?

No. It is the ac current @230V that is required to turn the valves and is supposed to be switched with SSRs. I am mentioning this because most SSRs have minimum currents above that.

Would anyobe have a helpful answer regarding data transfer if I would say I switch over to 24V DC valves, because I could just switch thise with MOSFETs?

Anyway, I move the one burning question to the General Electronics forum.

wolframore:
Please keep us updated on the progress, perhaps we can better help with individual challenges you face.

I started the project and finished an initial design of a central controller. Put the KiCAD files on github: GitHub - kvoit/FloorHeatingController_HW
Will not bother making screenshots, if somebody is interested, clone the repo. It's not like anybody bothered a lot with my individual challenges I had already mentioned ...
Digikey library required.

Short version:

  • The controller goes on a DIN rail in an electrical box. A 128x64 LCD will fit into the usual opening quite well. Can connect to 10 actuators and at least 10 thermostats (since each port is an open drain network, depending on the protocol multiple thermostats could be supported on one port).
  • I will switch to 24V actuators. They are almost cheaper than proper SSRs and I can fit everything on a 10x10cm^2 board, which would not have been easy with 230V because of the trace clearances.
  • I will connect the thermostats with an open drain connection driven by ISO1540 I2C isolators. They give reasonable protection and I can use 5V and pullups for up to 35mA. Will cook up a protocol for bidirectional master/slave data transmission when the rest is done.

Small update on the state of the project. ESP flashes, isolated external IOs work (mostly, two GPIOs where reserved, but I included more than I needed) ... still waiting for some parts for the rest, though.

looking good! 8)

Little update, it is done to a working state and installed.

Hardware (Pictures above)
Software

I have not implemented a PIDController yet, but it supports configurable on/off PWM frequencies for the BangBangController and temperature reads from MQTT (raw and JSON).
Next step is probably moving some code into separate libs, for example I will certainly reuse the Observer pattern class for the MQTT connection.