UPS - Computer(s) communication options
I'll try to elaborate on UPS to computer communication requirements and their implications on architecture decisions.
First, I think there are two major categories of use cases: single computer and multiple computers.
In the case of single desktop computer, a lot of desired functionality in the area of battery interface logic is already implemented in operating systems for laptop computer uses. I would even state that the desired goal of this project is to be able to make a desktop computer indistinguishable from laptop as far as power management goes. That includes AC/battery mode indication, different power saving modes, auto shutdown at low battery etc.
- For Windows, the some details are available here: https://docs.microsoft.com/en-us/windows-hardware/design/component-guidelines/battery-and-charging
- For Unix/Linux: TBD, help needed
In this case, a USB connection to computer would probably work best, with endpoint implementing UPS HID profile (see http://www.usb.org/developers/hidpage/pdcv10.pdf for more details)
For multiple machines, Ethernet would probably be best (Is it? RFC), with custom protocol and driver on the computer side to handle messages and initiate shutdown. However, due to extra complexity of this case I'd like to raise the question if we really want it as part of version 1.0. The use case of multiple computers can be easily supported by having separate Upside device for every machine.
Additionally, the "user experience" of having a battery powered and chargeable device is intimately familiar to everyone these days: mobile phones, tablets, laptop computers. So this architecture will be easy for users to understand, unlike network of machines receiving commands from central battery unit.
So in my view the aim for the project would be to provide a "conversion kit" that turns any computer into battery-powered device. (The phrasing could be better, suggestion welcome :)