Overcomplicated Geyser Power Control

So after asking lots of questions (Asking questions)
I finally bit the bullet in Dec and put up some panels on my roof.

Thanks to @justinschoeman ive been running my geyser “fancy smart” for a while with a Geyserwise Thermostat (Justins Thread)

The basics of my geyser control from HA

Various schedules with various heat targets based on our living habbits, nice hot showers in the morning, and a little heat at night for the dishes and so forth.

Unfortunately I bought my Inverter before Sunsynk were a thing( or I knew about them) and the blue stuff was vastly outside of my budget. But my little inverter has been keeping the lights on quite well.
Ill deal with it if it blows up one day.

Again budgets constraint I run 12x FIAM FLB400 batteries that I got at a great price.

With the panels on my roof (Thanks again @JacoDeJongh) I moved my geyser to the inverter DB and fitted a 2KW element to keep within the confines of what I can produce on solar and the inverters capabilities.

I quickly realised that clouds are a pain in the buttox and I was discharging my batteries more than I wanted to during the first few days of testing.

I remembered reading about another geyser controlled with an SCR
So I purchased this 4000W SCR

I know there are digital versions and i could build something, but well and truly I was lazy and slapped a servo onto the knob of the pot.

For testing and Beta1.0 I ended up with lots of insulation tape and this.

Testing with an incandecent bulb

The next version was a little neater and in a suitable enclosure.
Ill replace some of the temporary supports with some 3D printed parts. and ensure there is adequate venting, for now it operates with the lid off.

Geyser running at full power and draining battery.
WhatsApp Image 2022-02-19 at 11.22.45 AM

Turned down to 80% to allow some charge back to the battery and operation.
WhatsApp Image 2022-02-19 at 11.22.54 AM

And what it looks like based on the automations in place on a cloudy day like today.

It shuts down below 50% as I dont see the point in running it that low, and waits for PV to recover before turning on again.

Just sharing my aim to be as “solar efficient” as I can.


I was happy to just have the geyser on a dynamic thermostat in Home Assistant. This is very impressive.

For the next revision, look into using a digital potentiometer. You could probably wire some kind of ESP8266 (eg Wemos D1) directly to the proper model (using SPI most likely), or even something with a built-in counter where you just pulse up and down (eg X9C103). Then you can Wi-Fi control it.

Thanks @plonkster Always enjoy your insight into projects.

I have thought about that, but I would need to build my own SCR circuitry then, or replace the current pot with a digital pot. Right now I have that exact control, ESPHome on a D1Mini turning the servo. I guess a revision could be a smaller form factor.

I plan on extending the project to include a source selector.
Based on this design. On-Line Source Selector

For really bad days, I plan to switch the geyser to grid but have the rest of the house run from my inverter. I might look at a digital pot then.

Thanks @calypso I try and keep myself busy, then I dont think of silly things to build.

EDIT: Ive replaced the last picture with a slightly longer timeline to give a better view of operation

I’m not fully understanding this project…
I’m guessing that you are trying to power the geyser with available PV power but please describe how you are doing this… (I’m unable to join the dots… :frowning: )

Hi @Richard_Mackay yes I am powering they geyser with excess PV.
My axpert does not blend AC and PV, and to keep my battery usage to a minimum as I have old LA style batteries that id like to keep a little longer while saving for Lithium units I try and keep my battery usage to a minimum.

Here is an example of my geyser running at 900W odd instead of the full 2KW not taking into account power factors.


So the element would produce less heat, but still be able to put heat into the water instead of shutting it off completely.

Very impressive! Where does this gadget operate from? Is it wired in at the geyser? Or somewhere in your db?

Hi @Swartkat I have it wired just before the geyser, after my sonoff POW and isolator, so I can keep track of the power usage. It does have a fused output to the geyser.

Some more feedback from today.
Happy to say I got close to the Target Temp for my “solar” timeline

From roughly 30C

But in the DB?

Else you would have to run outside or climb into the ceiling where the geyser is every time you want to ease of the gas?

Nope, in the ceiling, so if you look at the pictures, I have a servo attached to the “gas pedal”
And control the servo via ESPHome so I can turn it up or down with ease.

Now if this could track forecast + current load…

It’s essentially a high-power dimmer switch with a stepper motor attached :slight_smile:

But how is the control done? (or is it manual?)
If this is to be automated then somehow the available power needs to be established… :question:

Let me elaborate on control.

as @plonkster has said it is essentialy a dimmer switch with a servo stuck to it using double sided tape, coz thats what ive done :sweat_smile:

The servo is attached to a D1Mini flashed with Esphome and integrated into home assistant.
Along with this I have various power usage integrations in home assistant.
My axpert inverter gives me load, battery discharge, battery charge and pv input data
A sonoff pow on my geyser circuit gives me power usage for that circuit
A current clamp on my mains feed gives me total grid feed.

I have remote control of the servo from Home Assistant, so no climbing ladders, walking to the DB or anything, I have full control from my phone or PC.

So I will continue fine tuning the setup, but here is the basis that I currently control it on.

The various automations I have in place include
Geyser runtime schedule (10AM to 4PM with a target temperature of 74C)
I do not track solar forecast, and I am not sure if other inverter brands can tell you what available PV is.
But the easiest way is to assume all pv is always available until proven otherwise.
If the geyser is running and the inverter reports that I am using battery power (not enough pv) then the geyser power is turned down by 10s every 30s until I dont use battery power or I reach 50% and turn the geyser off. Once turned off, the geyser is not allowed to turn on for 15Min, this gives my batteries some time to regain the slight charge used from pv. After this the geyser will turn back on. If they geyser runs at a lower Wattage, it has to run at that “dimmed” level for 15mins before the automation will add 5% power back untill I start dischaging the battery again or reach 100% power.

If it is a crappy pv day the geyser will run for 30s every 15mins.
I have setup a new automation that will cater for a “Max” number of attempts.

I have not had this running long enough for this automation to be used.

@calypso @Richard_Mackay @Swartkat I hope this explenation helps.


A snippet of the power usage section from my explanation.

Ok! This sounds much like the gizmos that you find you need after you’ve bought your fancy grid tie inverter! (I speak from painful personal experience)
Proportional control (variable as opposed to on/off) of the current that the element draws is quite sophisticated. In the control business this is normally done by a PID controller. This is a classic analog controller which might be available in Home Assistant…
A simpler approach now that you’ve reduced your element size would be to measure the PV power by another panel (e.g. you could use a Consol Jar light PV panel). Connect a resistor to load the PV output voltage so that it only provides full voltage when the sun is 100%.
This will track the sun’s power. If you can connect this into your system you’ll be able to determine the sun’s power and know when you can switch on your geyser element…
This should provide the ability to simply control with a contactor rather than using proportional control.

You implemented here, very low duty :stuck_out_tongue_winking_eye: PWM with fuzzy logic control loop….


1 Like

@C.Potgieter I’m going to give it to you. Legend one man! Like what you did.