Controlling Multiple UPSes on one Machine
Author: Kern Sibbald

# Controlling Multiple UPSes one one Machine

## General

You may want to use your server to control multiple UPSes. With apcupsd version 3.8.3 or later, this is possible by proper configuration and by running one copy of apcupsd for each UPS to be controlled.

A multiple UPS configuration might be configured like the following diagram:

                   Multi-UPS Configuration (apcupsd 3.8.3 only)

               ---------------------   serial port    ------
              |                     | <============> |      |
              |  Computer A running |   Power        | UPS  |
              |   two copies of     | <============= |  1   |
              |     apcupsd         |                 ------
              |                     |   serial port   ------
              |                     | <============> |      |
               ---------------------                 | UPS  |
                         |                      ==== |  2   |
                         | Ethernet             ||    ------
                         |                      ||
               ---------------------            ||
              |                     |           ||
              |  Computer B running |           ||
              |    apcupsd in       |   Power   ||
              |    slave mode       | <===========
              |                     |
              |                     |
               ---------------------

## Configuration

The way to accomplish the above is to ensure that none of the critical files used by each of the two copies of apcupsd are the same. By using suitable configuration options, this is possible.

### The First Copy of Apcupsd

For example, to configure and install the first copy of apcupsd, which controls a UPS and Computer A, one could use the following configuration:

    ./configure \
      --prefix=/usr \
      --sbindir=/sbin \
      --with-cgi-bin=/home/http/cgi-bin \
      --enable-cgi \
      --with-css-dir=/home/http/css \
      --with-log-dir=/etc/apcupsd \
      --with-serial-dev=/dev/ttyS0 \
      --enable-pthreads \
      --enable-powerflute

This is pretty much a "normal" installation using many of the defaults. Once built and installed, this would control the first UPS and cause a shutdown of the system when the batteries are low. This copy of apcupsd will be started and stopped automatically when the system is booted and halted.

### The Second Copy of Apcupsd

To configure and install the second copy of apcupsd, which controls the second UPS and Computer B, you could use the following configuration:

    ./configure \
      --prefix=$HOME/apcupsd/bin \
      --sbindir=$HOME/apcupsd/bin \
      --enable-cgi \
      --with-cgi-bin=$HOME/apcupsd/bin \
      --with-log-dir=$HOME/apcupsd/bin \
      --with-pid-dir=$HOME/apcupsd/bin \
      --sysconfdir=$HOME/apcupsd/bin \
      --with-lock-dir=$HOME/apcupsd/bin \
      --with-pwrfail-dir=$HOME/apcupsd/bin \
      --with-serial-dev=/dev/ttyS1 \
      --enable-pthreads \
      --with-nis-port=7001 \
      --disable-install-distdir

Note, in this case, we use considerably more configuation options to ensure that the system files are placed in a different directory ($HOME/apcupsd/bin). We have also selected a different serial port and a different NIS (Network Information Server) port. And finally, we have used the --disable-install-distdir option, which prevents make install from doing the final system installation (i.e. the modification of the halt script) since this was previously done.

### Important Steps after Installation of the Second Copy

After the make install of the second copy of apcupsd there are a number important steps to complete. You must either remove or modify the file $HOME/apcupsd/bin/apccontrol, so that it will not shutdown Computer A when the battery of UPS 2 is low. One suggestion is to copy examples/safe.apccontrol into $HOME/apcupsd/bin/apccontrol.

Another important step is to find a way to shutdown Computer B when UPS 2's battery is low. Probably the simplest way to do this is to edit $HOME/apcupsd/bin/apcupsd.conf on Computer A so that this second copy of apcupsd becomes a network master. Then install a standard slave configuration on Computer B.

Please remember that if UPS 1's batteries are exhausted before UPS 2's batteries, Computer B may not be properly shutdown. Thus there are certain risks in such a configuration. That said, these configurations can be very useful for powering electronic equipment and such.