Getting information from your serially attached UPS under Windows XP shouldn’t be that hard – especially if you have a branded unit like APC and you don’t want to use APC’s software. So step up to the mark APCUPSD !
This excellent piece of software does exactly that. It allows you to run a windows service and get the status information from your UPS. So after downloading if from www.apcupsd.org and installing on windows – the first thing required is to tell the software how the UPS is connected. In my case the straightforward default of UPSCABLE smart , UPSTYPE apcsmart and DEVICE /dev/com1 were fine to allow me to start the service and see the information I wanted – namely
APC : 001,052,1232
DATE : Mon Aug 07 17:22:50 GMTST 2006
HOSTNAME : camera
RELEASE : 3.12.3
VERSION : 3.12.3 (26 April 2006) cygwin
UPSNAME : UPS_IDEN
CABLE : Custom Cable Smart
MODEL : SMART-UPS 2200
UPSMODE : Stand Alone
STARTTIME: Mon Aug 07 12:01:10 GMTST 2006
STATUS : ONLINE
LINEV : 230.1 Volts
LOADPCT : 8.3 Percent Load Capacity
BCHARGE : 100.0 Percent
TIMELEFT : 161.0 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME : 0 Seconds
MAXLINEV : 231.4 Volts
MINLINEV : 228.8 Volts
OUTPUTV : 230.1 Volts
SENSE : High
DWAKE : 000 Seconds
DSHUTD : 020 Seconds
DLOWBATT : 02 Minutes
LOTRANS : 196.0 Volts
HITRANS : 253.0 Volts
RETPCT : 000.0 Percent
ITEMP : 33.7 C Internal
ALARMDEL : 5 seconds
BATTV : 55.0 Volts
LINEFREQ : 50.0 Hz
LASTXFER : Line voltage notch or spike
NUMXFERS : 0
TONBATT : 0 seconds
CUMONBATT: 0 seconds
XOFFBATT : N/A
SELFTEST : NO
STESTI : 336
STATFLAG : 0x07000008 Status Flag
DIPSW : 0x00 Dip Switch
REG1 : 0x00 Register 1
REG2 : 0x00 Register 2
REG3 : 0x00 Register 3
MANDATE : 12/13/98
SERIALNO : GS9850016168
BATTDATE : 12/13/98
NOMOUTV : 230
NOMBATTV : 48.0
EXTBATTS : 0
FIRMWARE : 80.11.I
APCMODEL : MWI
END APC : Mon Aug 07 17:22:51 GMTST 2006
## apcupsd.conf v1.1 ##
#
# for apcupsd release 3.12.3 (26 April 2006) – cygwin
#
# “apcupsd” POSIX config file
#
# ========= General configuration parameters ============
#
# UPSNAME xxx
# Use this to give your UPS a name in log files and such. This
# is particulary useful if you have multiple UPSes. This does not
# set the EEPROM. It should be 8 characters or less.
#UPSNAME
# UPSCABLE
# Defines the type of cable connecting the UPS to your computer.
#
# Possible generic choices for are:
# simple, smart, ether, usb
#
# Or a specific cable model number may be used:
# 940-0119A, 940-0127A, 940-0128A, 940-0020B,
# 940-0020C, 940-0023A, 940-0024B, 940-0024C,
# 940-1524C, 940-0024G, 940-0095A, 940-0095B,
# 940-0095C, M-04-02-2000
#
UPSCABLE smart
# To get apcupsd to work, in addition to defining the cable
# above, you must also define a UPSTYPE, which corresponds to
# the type of UPS you have (see the Description for more details).
# You must also specify a DEVICE, sometimes referred to as a port.
# For USB UPSes, please leave the DEVICE directive blank. For
# other UPS types, you must specify an appropriate port or address.
#
# UPSTYPE DEVICE Description
# apcsmart /dev/tty** Newer serial character device,
# appropriate for SmartUPS models using
# a serial cable (not USB).
#
# usb Most new UPSes are USB.
# A blank DEVICE setting enables
# autodetection, which is th best choice
# for most installations.
#
# net hostname:port Network link to a master apcupsd
# through apcupsd’s Network Information
# Server. This is used if you don’t have
# a UPS directly connected to your computer.
#
# snmp hostname:port:vendor:community
# SNMP Network link to an SNMP-enabled
# UPS device. Vendor is the MIB used by
# the UPS device: can be “APC”, “APC_NOTRAP”
# or “RFC” where APC is the powernet MIB,
# “APC_NOTRAP” is powernet with SNMP trap
# catching disabled, and RFC is the IETF’s
# rfc1628 UPS-MIB. Port is usually 161.
# Community is “private”.
#
# dumb /dev/tty** Old serial character device for use
# with simple-signaling UPSes.
#
UPSTYPE apcsmart
DEVICE /dev/com1
# LOCKFILE
# Path for device lock file.
LOCKFILE /apcupsd/etc/apcupsd
#
# ======== Configuration parameters used during power failures ==========
#
# The ONBATTERYDELAY is the time in seconds from when a power failure
# is detected until we react to it with an onbattery event.
#
# This means that, apccontrol will be called with the powerout argument
# immediately when a power failure is detected. However, the
# onbattery argument is passed to apccontrol only after the
# ONBATTERYDELAY time. If you don’t want to be annoyed by short
# powerfailures, make sure that apccontrol powerout does nothing
# i.e. comment out the wall.
ONBATTERYDELAY 6
#
# Note: BATTERYLEVEL, MINUTES, and TIMEOUT work in conjunction, so
# the first that occurs will cause the initation of a shutdown.
#
# If during a power failure, the remaining battery percentage
# (as reported by the UPS) is below or equal to BATTERYLEVEL,
# apcupsd will initiate a system shutdown.
BATTERYLEVEL 5
# If during a power failure, the remaining runtime in minutes
# (as calculated internally by the UPS) is below or equal to MINUTES,
# apcupsd, will initiate a system shutdown.
MINUTES 3
# If during a power failure, the UPS has run on batteries for TIMEOUT
# many seconds or longer, apcupsd will initiate a system shutdown.
# A value of 0 disables this timer.
#
# Note, if you have a Smart UPS, you will most likely want to disable
# this timer by setting it to zero. That way, you UPS will continue
# on batteries until either the % charge remaing drops to or below BATTERYLEVEL,
# or the remaining battery runtime drops to or below MINUTES. Of course,
# if you are testing, setting this to 60 causes a quick system shutdown
# if you pull the power plug. �br /> # If you have an older dumb UPS, you will want to set this to less than
# the time you know you can run on batteries.
TIMEOUT 0
# Time in seconds between annoying users to signoff prior to
# system shutdown. 0 disables.
ANNOY 300
# Initial delay after power failure before warning users to get
# off the system.
ANNOYDELAY 60
# The condition which determines when users are prevented from
# logging in during a power failure.
# NOLOGON [ disable | timeout | percent | minutes | always ]
NOLOGON disable
# If KILLDELAY is non-zero, apcupsd will continue running after a
# shutdown has been requested, and after the specified time in
# seconds attempt to kill the power. This is for use on systems
# where apcupsd cannot regain control after a shutdown.
# KILLDELAY 0 disables
KILLDELAY 0
#
# ==== Configuration statements for Network Information Server ====
#
# NETSERVER [ on | off ] on enables, off disables the network
# information server. If netstatus is on, a network information
# server process will be started for serving the STATUS and
# EVENT data over the network (used by CGI programs).
NETSERVER on
# NISIP
# IP address on which NIS server will listen for incoming connections.
# Default value is 0.0.0.0 that means any incoming request will be
# serviced but if you want it to listen to a single subnet you can
# set it up to that subnet address, for example 192.168.10.0
# Additionally you can listen for a single IP like 192.168.10.1
NISIP 0.0.0.0
# NISPORT
default is 3551 as registered with the IANA
# port to use for sending STATUS and EVENTS data over the network.
# It is not used unless NETSERVER is on. If you change this port,
# you will need to change the corresponding value in the cgi directory
# and rebuild the cgi programs.
NISPORT 3551
# If you want the last few EVENTS to be available over the network
# by the network information server, you must define an EVENTSFILE.
EVENTSFILE /apcupsd/etc/apcupsd/apcupsd.events
# EVENTSFILEMAX
# By default, the size of the EVENTSFILE will be not be allowed to exceed
# 10 kilobytes. When the file grows beyond this limit, older EVENTS will
# be removed from the beginning of the file (first in first out). The
# parameter EVENTSFILEMAX can be set to a different kilobyte value, or set
# to zero to allow the EVENTSFILE to grow without limit.
EVENTSFILEMAX 10
#
# ========== Configuration statements used if sharing =============
# a UPS and controlling it via the network
# The configuration statements below are used if you want to share one
# UPS to power multiple machines and have them communicate by the network.
# Most of these items are for Master/Slave mode only, however NETTIME is
# also used for Client/Server NIS networking with the net driver.
# NETTIME
# Interval (in seconds) at which the slave or client polls the master
# or server. This is applicable to BOTH master/slave and client/server
# (NIS) networking.
#NETTIME 100
#
# Remaining items are for Master/Slave networking ONLY
#
# UPSCLASS [ standalone | shareslave | sharemaster | netslave | netmaster ]
# Normally standalone unless you share a UPS with multiple machines.
# �br /> UPSCLASS standalone
# UPSMODE [ disable | share | net | sharenet ]
# Unless you want to share the UPS (power multiple machines),
# this should be disable.
UPSMODE disable
# NETPORT
# Port on which master/slave networking communicates.
#NETPORT 6666
# MASTER
# IP address of the master. Only applicable on slaves.
#MASTER
# SLAVE
# IP address(es) of the slave(s). Only applicable on master.
#SLAVE slave1
#SLAVE slave2
# USERMAGIC
# Magic string use by slaves to identify themselves. Only applicable
# on slaves.
#USERMAGIC
#
# ===== Configuration statements to control apcupsd system logging ========
#
# Time interval in seconds between writing the STATUS file; 0 disables
STATTIME 5
# Location of STATUS file (written to only if STATTIME is non-zero)
STATFILE /apcupsd/etc/apcupsd/apcupsd.status
# LOGSTATS [ on | off ] on enables, off disables
# Note! This generates a lot of output, so if �br /> # you turn this on, be sure that the
# file defined in syslog.conf for LOG_NOTICE is a named pipe.
# You probably do not want this on.
LOGSTATS off
# Time interval in seconds between writing the DATA records to
# the log file. 0 disables.
DATATIME 5
# FACILITY defines the logging facility (class) for logging to syslog.
# If not specified, it defaults to “daemon”. This is useful
# if you want to separate the data logged by apcupsd from other
# programs.
#FACILITY DAEMON
#
# ========== Configuration statements used in updating the UPS EPROM =========
#
#
# These statements are used only by apctest when choosing “Set EEPROM with conf
# file values” from the EEPROM menu. THESE STATEMENTS HAVE NO EFFECT ON APCUPSD.
#
# UPS name, max 8 characters
#UPSNAME UPS_IDEN
# Battery date – 8 characters
#BATTDATE mm/dd/yy
# Sensitivity to line voltage quality (H cause faster transfer to batteries)�br /> # SENSITIVITY H M L (default = H)
#SENSITIVITY H
# UPS delay after power return (seconds)
# WAKEUP 000 060 180 300 (default = 0)
#WAKEUP 60
# UPS Grace period after request to power off (seconds)
# SLEEP 020 180 300 600 (default = 20)
#SLEEP 180
# Low line voltage causing transfer to batteries
# The permitted values depend on your model as defined by last letter
# of FIRMWARE or APCMODEL. Some representative values are:
# D 106 103 100 097
# M 177 172 168 182
# A 092 090 088 086
# I 208 204 200 196 (default = 0 => not valid)
#LOTRANSFER 208
# High line voltage causing transfer to batteries
# The permitted values depend on your model as defined by last letter
# of FIRMWARE or APCMODEL. Some representative values are:
# D 127 130 133 136
# M 229 234 239 224
# A 108 110 112 114
# I 253 257 261 265 (default = 0 => not valid)
#HITRANSFER 253
# Battery change needed to restore power
# RETURNCHARGE 00 15 50 90 (default = 15)
#RETURNCHARGE 15
# Alarm delay
# 0 = zero delay after pwr fail, T = power fail + 30 sec, L = low battery, N = never
# BEEPSTATE 0 T L N (default = 0)
#BEEPSTATE T
# Low battery warning delay in minutes
# LOWBATT 02 05 07 10 (default = 02)
#LOWBATT 2
# UPS Output voltage when running on batteries
# The permitted values depend on your model as defined by last letter
# of FIRMWARE or APCMODEL. Some representative values are:
# D 115
# M 208
# A 100
# I 230 240 220 225 (default = 0 => not valid)
#OUTPUTVOLTS 230
# Self test interval in hours 336=2 weeks, 168=1 week, ON=at power on
# SELFTEST 336 168 ON OFF (default = 336)
#SELFTEST 336