As far as I can tell, the control protocol is undocumented binary UDP, only partially reverse-engineered. They have a so-called SDK but the documentation is a slide deck whose most informative page starts with "Create a Visual Studio project..."
I see a bunch of things on Github (and none on CPAN) but I can't tell what most of them even purport to do. So I'm not asking you to google it for me, I would like to know if you have actually done this thing.
I'm waiting for mail to deliver one to us "any day soon".
If it ever arrives before my death I'll report here as we also need a better automation.
I have made use of these Arduino libraries to build tally lights:
https://github.com/kasperskaarhoj/SKAARHOJ-Open-Engineering/tree/master/ArduinoLibs
this person has attempted to document the API, oddly entirely in screenshots:
https://www.skaarhoj.com/discover/blackmagic-atem-switcher-protocol
There are Node.js packages that I use with a raspberry pi to do command line input changes on an ATEM switcher. It has worked reliably for a few years now. I haven't touched it since originally setting it up.
I'm using this one.
I can't say if it's the best way but it's reliable and bash scriptable and that's all I cared about.
I have never touched anything Node, and probably never will, not only because server-side JavaScript is the only thing stupider than server-side Java, but because it's impossible to use Node without also using their not-invented-here package manager, which I understand to be a notorious rootkit.
I sort-of got a house of cards working:
1: atemOSC is a proxy that translates the Atem UDP protocol to some other random-ass protocol called OSC, I guess?
2: sendosc is a command-line interface to that new protocol.
Fun facts:
1: atemOSC is a macOS GUI program, that runs in the foreground, to do this proxying. Not a background daemon. So, you know, good luck keeping that running. And access to the GUI is totally a normal, trustworthy thing that a network proxy should require. No red flags here, nope.
2: atemOSC phones home at runtime to github.com. I assumed it was simply surveilling me and disallowed the connection, but nope, it 100% fails to function if it can't connect to github. Fuck you very much.
3: Both programs believe that error messages are a sign of weakness, and produce none.
So that's pretty much a non-starter so far.
I would not normally suggest this as it solves a slightly different problem via massive overkill, but that seems like a step up from your current situation so I'm doing it anyway:
Bitfocus Companion (github) is intended to turn the Elgato Stream Deck into a useful product by assigning actions to button presses. The buttons themselves are optional; it has a web interface which presents you with a fake button panel, but it will also allow you to "push" the buttons with a GET.
The list of hardware it claims to control is long, and contains the ATEM Mini. I have not used it on one, but I have used it on the full-size ATEMs (and a bunch of other stuff), and in my experience it seems to actually do the things it claims.