This (windows) project enables WebTemp
to display UPS data (line voltage, load, battery voltage and temperature).
At the moment WTUPS supports PowerWalker
UPSs on COM and USB ports and also models made by APC
on USB ports. The port the UPS is
connected to is detected automatically.
The software reads line and battery voltages and load percentages directly from the device. My PowerWalker UPS, however, reports a bogus temperature value which
stays at 25 degrees Celsius all the time. Battery charge and remaining time are estimated values.
WTUPS offers the execution of three event-driven batch files with the names "OnACFail.bat", "OnBatteryLow.bat" and "OnACRestored.bat". You can use these
files to start any other tools of your desire.
This file gets started whenever your UPS reports missing/low line voltage. Its content could be:
shutdown -f -s -t 180
This command will shut down the local system in 3 minutes from now. Now, why would we do that? Why would we wait 3 minutes before shutting down the system. Well, power
outages often last for only seconds or minutes. Server environments should be as reliable as possible. And we can cancel a running timeout (read on).
So we'll better wait 3 minutes and only if the power is still gone the system is allowed to shut down.
We can shut down remote systems (which are connected to the same UPS):
shutdown -f -s -t 180 -m \\HOSTNAME
To shut down remote Linux systems we need an additional freeware tool "plink" (which executes commands remotely):
plink -ssh -pw PASSWORD USERNAME@HOSTNAME /sbin/shutdown -h +3
You can- of course- combine as many command lines as you need (and e.g. trigger a backup).
Sometimes the UPS is drained before the timer has passed. But even in this case the device warns about the impending bad. If we hurry there's still
enough time to have all systems shut down. The corresponding commands are (compare to the last paragraph):
shutdown -f -s -t 0
shutdown -f -s -t 0 -m \\HOSTNAME
plink -ssh -pw PASSWORD USERNAME@HOSTNAME /sbin/shutdown -h now
Of course, IF power comes back before the battery is depleted, we'd like to cancel the timers. This is done like this (again based on the three cases
we were looking at):
shutdown -a -m \\HOSTNAME
plink -ssh -pw PASSWORD USERNAME@HOSTNAME /sbin/shutdown -c
Integration into WebTemp
is started, WTUPS automatically transmits measurements to it. UPS temperature will be at T1 (unfortunately on my Powerwalker UPS this is a fake value).
Line voltage is V1, battery voltage V2 and UPS load is Load no. 3. Take a look:
The layout can be changed by editing WTUPS.ini which- by default- is:
Temperature = 1
InputVoltage = 1
OutputVoltage = 2
BatteryVoltage = 3
Load = 3