Perl as the UPS API
So I'm again frustrated that the software that came with my UPS is both different from that what I had installed for the prior model UPS and also that the software will not run on Ubuntu 12.04. Googling, I found the Network UPS Tools project http://www.networkupstools.org/. This project produces a sophisticated set of UPS management programs, but also provides a wealth of information regarding UPS protocols.
As I was working through the software and the documentation, I decided I could remove a layer of complication by reading the UPS directly with Perl. By using Perl, my application remains consistent and all I need to swap when I buy the next UPS is the protocol module that communicates with the UPS. Perl gives me all the report and interface tools I need. I can evaluate the UPS, send-emails, and even use FreeSWITCH to call phones and leave messages--far more than could be done with the software that came with the UPS.
So in the same way Perl plus LaTeX is a better production mail-merge solution, the better UPS solution is to use Perl for the sophisticated rule handing and reading the current status of the UPS. Many UPS' use a simple RS-232 connection, or a USB emulation of RS-232 which makes for a simple query.
Check the Network UPS Tools website for many of the UPS protocols: http://old.networkupstools.org/protocols/
Here's an example SES Protocol: ses_test.pl
Here's an example using another protocol: megatec_test.pl