Elk as Differential Controller for Solar HW


Active Member
Hi Experts --

So, I have a solar H/W heater on order, and as I was buying all the parts, I got to thinking: "Why should I pay $150 for a differential controller, if, my Elk M1 can probably do the same work." I was hoping someone could double check my work/RP rules or point out any gotcha-s.

A Solar H/W differential controller measures two temperatures: at the solar panel, and at the storage tank. They are simple devices that turn on an electrical outlet (eg: for a water pump) when the temperature at the flat-plate collector ("panel") is ~10 degrees hotter than the water in the tank. It turns off the electrical outlet when the temperature at the panel is only 5 degrees hotter than the tank. They usually have two additional rules:
1) don't turn on (or turn off) when the panel is below a set limit (eg: below 90 degrees)
2) don't turn on (or turn off) when the tank is already super-hot (eg: above 140 degrees)

The way I thought to solve this:

Get the temperatures
  • Whenever every 2 minutes, get the temperatures from the panel and tank. Store the temperatures into counters and increment two counters to reflect +5 and +10 degree variables.
    c_waterheater_10 = temp_waterheater
    c_waterheater_5 = temp_waterheater
    c_waterheater_10 += 10
    c_waterheater_5 += 5
    Toggle Output 208
Rule to turn on
  • Whenever Output 208 is on
    and temp_waterheater < 140 degrees
    and temp_panel > c_waterheater_10
    and temp_panel > 90 degrees
    THEN turn on solar pump (output 207)
Rules to turn off
  • Whenever Output 208 is turned off
    and output 207 is turned on
    and temp_panel < 90 degrees
    then turn output 207 off
  • Whenever Output 208 is turned off
    and output 207 is turned on
    and temp_waterheater > 140 degrees
    then turn output 207 off
  • Whenever Output 208 is turned off
    and output 207 is turned on
    and temp_panel< c_waterheater_5
    then turn output 207 off
Since I have a booster pump, I actually have to turn on two outputs. The second output only needs to be on for a minute, then turned off.
  • Whenever Output 207 is turned on
    then turn output 206 on for 1 minute
  • Whenever Output 207 is turned off
    then turn output 206 off
NOTE: The rule to turn off output 206 may not be necessary, given that output 206 is on for only 1 minutes, and the system could only cycle on/off every four minutes.

I think: Every 2 minutes, I'm going to check the temperatures. Every four minutes, I'll either turn the solar HW system on or off, depending on the conditions.

Cost savings ($190 for differential controller + probes) + power to drive
Costs: (unknown) for relays and Elk temperature probes.
Advantages: I can turn the system off/on remotely, I can also purchase a 30amp relay for the H/W heater's heating element and have the two interact (eg: don't turn on water heater burner if the solar portion is operational)
Disadvantages: I can't think of any


I need a couple inexpensive relays and temperature probes.
-- I know Elk sells a 9100, but I don't need/want X-10 control. Anyone recommend a couple 120VAC (5-10amp) relays that can be driven from an Elk Output?
-- Any news on when the Elk 1-wire interface will be released? Other options? (the sensors have to measure the temperature of water in a pipe, and as long as they can measure the temperature of a pipe, I'll be okay)
You might check out:


I don't have temp sensors where i can play with the rules, but i think i had trouble coming up with the section you're trying to deduce in your first block of rules... for one, the greater/less than comparison seem to only allow you to operate on custom setting in the latter argument, not counters... trying to remeber the other issues i saw (i know one specific to me was that elk's proprietary temp sensors wouldn't work due to location of the M1G)

But if you get this to work - i'd love to know...

The upper temperature limit on the temp sensor from Elk would be a problem. I had a solar hot water collector and it could get to the 200 degree F range. Too hot for the ELK temp sensor and it work.
Hi Politics123,

KIS (keep it simple).

And I suppose, the waterheater has additional electric heating. Just in case there is no sunny day or night. And I think the thermostat for the electric-heater is set to a value, a little below your lower water temp limit.

I would write only 3 rules:

AND t-waterheater < t-panel
AND t-waterheater < 140°F
THEN solar-pump ON
Remark: this will work even below 90°F, but even then you get help from the sun, if there is any

AND t-waterheater => t-panel
THEN solar-pump OFF
Remark: If there is no more hot water on the roof, avoid pumping hot water on top ! Make the max time for this case so short, that the hot water from the heater cannot travel the complete way to the roof. This will limit losses. However: if the triggertime is longer, you are not loosing a significant value of the efficiency. Because at first the temp-differences are small.

AND t-waterheater > 140°F
THEN solar-pump OFF
Remark: just to prevent overheating. But IMHO I would set the limit higher, to 190°F. This way I can grab as much sun-energy as possible. And there are mixing-valves available to mix the temperature for your warmwater-pipes down with additional cold water. Cooper-pipes can handle more than boiling water, some plastics not more than 140°F. I'm not a plumbing-expert.

So far, at a first glance. This should be improved by rules which are counting the events and the times, as

WHENEVER every 60 sec
AND solar-pump is ON
THEN ADD 1 to counter#a(solar-pump-minutes)

WHENEVER solar-pump becomes ON
THEN ADD 1 to counter#b(solar-pump-starts)

WHENEVER every 60 sec
AND t-panel > 140°F
THEN ADD 1 to counter#c(overheat-minutes)


Add rules for displaying and weekly/monthly/yearly resetting the counters as you like an overview.

Let me add:
with the ELK-M1G -only the "gold" model- you can set an input to operating-mode 34.
Then the input is converting the voltage to a digital number.
I don't know the resolution and accuraty but it sure is sufficient, even if it is "only" an 8-bit AD converter.
In this mode the input can be a voltage from 0 to 12 Volt.
So you can use nearly all kinds of temp-sensors with very little other hardware.
There should be no reason why you cant do this.

I am going to do something similar. You should consider using the temp sensor that come with the unit. Might be a little easier to install than trying to fit something else.

I am keeping my controller (comes with the tank and panels), and letting the elk monitor the temp for my internal display. I will have to remove te pu;; resistor for this as the controller has its own voltage supply and I just need to measure the voltage and not the resistance.

As for the rules, keep them simple and to the point.


The logic is simple, but how are you going to put that into elk rules... The temp comparison only allows comparing a temp input to either:
fixed value / customer setting / counter

and you can't change the custom settings via rules unless i'm missing something... Looks like you can set the counter a temp probe, but i'd be worried about sequencing. i.e. every thirty seconds, etc - you don't know which rule will fire first, so the counter may not get updated until after the rule fires... Ok, so maybe that's not a big deal after all, you lose X seconds of heating... Can you verify this is what you were thinking?

I'm also really interested in some temp probe ideas that would withstand the temps on a black solar panel in florida. As per spanky, i'm sure that could reach close to 200F up there...