This thread documents my geyser hardware/controller:
https://mybroadband.co.za/forum/threads/esphome-geyserwise-smart-thermostat.1231463/
As mentioned later in the thread, I can't believe that I didn't consider just replacing the analog thermistor with a digital ds18b20 sensor directly, it probably would have fitted just fine, and worked perfectly! That said, what I described has worked without incident for the last year or so, so I'm in no rush to make any changes!
Then, I also have my Sunsynk 8kW inverter integrated into HA via the kellerza/sunsynk addon.
And my geyser automations look like:
automations.yaml
Code:
- id: '1679584991721'
alias: Geyser monitor
description: Sends a notification if the geyser is turned off for more than 10 minutes
when the grid is on
trigger:
- platform: homeassistant
event: start
- platform: state
entity_id:
- climate.geyser_thermostat_climate
to: unavailable
for:
hours: 0
minutes: 2
seconds: 0
- platform: state
entity_id:
- climate.geyser_thermostat_climate
to: 'off'
for:
hours: 0
minutes: 2
seconds: 0
condition:
- condition: and
conditions:
- condition: or
conditions:
- condition: device
device_id: a0863b1e65b28ac16feaf400faa670d9
domain: climate
entity_id: climate.geyser_thermostat_climate
type: is_hvac_mode
hvac_mode: 'off'
- condition: state
entity_id: climate.geyser_thermostat_climate
state: unavailable
for:
hours: 0
minutes: 1
seconds: 0
- condition: numeric_state
entity_id: sensor.grid_voltage
above: 200
action:
- service: notify.persistent_notification
data:
message: Please investigate!
title: Geyser is off
- id: '1679686222156'
alias: Geyser preset boost
description: Sets the geyser thermostat to boost during the day, if the battery
is charging above 2000W for 5 minutes and PV power > 2500
trigger:
- platform: numeric_state
entity_id:
- sensor.battery_power
for:
hours: 0
minutes: 5
seconds: 0
below: -2000
- platform: numeric_state
entity_id: sensor.battery_soc
above: 70
condition:
- condition: and
conditions:
- condition: numeric_state
entity_id: sensor.battery_soc
above: 70
- condition: numeric_state
entity_id: sensor.battery_power
above: 2000
action:
- device_id: a0863b1e65b28ac16feaf400faa670d9
domain: climate
entity_id: climate.geyser_thermostat_climate
type: set_preset_mode
preset_mode: boost
mode: single
- id: '1679686300431'
alias: Geyser preset eco
description: Sets the geyser thermostat to Eco if the battery is discharging
trigger:
- platform: numeric_state
entity_id: sensor.battery_power
for:
hours: 0
minutes: 5
seconds: 0
above: 1000
- platform: numeric_state
entity_id: sensor.battery_soc
for:
hours: 0
minutes: 5
seconds: 0
below: 80
- platform: time
at: '16:00:00'
condition:
- condition: state
entity_id: climate.geyser_thermostat_climate
attribute: preset_mode
state: boost
action:
- device_id: a0863b1e65b28ac16feaf400faa670d9
domain: climate
entity_id: climate.geyser_thermostat_climate
type: set_preset_mode
preset_mode: eco
mode: single
- id: '1680150473945'
alias: Geyser power on to Eco mode
description: Sets the geyser to eco mode on poweron
trigger:
- platform: state
entity_id:
- climate.geyser_thermostat_climate
from: unavailable
condition:
- condition: time
after: '16:00:00'
before: '10:00:00'
weekday:
- mon
- tue
- wed
- thu
- fri
- sat
- sun
action:
- device_id: a0863b1e65b28ac16feaf400faa670d9
domain: climate
entity_id: climate.geyser_thermostat_climate
type: set_preset_mode
preset_mode: eco
mode: single
- id: '1684337408034'
alias: Geyser off during night-time load shedding
description: Turns the geyser off during loadshedding at night
trigger:
- platform: state
entity_id:
- binary_sensor.grid_connected
for:
hours: 0
minutes: 5
seconds: 0
from: 'off'
to: 'on'
- platform: state
entity_id:
- binary_sensor.grid_connected
for:
hours: 0
minutes: 0
seconds: 0
from: 'on'
to: 'off'
condition: []
action:
- if:
- condition: and
conditions:
- condition: state
entity_id: binary_sensor.grid_connected
state: 'off'
- condition: time
after: '16:00:00'
before: 09:00:00
then:
- device_id: a0863b1e65b28ac16feaf400faa670d9
domain: climate
entity_id: climate.geyser_thermostat_climate
type: set_hvac_mode
hvac_mode: 'off'
else:
- device_id: a0863b1e65b28ac16feaf400faa670d9
domain: climate
entity_id: climate.geyser_thermostat_climate
type: set_hvac_mode
hvac_mode: heat
mode: single
- id: '1685989607006'
alias: Geyser disables Inverter Timer
description: Turns off the timer when the geyser turns on, between 16:00 and 09:00
trigger:
- platform: state
entity_id:
- climate.geyser_thermostat_climate
attribute: hvac_action
- platform: time
at: 09:00:00
- platform: time
at: '16:00:00'
condition: []
action:
- if:
- condition: and
conditions:
- condition: state
entity_id: climate.geyser_thermostat_climate
attribute: hvac_action
state: heating
- condition: or
conditions:
- condition: time
after: '16:00:00'
- condition: time
before: 09:00:00
then:
- service: switch.turn_off
data: {}
target:
entity_id: switch.use_timer
- service: number.set_value
data:
value: '0'
target:
entity_id: number.grid_charge_battery_current
else:
- service: switch.turn_on
data: {}
target:
entity_id: switch.use_timer
- service: number.set_value
data:
value: '50'
target:
entity_id: number.grid_charge_battery_current
mode: single