If outside temp < 0.5C system turns ON. OFF if outside temp > 1.0C.
When system is ON the bottom of the Frisbee is maintained above freezing by turning on and off a short length of deicing cable.
When ON it's 60 watts but at -5C outside temp it only needs to be ON 10% of the time or 6 watts continuous so very little power if controlled this way.
Assuming significant thermal gradient required from the bottom of the Frisbee to the top of the water surface the setpoint is dependent on the outside temp, temp2. Code for this:
absoutside = fabs(temp2); //absolute value of outside temp. fabs is for floating point
if (enable == 1) setpoint = 4.0 + (absoutside/4.0); // setpoint temp
We will see if this change keeps it ice free when it's really cold for minimal power.
Temperatures are the average of 10 values every 6 seconds from the previous 60 secs. New values only accepted if within 2 degrees of the average to eliminate the odd bad value.
I could let it freeze overnight when the birds don't use it as the controller has a clock but it I'm not sure that's a good idea.
We sometimes see -35C so the NodeMCU controller also has a temperature controlled heater. The controller and components are inside a small plastic box that sits on an aluminum plate with a USB 5 Watt coffee heater under it and another temperature sensor on top of it. All of this is wrapped in house insulation inside a big plastic box. It hardly needs any power to maintain between 5 and 10C.
The ESP32 Cam board runs warm so I put some insulation behind it. You can read the temp with a handheld infrared temp sensor from the front. It's around 15C above ambient. A little warmth also keeps condensation off the front of the fake security cam.
NodeMCU components and program is based on this project: https://hackaday.io/project/171474-wifi-waterbed-temperature-control
ESP32 Cam mounted inside a dollar store fake security cam: https://hackaday.io/project/175152-detect-water-leaks-with-a-10-wifi-webcam
5,000 Volt Birdfeeder: https://hackaday.io/project/172250-5000-volt-birdfeeder
All my control devices are monitored and controlled from web page HMIs hosted on the devices. HTML web page code is part of the control code in Arduino IDE.