Geyserwise comms protocol?

Has anyone ever reverse engineered the comms protocol of the Geyserwise devices?

I would like to use it as a base for an automated thermostat. Hardware is great, but it would be even better if I could use it directly.

From what I can see, it seems to be a 2400 baud serial protocol (or possibly 1200 baud RZ protocol, given the odd bit patterns). But I can not see any correlations in the packets when I change temp, or press buttons…

If anybody has any previous attempts (even partial) to work from, that would be a great help!



Seems like you need a good scope with UART decode capabilities…

Seriously, I’ve been looking at a few of these and man, looks so cool, but so expensive. The Rigol entry- scope now has this standard, and the Siglent SDS1104X-E does as well (but it’s a 450USD scope). I eventually settled on a entry-level Keysight scope which has some decode capabilities… but I have not tried it yet. Would have been an awesome project to try it on :slight_smile:

I have captured the bitstream, and figured out the framing, but the data is odd. Too much repetition, and not enough variation. Almost seems like some sort of encryption/bit scrambling on top of the comms.

Will probably end up yanking their chip and putting an Arduino in…

1 Like

I would love to be able to talk to my heat pump, but I don’t have expensive scopes. It would be so much easier if companies publish their protocols.

I have looked at it as well.
An idea is to intercept the sensors before that go into the geyser wise. I am hoping for an analog signal but there is a chance that they could have used a ds18b20 sensor for the temperature. You could then use something like a Uno to transmit the data.
But so far , and Ill admit that I am also a bit lazy , I have not tested the idea.

It is a 10k NTC thermistor.

Ah analog then , any idea on the water level?

Only have a TSE and that has no water level sensor… From what I have read of the others, none actually have a water level sensor, although they do have heuristics based on heating rate to raise such errors.

Lol , sorry. I have a low pressure Solar geyser. So it has a level sensor to determine the water level to fill.

@justinschoeman I’ve decoded the 1 wire signal. Its essentially just duty cycle encoded (short ~400us pulse = 0, 800-1400us pulse = 1). 32bits transmitted at a time. LSB first. Temperature packets are 0x1800ZZ00, where ZZ = (temperature in degrees + 15). Another packet has two bits to indicate heater element state.


Excellent work!

Good work @justinschoeman!!
We’ve recently released the Geyserwala Connect which is a full featured smart upgrade to the Geyserwise, it is user friendly for everyday users and great as an automation driver because it offers full local integration.
Product: Thingwala : Geyserwala Connect
Integration: Thingwala : Geyserwala Connect : Integration

1 Like

If I did not rip out one Geyserwise, it could not go Wifi, with your product it could have … too late now, as it is on a Shelly.

Second GW I converted to TUYA, I hate the App, but it works for the folks, for me to remotely check.

But if I read between the lines, one can get a 2nd hand Geyserwise, pick it up for cheap, and convert it to Thingwala for an “extension in life”.

Will keep this in the back of my mind … when geysers pop again.

@cvschalk Excellent. I have been able to decode after a struggle with figuring out when the packet stream starts. However my temperature offset is 25 instead of 15.

Have written a Tuya python script which connects to anything Tuya with some manual setup but then publishes it to MQTT in Home Assistant compatible way. It also allows control of most settings that can be set via Tuya.

This works well with Geyserwise Max Tuya board. You can then control the Geyserwise Max from within Home Assitant and read all the data.

Needs to be run as a service on an Ubuntu device. Should really set it up as an add-on for Home Assistant so it runs inside there. Still a few issues where some devices (not the Geyeserwise) loses comms.

You can then get this sort of dashboard setup. Currently seeing how to set it up to use up excess PV power in day to boost temperatures with the excess PV power. Haven’t build the automation yet.

Thanks for that.

I stopped using it … now use NodeRED and Shelly. If the Tuya geyser app gives me any drama, it is gone, replacing it with a Shelly.

Using NodRED I’m switching the other geyser on based on spare power from the Victron system.

If Eskom draw is <400w and panels are generating > 3500, switch on the Shelly. Why 400w draw some may wonder, cause it is a 3kw element, I find that the ideal spot to check to keep it on, so what it takes a few watts from Eskom, the solar system is maxed out.