Not reinventing the wheel
On my previous posts, I made a temperature controller for my brew kettle, and then made it wireless. It took me a fair amount of work, I add to learn how bluetooth worked and how to use Espressif ESP idf libraries for my controller to communicate with my laptop. I coded a small client in python using tkinter gui library, that allowed me to control the target temperature, and set the specific mode on my controller.
Everything worked except that bluetooth was disconnecting often, that my temperature graph was sometime not plotting correctly, the code was a mess and it looked very basic… but it worked. So I used this controller for several brew days without any issues.

My homemade python client for my bluetooth controller. Tkinter style.
In the meantime, and unrelated to homebrewing, I discovered the joy of selfhosting a maximum number of services. It is my new little hobby, and I really like to tinker my home lab so it work exactly as I want. More recently, I discovered Home Assistant. I knew about it before, but I always though I did not need it, as my flat is relatively small, and I do not have a lot of fixtures. I installed it to better control my streaming services, and was blown away by the capabilities. Now I want to do everything in my home with it. Controlling all the lights, my coffee maker and my fridge, you can do a lot of things !
Using ESPHome, you can code and use esp32 board very easily. All the code is done in yaml files, and a lot of already made component are available to simplify your life.
I began to think about my bluetooth temp controller: isn’t it pretty much a thermostat for water? Because home assistant is so customizable, it meant that I could implement the exact behavior my bluetooth card had, using ESPHome, on a brand new esp32 card: it took me exactly one afternoon. When previously I spend week(s) on the C code for the bluetooth one, having 9 .c files, responsible for the bluetooth connection, temperature controller, pid calculation, etc, the yaml needed in order to reproduce the exact same behavior over home assistant had 224 lines.
This works because a lot of it is using prebuild components. PID controls: thermostat component. Temperature readings: sensor component. Bluetooth connection: not needed ! ESPHome takes care of everything over wifi.
For the client: I do not need to code anything. Home assistant is exactly what I need: everything revolves around customizables dashboard, where the components have already nice frontend widgets ready for you:

The home assistant dashboard is much nicer.
Lesson learn: do not reinvent the wheel, just know what exists somehow.