Geyserwise WIFI module integration (Request)

Ive uploaded a version 2.

Please check if it works for you.

Thanks, it is working now. I can switch Geyser on and off via HomeAssistant and see the temperature, still need to setup the rest.
3 things I’ve noticed, not sure if it is something I’m doing wrong.

  • Collector temp is not showing
  • Solar diff temp is incorrect
  • Pump is always On
    image

Hi. No. Solar diff is max 15.

Something doesn’t look right. Is yours a TSE?


Somethi

Yes, TSE-TUYA. The same as on your photo earlier

And you have outside panel? That’s the collector.

Not sure why your data is off. Pump is also related to the panel outside.

And solar diff.

They are all related.

Yes I do have a collector, currently on 34 Celcius.
I see the new code has “element_hours” added to the published results

Yes. Element hours is on newer versions of board it seems. Hence why it wasn’t working as data length changed. 8 bits added.

Is it still not working? I have a friend coming today to collect a panel and he has a TSE from 2016

Will let you know if it works

For me the most important function is being able to switch off and on as well as to be able to read the temperature. Collector temp and temperature difference is not a big issue.

Hi Johann.
Which Sonoff device did you use?
(TH Origon, THE Elite, TH10 / TH16)
Would love to know how it is working out.
I have had a similar idea for a while, but did not know you could use their temp probe with Sonoff smart switches. I want to monitor and control the temp of the geyser based on a schedule, and turn off geyser during load shedding so it doesn’t drain the batteries on the inverter when insufficient PV solar.
I already have a Geyserwise TSE setup on a Thermal Solar Geyser, so probably replace that with Sonoff TH device and a Sonoff Power device to measure the consumption.

Thanks - I did this and its working great. localtuya for local access and fast home assistant access. Normal Tuya app for cloud access (as and when needed). Next step I need to automate my geyser schedule around loadshedding. I have the ESP integration and have the loadshedding schedule in HA. Any tried and testing automation yamls you can share for doing this?

I used the history_stats built in integration in home assistant to count the time the element is on, per day. This gives me a run time throughout the day, which I use as a proxy for my electricity spend for my geyser.

Hi,

Thought I would add my setup to the discussion. I also went the route of removing the WBR and soldered a ESP32-C3 in its place. Thanks Jack for the pics showing which pins go where, it was a big help!

But instead pf going the custom firmware route I installed ESP Home and used the tuya component to get the board working. For those who are interested here is my complete ESP Home configuration file.

esphome:
  name: geyserwise
  friendly_name: GeyserWise
esp32:
  board: esp32-c3-devkitm-1
  variant: esp32c3

# Disable serial logging
logger:
  baud_rate: 0

# Enable Home Assistant API
api:
  encryption:
    key: ***
 
ota:
  password: ***

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Geyserwise Fallback Hotspot"
    password: ***

captive_portal:

uart:
  rx_pin: GPIO21
  tx_pin: GPIO20
  baud_rate: 9600

tuya:

sensor:
  - platform: "tuya"
    name: "Collector Temp"
    sensor_datapoint: 108
    unit_of_measurement: '°C'

  - platform: "tuya"
    name: "Geyser Temperature"
    sensor_datapoint: 10
    unit_of_measurement: '°C'

  - platform: "tuya"
    name: "Element Runtime"
    sensor_datapoint: 109
    unit_of_measurement: 'hrs'

  - platform: "tuya"
    name: "Error Code"
    sensor_datapoint: 20

  - platform: "tuya"
    name: "Element Status"
    sensor_datapoint: 13

  - platform: "tuya"
    name: "Pump Status"
    sensor_datapoint: 101

number:  
  - platform: "tuya"
    name: "Geyser Block 1 - Max Temp"
    number_datapoint: 103
    min_value: 30
    max_value: 65
    step: 1
    unit_of_measurement: '°C'

  - platform: "tuya"
    name: "Geyser Block 2 - Max Temp"
    number_datapoint: 104
    min_value: 30
    max_value: 65
    step: 1
    unit_of_measurement: '°C'

  - platform: "tuya"
    name: " Geyser Block 3 - Max Temp"
    number_datapoint: 105
    min_value: 30
    max_value: 65
    step: 1
    unit_of_measurement: '°C'

  - platform: "tuya"
    name: "Geyser Block 4 - Max Temp"
    number_datapoint: 106
    min_value: 30
    max_value: 65
    step: 1
    unit_of_measurement: '°C'

  - platform: "tuya"
    name: "Geyser Antifreeze Temp"
    number_datapoint: 107
    min_value: 0
    max_value: 10
    step: 1
    unit_of_measurement: '°C'

  - platform: "tuya"
    name: "Geyser Solar Diff Temp"
    number_datapoint: 102
    min_value: 7
    max_value: 15
    step: 1
    unit_of_measurement: '°C'

switch:
  - platform: "tuya"
    name: "Geyser"
    switch_datapoint: 1

select:
  - platform: "tuya"
    name: "Mode"
    enum_datapoint: 2
    optimistic: False
    options:
      0: "Holiday"
      1: "Normal"

The baud rate needs to be set at 9600. I tried other values but the component stopped working.

Also if you use the marked UART (RX/TX) pins, these are the same pins that ESP Home uses for its serial logger so you need to disable the logger in the configuration.

This has worked very well for me and I am happy with the results.

1 Like

I’ve figured this out now - posting incase anybody else is having the same issue.

So the default available attributes are based on “standard instruction” there is an option to change to “DP instruction” which modifies the standard payload and includes all attributes. To do this, you need to go to the device, and select “Configure Control Instruction Mode” then select “DP instruction mode”

Will continue to post my learnings as I go.

what benefit does this unlock?

Depends on your setup and how much info you want to control/report on. The standard instruction only exposes 3 attributes, if you want the additional attributes (14 in the case of the Geyser Wise Max) then you need to use DP.

Could you list it?

On the geyserwise max, Its the same as what @HomeGeorge linked above -

1 Like

I came across this post a few days ago. I bought a TSE1 Tuya board and replaced the Tuya module with a ESP-12F.

I am running ESPHome on my Home Assistant and I added the chip to it using code gtb put up earlier.

After installing the board it worked, I could turn on the geyser, check the temperature, set the max temp etc.

After a reboot of the ESP it stopped getting data. I can still manage the ESP fine but no data.

This is what I get.

[19:16:19][C][tuya:041]: Tuya:
[19:16:19][C][tuya:046]:   Configuration will be reported when setup is complete. Current init_state: 0
[19:16:19][C][tuya:049]:   If no further output is received, confirm that this is a supported Tuya device.
[19:16:20][E][tuya:433]: Initialization failed at init_state 0
[19:16:29][E][tuya:433]: Initialization failed at init_state 0
[19:16:44][E][tuya:433]: Initialization failed at init_state 0

Logger is disabled

logger:
  baud_rate: 0

UART is setup

uart:
  rx_pin: GPIO3
  tx_pin: GPIO1
  baud_rate: 9600

Anyone else having issues with ESPHome?

I resoldered the ESP and it is working now.

[10:44:41][C][tuya:041]: Tuya:
[10:44:41][C][tuya:056]:   Datapoint 1: switch (value: ON)
[10:44:41][C][tuya:062]:   Datapoint 2: enum (value: 1)
[10:44:41][C][tuya:058]:   Datapoint 10: int value (value: 48)
[10:44:41][C][tuya:062]:   Datapoint 13: enum (value: 1)
[10:44:41][C][tuya:064]:   Datapoint 20: bitmask (value: 0)
[10:44:41][C][tuya:062]:   Datapoint 101: enum (value: 0)
[10:44:41][C][tuya:058]:   Datapoint 102: int value (value: 7)
[10:44:41][C][tuya:058]:   Datapoint 103: int value (value: 60)
[10:44:41][C][tuya:058]:   Datapoint 104: int value (value: 55)
[10:44:41][C][tuya:058]:   Datapoint 105: int value (value: 55)
[10:44:41][C][tuya:058]:   Datapoint 106: int value (value: 55)
[10:44:41][C][tuya:058]:   Datapoint 107: int value (value: 1)
[10:44:41][C][tuya:076]:   Product: '{"p":"euzjsk7e9aqwvfjk","v":"1.0.0","m":0}'

I just came across this thread now. I have a geyser wise max so do I just get this PCB and install a new esp chip into it?