What is the best device to use for a geyser controller

Good day,

I am new to HA.,

I am looking for advice on how I can best control my electric geyser from home assistant.

I am running the house on Solar wth battery backup, so I want to be able to change the set point temperature and the times which it runs etc. Also turning it off when load int he house increases.

What would be the ideal hardware for this?

Relay with on / off ( I would probably run it through a contractor)
Power Monitoring (contactor might mess with this)
Temperature monitoring of the water in the tank.

( I would like to add a heat pump to this in the near future, and possibly control that as well as the element?)

Keen to see what you peeps have all done on your systems.