I got a ‘free’ Cosy smart thermostat a few years back as part of a deal from my then energy supplier. They don’t appear to offer a public API to control it, so I built a little work around to allow it to be controlled using Home Assistant. It’s a Node app (wrapped up in a Docker image) which uses puppeteer to log onto the Cosy web app, and pull the current status or set the mode. It listens for MQTT messages and acts accordingly.
Doubt there’s many of these thermostats knocking around, so not sure if anyone else will find it useful, but just in case (or if anyone is interested in the code to do something similar with another device), I’ve stuck it on GitHub: https://github.com/Saggerus/HA-cosy-server
It’s a little bit buggy at the moment (gives thed odd timeout as I haven’t added error handling).
Your efforts and your GitHub repo inspired me to create something similar. Its a NuGet package for C# .NET that allows Cosy devices to be controlled using their non-public API (its the same API that their Geo Cosy Web App calls) rather than using a headless browser, which was a bit better for my use case.
I just needed it so help me create an IFTTT app so that I can set the heating based on outside triggers like calendar events, emails, etc. I wapped it up in a NuGet package just in case its useful for anyone.