I have lots of fun automations, but my solar pool heater controller is probably the most unique. It runs using a custom driver/app combo. The driver has all the control logic, and the app syncs the sensor and switch data to the driver.
I built a DIY solar heater box with 100' of coiled black irrigation tubing, and buffed that up by adding eight feet of finned baseboard heating pipe on top. Water flows through the eight feet of heating fins, and then through the 100' of black tubing. There are four small fans keeping the air circulating through the fins when it is active. Everything is painted black inside, and the box is covered with clear vinyl on top. It is mounted on my shed roof, angled to the sun.
A water pump for it is in the shed, and it is connected to Hubitat with a switch to turn the heater pump and the fans on and off.
To control it I have an Ecowitt temp sensor with a probe that gives me the internal temperature of the heater box. I also have an illuminance sensor on my Ecowitt weather station that is mounted on the shed. Then I also have the Ecowitt floating pool thermometer. The nice thing about the Ecowitt sensors is they have a long range to reach back to the house across the yard to the Ecowitt gateway, which then pushes data to the hub though the community integration.
The pump will only run to circulate water through the heater given some rules:
Heater Temperature is 10 degrees hotter than the pool temperature
or Illumination is over 20,000 (enough sun to know I am heating, regardless of box temp)
It also will not run if the Pool temperature is over max pool temp (I'm using 90 degrees, but I have never got there. I have hit 88)
I also do a heater "dump" every half-hour, when the heater temperature is less than 10 degrees hotter than the pool, but greater than pool temp. While it is not hot enough for continuous heating, there are several gallons of water in the tubing that is still hotter than the pool. So with that condition true, I run the pump for a couple minutes every half hour to dump the warm water out of the heater, so it does not go to waste on cloudy days when it is still doing some heating.
The cooler pool water circulating through the heater will cool off the box, so the heater stops based on the box temp rules when the water cools it down, until the box heats up enough to run again. On a really hot sunny day, it just runs continuously, but it generally cycles on and off in the mornings and late afternoon.
I should note, this is a small pool, 3 feet deep X 12 feet. These DIY solar heaters do not do much with larger pools, unless you build several of them. It makes a very noticeable difference with our small pool, however. This is in Vermont, so it extends how long we can use the pool for the season, especially in spring when we get a few hot days, but the pool was still too cold to use before adding the heater.
Driver, if interested