I’ve been playing with Arduino recently to see what it can do for me. I have an old “dummy” UPS, which cannot report its status to the host computer since there is no USB port on it. One of the projects I had in mind is to create “brains” for the dummy UPS with help of Arduino board. The purpose of such UPS brains would be to read internal UPS status by measuring remaining battery capacity, charging/discharging state, battery current, voltage etc. All these readings should be then passed through the USB interface and be interpreted by the host operating system of the computer in the same fashion as it is done with commercial smart UPS (say, by APC).
I did not want to mess with developing hardware drivers for my custom UPS and I wanted it to be “plug-and-play” so I decided, after some research, to implement a HID-compliant interface according to this specification. HID stands for “Human Interface Device” and was originally designed for keyboards, mice, joysticks and similar devices for human input, however it has been extended recently to support power devices such as UPS, batteries and chargers, which can benefit from using the HID standards for intelligent communication with the host computer.