Geyserwise WIFI module integration (Request)

This is more of a request to see if anyone can assist with integrating a Geyserwise Thermostat into Home Assistant ? I have seen many threads, out of the Home Assistant forum requesting and talking about it, but no solution or even confirmation of whether its possible.

The Geyserwise unit I have has a WIFI module that links to an online geyserwise portal, whereby graphs / dashboard / timing shedules and temperature can be set, but this online portal and IOS app is so poorly designed and unfriendly. If combining it within home assistant portal is possible, it would make this a much better product.

I am willing to share a login to the geyserwise portal for anyone willing to check the backend and possibility. I dont believe there is any API.

My last resort would most likely involve scrapping the geyserwise and converting the thermostat probe into a smart unit with the SONOFF TH and a relay, which I have seen written in the forums a few times.

In hope as Im sure there are many other South African Geyserwise users that would appreciate some integration assistance.
DEMO Login email : [email protected]
DEMO Password: demo1234

Holing thumbs.


I presume you haven’t asked then? Perhaps you should?

I hadn’t been able to reach them, due to faulty contact form on their website and me directing an email to 2 recipients whom both thought each other would reply to me. Eventually after several days I received a call wanting to know if my questions where answered. After a bit of a chat, its confirmed no API is available and no short term plans to implement an API or more user friendly interface. They did say they received multiple enquiries from developers regarding my same question about an API and wanting to develope something into various home automation solutions out there.

I am no further in knowing if there is a work around this or if anyone is wanting to task this for the many geyserwise users from South Africa using Home Assistant.

For now, ill struggle through this or attempt the other options Ive seen in replacing the unit with a SONOFF TH16 and a relay. Will watch this topic to see if there is any movement.


I have also been calling them multiple times to get some info, always with promises of call backs, but never happened. So I built a scraper for the geyserwise which will pull info from the website and provide a json interface to interact with the geyser. You can now get your geyser stats and also manually override the geyser from HA.


Code is available here: GitHub - carels/geyserwiseha: Geyserwise Scraper module to integrate with Home Assistant

Downside is it runs in php and you either need to host the code yourself, or you can run it off my server.

Would be great if someone can convert this to python and get it working via HACS :slight_smile:



Great work so far. It might make the geyser wise slightly more appealing to me now as most of my device purchases are decided by if I can integrate it into HA.

It’s funny how we both decided that hot tub icon is a good fit for a geyser icon :grin:

1 Like

I was so thrilled to see your reply on this topic this morning. I was literally about to pull out by geyserwise and replace it with a solid state relay and sonoff TH16 with the temperature probe.

I adjust all my code to fit with your implementation and it works wonderfully in reading the information, but im struggling to post the changes with the rest command config via the switches.

Is there a way I can debug ? ive literally taken your code and only updated the url to point to my webserver url where i host your code . Is there a time delay? as I know doing it manually on their portal a popup appears saying it could take up to 30 seconds to take effect ?


1 Like

Hi Brett,

Glad to be able to help! I’ve been in the same boat with a TH16 & relay, but the thermometer probe is a bit of a pain to get accurate readings with. Also, if like my previous geyser you have a leak on the element contacts it will fry the entire relay!

Re your issue, when you send a command you should see something like this in geyserwise.log:
[2021-06-20 19:19:11] Running action: switchgeyser with value: on
[2021-06-20 19:19:17] {“action”:“switchgeyser”,“value”:“on”,“result”:“OK”}

If you don’t get that last line then something went wrong with the command. As you can see in the example it can take about 6 seconds for the action to complete and I have seen a delay of up to 30 seconds from the command being issued to it reflecting on Geyserwise’s interface. You can also click there on the commands button and see which commands have been sent. If it doesn’t show there then it is possible your unit id is incorrect (or something else went wrong). Perhaps check that and if it still doesn’t help it may be better to open an issue on github and I’ll look at it there.

Kind Regards,

I need to take a step backward and ask where to enable the logging to geyserwise.log ?
I dont think its the unit id as its working reading the data and displaying it, I only cannot post the manual button on to turn on the geyser, so it must be in issue in my rest_command section. Im sure once I can check the logs as you describe I can find the issue.

BTW, i did come right with the secrets file in using the secrets.yaml in reading from the geyserwise portal.

payload: ‘{“user”: “!secret geyserwise_username”, “pass”: “!secret geyserwise_password”, “unit”: “xxxx”}’

where xxxx is your unit ID, I tried the unit ID in the secrets file and it breaks the task, so try your side with just the username and password in the secrets.yaml

EDIT: OK, reading through your php files, looks like the geyserwise.log should appear on my webserver as indicated in geyserwise.lib.php line 41 fopen("…/logs/geyserwise.log", “a”);
… but no such log file is created and have checked folder permission , still stumped.

geyserwise gui shows no commands received in last hour.

Sent you a DM with better explanation as to why it’s not working, but in short, the issue is with your payload as it doesn’t actually process the secrets file as you would expect. So best is to place your username & password in there and then it should work. This will also explain why you can’t push any changes to the geyser.

I should probably have done the logging better, it was a bit of an after thought to debug some issues easier. You can change the location of the log file to wherever your logs are, so you can change it to ‘/var/log/httpd/geyserwise.log’ for instance which is where most systems’ apache logs are based. If you are using a windows server that would be elsewhere of course. :slight_smile:

Finally, thanks to you carels for the work and support today. Im up and running with some automations and safety controls around your scraper. This is what my card looks like at the moment. The only hiccup I have is that the Main Geyser Manual Override button does not remain on or indicate on, when turned on. Its a bit of a wait for it to actually turn on the element , sometimes between 30-40 seconds even , but I can live with this for now. It takes this long for Geyserwise to actually turn on the geyser from their GUI. Not the best system which they really need to look at updating. Even their mobile app is absolutely terrible to work with.

1 Like

Looks very nice, love your boost function :slight_smile:

BTW, for the switch to indicate on, check that your value_template for the switch is correct, should be:

value_template: "{{ state_attr('sensor.geyserwise_stats', 'manualOn') }}"

I normally pop this in the Developer → Template section to see if the info is actually correct. If it doesn’t display correctly you may have a different name for the geyserwise_stats sensor?

Kind Regards,

My value_template is exact as you have it above. The switch works for turning the geyser on/off, but the switch lovelace button always shows off, as indicated in my image above, even though the Element turns on. I think its a delay timeout as the geyser takes anywhere between 10 and 50 seconds to actually turn on.

Developer → Template section shows the correct info when turned on and off, its just that silly button. Im reading more and looking at the option to create a text file where it writes a status on/off for further reference? dont know if im heading in the wrong direction ?

I changed the value_template to this and it seems to all be working:

value_template: "{{ is_state_attr('sensor.geyserwise_stats', 'geyserelement', 'on') }}"

This is great guys and has convinced me to give it a go, hopefully there willl be some further development in python and eventually an API from Geyserwise

Thanks for this guys. So glad there is people here that can assist in things like this.

I need a bit more assistance that I read through the guide and this post. I am honest to say I now the bare basics to these things and have been using the add-ons in HA for most of my test and only getting into the thick of things now.

So I have installed xampp to host the files locally and copied the github file into the htdocs directory. From here I need someone to help and take the steering wheel and drive me in the right direction. What else needs to be changed as I did add the first section of the guide to configuration.yaml but when checking the code it get’s errors.

Thanks in advance

Hi Folks, Geyserwise have now released an API, which I have integrated into. A simple REST interface

Go to the Geyserwise website. You should get a Pop-up. Simply follow those instructions for API access


Hi @moodiejo

Does the API allow you to set the controller settings - like timer settings, etc, as well as read the information (like temperature)?

I am thinking of purchasing a Geyserwise system but it has to connect fully (both ways - read and control) to Home Assistant otherwise it is a no go for me.

Also, if control is both ways - do you know if you can run the Geyserwise system without the display then?


Hi, I would suggest you get the latest API spec from Geyserwise, go to Geyserwise | RMA

On the website, you will receive a prompt, just follow the steps and the API Guide will be sent to you. (I have an outdated version, which I know has changed)

Then, you get 2 different versions of geyserwise, to use the API you need the WIFI version, and not the normal one. The WIFI version does not by default come with a ‘monitor’, however, I do feel you still need this, for a quick view, instead of opening the mobile, opening apps etc.


@moodiejo , Have you successfully implemented this via the API ? Could you share your implementation instructions ?

I received my API detauls from geyserwise but am no wiser on what to do with it.


Any progess on this? Something I saw in another thread was that people are trying to intercept the signals going through the data cable from the control panel and the relay/thermostat. That would be the best option as it doesn’t even need to WiFi module.

Has anybody upgraded the Geyserwise Max to the Geyserwise Wifi module. It seems like it should be a drop-in replacement? Would the WiFi module support the existing Geyserwise Max control/display? It seems the installation instructions are essentially identical as an example.