Nice Idea to use the dimmer to regulate the power to the cooker, it is great when you have that option to regulate the amount of heat being applied.
In my case, I was trying to regulate the heating and cooling of my house, to get rid of the overshoot and undershoot, as I could not change the amount of heat or cool that is produced by regulating the AC or the furnace when they are running.
My solution was to write a thermostat driver that uses anticipator settings, so the heat comes on just before falling to setpoint, and the heat turns off just before it get to setpoint. This takes the swing out of the time it takes for the heat to actually start heating, and for how long it continues heating after the furnace turns off (baseboard hot water heat).
I use two offsets from setpoint - one just above setpoint, and one just below setpoint. Those are used to start and stop the heat/cool timed cycles. So, if heat is set for 70, and the upper offset is .08 degrees, a heating cycle starts and runs for X minutes (cycle seconds is a setting), when temp is below 70.08 and temps are falling. Then the cycle ends, and it turns off the heat, and it starts a wait period (wait seconds is also a setting). During the wait period, it checks if the temp begins to rise again, and if it does, the heat cycling ends. If not, at the end of the wait period, it runs another timed cycle, then waits and checks again for rising temps before it stops running the heat cycles.
The lower offset is used for ramping. The heating ramps if below this offset, meaning heat will stay on continually until it reaches the lower offset. So, it then turns off the heat at the lower offset before reaching setpoint, to not go over setpoint. Once temps are over the lower offset ramping temp, the normal cycling will kick in, and start a heat cycle if the temp starts falling again, with temps still being below the upper offset to kick-off a timed heat cycle. Cooling is just the opposite of heat, with cooling starting at the lower offset, and ramping stopping at the upper offset.
This has worked incredibly well for me, and my house temperature stays within .5 degrees from setpoint. Way better the the Honeywell T6s were doing, as I was getting 3-5 degree swing from them, no matter what setting I used for "cycles per hour" in the thermostat settings.
By tweaking the offset settings and cycle times in the driver, I can get any heating zone dialed in to use this method. However, outside temps play a big role in how fast the house heats or cools. To compensate for this, I use an outside temp sensor to automatically adjust the heat cycle times and the wait times from the initial settings. Cycle times for heat increase as it gets colder out, and decrease as it gets warmer, and the opposite for when the thermostat is in cooling mode. I found a pretty simple equation for how much to adjust the cycle times based on outside temps.
So, even without the ability to modulate the amount of heat being applied, and even when the heating being applied does not just instantly change after being turned on or off, there are ways to maintain a consistent temperature with anticipator setpoints and timed cycles where PID cannot be used.