Install apcupsd on FreeNAS

Facebooktwittermail

これからの電力需要と雷シーズンにそなえてAPC RS550を購入しました

いままで使用していたAPC BK350Jがサポートされなくなったのでバッテリー交換もできなく、さらにバッテリーそのものの劣化で瞬電対応ぐらいしかできなくなっていました

1分ぐらいしかバッテリー供給できない状態なんですよね(^_^;

2012-05-01 19:28:13 +0900 Power failure.
2012-05-01 19:28:19 +0900 Running on UPS batteries.
2012-05-01 19:29:20 +0900 Reached run time limit on batteries.
2012-05-01 19:29:20 +0900 Initiating system shutdown!
2012-05-01 19:29:20 +0900 User logins prohibited
2012-05-01 19:29:21 +0900 apcupsd exiting, signal 15
2012-05-01 19:29:21 +0900 apcupsd shutdown succeeded


APC RS550
http://cyber.apc.co.jp/p-BR550G-JP.html?scode=BR550G-JP

購入先はNTT-X Store
http://nttxstore.jp/_II_AP12897199
会員クーポン利用、送料無料で12,800円でした

さて、本題ですがFreeNASにapcupsdをインストールすることになりました
当初はvMA 5.0にapcupsdをインストールしてシリアルケーブルで電源管理を行っていたのですが、今回購入したRS550はUSB接続なのです
そこでvMA 5.0をUSB接続でapcupsdに認識させたかったのですが私の技量ではダメでした

そこで構成を組み替えて
RS550<=(usb)=>FreeNAS(Endeavor NP11)<=(lan)=>vMA 5.0
にしました。そこでFreeNASにapcupsdの必要がでてきたのです

  1. 現在のパーティション構成です
  2. freenas:~# df
    Filesystem 1K-blocks Used Avail Capacity Mounted on
    /dev/da0s1a 1027420 208244 736984 22% /
    devfs 1 1 0 100% /dev
    procfs 4 4 0 100% /proc
    /dev/ad4p1 302732044 19446 278494036 0% /mnt/data
    /dev/da0s2a 2087036 8 1920068 0% /mnt/work

  3. apcupsdをpkg_addでインストールしましたがエラーになります
  4. freenas:~# pkg_add -r -v apcupsd
    scheme: [ftp]
    user: []
    password: []
    host: [ftp.freebsd.org]
    port: [0]
    document: [/pub/FreeBSD/ports/amd64/packages-7.3-release/Latest/apcupsd.tbz]
    —> ftp.freebsd.org:21
    looking up ftp.freebsd.org
    connecting to ftp.freebsd.org:21
    <<< 220 ftp.beastie.tdk.net FTP server (Version 6.00LS) ready. >>> USER anonymous
    <<< 331 Guest login ok, send your email address as password. >>> PASS root@freenas.rootlinks.net
    <<< 230 Guest login ok, access restrictions apply. >>> PWD
    <<< 257 "/" is current directory. >>> CWD pub/FreeBSD/ports/amd64/packages-7.3-release/Latest
    <<< 550 pub/FreeBSD/ports/amd64/packages-7.3-release/Latest: No such file or directory. >>> CWD pub
    <<< 250 CWD command successful. >>> CWD FreeBSD
    <<< 250 CWD command successful. >>> CWD ports
    <<< 250 CWD command successful. >>> CWD amd64
    <<< 250 CWD command successful. >>> CWD packages-7.3-release
    <<< 550 packages-7.3-release: No such file or directory. >>> QUIT
    <<< 221 Goodbye. Error: Unable to get ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-7.3-release/Latest/apcupsd.tbz: File unavailable (e.g., file not found, no access) pkg_add: unable to fetch 'ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-7.3-release/Latest/apcupsd.tbz' by URL pkg_add: 1 package addition(s) failed

  5. 今度はpkg_addにpathを指定してapcupsdをインストールします
  6. freenas:~# pkg_add -v ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-7-stable/Latest/apcupsd.tbz
    scheme: [ftp]
    user: []
    password: []
    host: [ftp.freebsd.org]
    port: [0]
    document: [/pub/FreeBSD/ports/amd64/packages-7-stable/Latest/apcupsd.tbz]
    —> ftp.freebsd.org:21
    looking up ftp.freebsd.org
    connecting to ftp.freebsd.org:21
    <<< 220 ftp.beastie.tdk.net FTP server (Version 6.00LS) ready. >>> USER anonymous
    <<< 331 Guest login ok, send your email address as password. >>> PASS root@freenas.rootlinks.net
    <<< 230 Guest login ok, access restrictions apply. >>> PWD
    <<< 257 "/" is current directory. >>> CWD pub/FreeBSD/ports/amd64/packages-7-stable/Latest
    <<< 250 CWD command successful. >>> MODE S
    <<< 200 MODE S accepted. >>> TYPE I
    <<< 200 Type set to I. setting passive mode >>> PASV
    <<< 227 Entering Passive Mode (193,162,146,4,199,227) opening data connection initiating transfer >>> RETR apcupsd.tbz
    <<< 150 Opening BINARY mode data connection for 'apcupsd.tbz' (418606 bytes). Fetching ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-7-stable/Latest/apcupsd.tbz...x +CONTENTS x +COMMENT x +DESC x +DISPLAY x +MTREE_DIRS x man/man5/apcupsd.conf.5.gz x man/man8/apcaccess.8.gz x man/man8/apccontrol.8.gz x man/man8/apctest.8.gz x man/man8/apcupsd.8.gz x sbin/apcupsd x sbin/apcaccess x sbin/apctest x sbin/smtp x etc/apcupsd/apcupsd.conf.sample x etc/apcupsd/apccontrol x etc/apcupsd/changeme x etc/apcupsd/commfailure x etc/apcupsd/commok x etc/apcupsd/onbattery x etc/apcupsd/offbattery x etc/rc.d/apcupsd x share/doc/apcupsd/apcupsd.pdfWaiting for final status <<< 226 Transfer complete. tar command returns 0 status Done. extract: Package name is apcupsd-3.14.10 extract: CWD to /usr/local extract: /usr/local/man/man5/apcupsd.conf.5.gz extract: /usr/local/man/man8/apcaccess.8.gz extract: /usr/local/man/man8/apccontrol.8.gz extract: /usr/local/man/man8/apctest.8.gz extract: /usr/local/man/man8/apcupsd.8.gz extract: /usr/local/sbin/apcupsd extract: /usr/local/sbin/apcaccess extract: /usr/local/sbin/apctest extract: /usr/local/sbin/smtp extract: /usr/local/etc/apcupsd/apcupsd.conf.sample extract: /usr/local/etc/apcupsd/apccontrol extract: /usr/local/etc/apcupsd/changeme extract: /usr/local/etc/apcupsd/commfailure extract: /usr/local/etc/apcupsd/commok extract: /usr/local/etc/apcupsd/onbattery extract: /usr/local/etc/apcupsd/offbattery extract: CWD to /usr/local extract: /usr/local/etc/rc.d/apcupsd extract: /usr/local/share/doc/apcupsd/apcupsd.pdf Running mtree for apcupsd-3.14.10.. mtree -U -f +MTREE_DIRS -d -e -p /usr/local >/dev/null
    Attempting to record package into /var/db/pkg/apcupsd-3.14.10..
    Package apcupsd-3.14.10 registered in /var/db/pkg/apcupsd-3.14.10

    **********************************************************************
    Read the manual

    /usr/local/share/doc/apcupsd/apcupsd.pdf

    to do site specific configuration assigenments! Especially have a
    detailed look into the chapter describing the shutdown procedure.

    Sample files are installed in /usr/local/etc/apcupsd. These files
    must be copied and/or configured for a proper working apcupsd.
    You need to modify /usr/local/etc/apcupsd/apcupsd.conf as follows:

    For serial cable: DEVICE /dev/cuadX (or /dev/cuaaX for [45.]x)
    For USB cable: DEVICE (yes, leave it blank after DEVICE)

    NOTE that for USB cable you must comment out the line

    device uhid # “Human Interface Devices”

    in your kernel configuration file and recompile the kernel.
    Your keyboard and mouse will still work.

    WARNING USB support on FreeBSD is still considered BETA!

    Add apcupsd_enable=YES to your /etc/rc.conf[.local] to have apcupsd
    starting up at boot time.

    **********************************************************************

  7. apcupsd.confファイルを編集します
  8. freenas:~# vi /usr/local/etc/apcupsd/apcupsd.conf

    ## apcupsd.conf v1.1 ##
    #
    # for apcupsd release 3.14.10 (13 September 2011) – freebsd
    #
    # “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 RS550

    # 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
    UPSCABLE usb

    # 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
    # the best choice for most installations.
    #
    # net hostname:port Network link to a master apcupsd through apcupsd’s
    # Network Information Server. This is used if the
    # UPS powering your computer is connected to a
    # different computer for monitoring.
    #
    # snmp hostname:port:vendor:community
    # SNMP network link to an SNMP-enabled UPS device.
    # Hostname is the ip address or hostname of the UPS
    # on the network. Vendor can be can be “APC” or
    # “APC_NOTRAP”. “APC_NOTRAP” will disable SNMP trap
    # catching; you usually want “APC”. Port is usually
    # 161. Community is usually “private”.
    #
    # netsnmp hostname:port:vendor:community
    # OBSOLETE
    # Same as SNMP above but requires use of the
    # net-snmp library. Unless you have a specific need
    # for this old driver, you should use ‘snmp’ instead.
    #
    # dumb /dev/tty** Old serial character device for use with
    # simple-signaling UPSes.
    #
    # pcnet ipaddr:username:passphrase:port
    # PowerChute Network Shutdown protocol which can be
    # used as an alternative to SNMP with the AP9617
    # family of smart slot cards. ipaddr is the IP
    # address of the UPS management card. username and
    # passphrase are the credentials for which the card
    # has been configured. port is the port number on
    # which to listen for messages from the UPS, normally
    # 3052. If this parameter is empty or missing, the
    # default of 3052 will be used.
    #
    #UPSTYPE apcsmart
    #DEVICE /dev/usv
    UPSTYPE usb
    DEVICE

    # POLLTIME
    # Interval (in seconds) at which apcupsd polls the UPS for status. This
    # setting applies both to directly-attached UPSes (UPSTYPE apcsmart, usb,
    # dumb) and networked UPSes (UPSTYPE net, snmp). Lowering this setting
    # will improve apcupsd’s responsiveness to certain events at the cost of
    # higher CPU utilization. The default of 60 is appropriate for most
    # situations.
    #POLLTIME 60

    # LOCKFILE # Path for device lock file. Not used on Win32.
    LOCKFILE /var/spool/lock

    # SCRIPTDIR # Directory in which apccontrol and event scripts are located.
    SCRIPTDIR /usr/local/etc/apcupsd

    # PWRFAILDIR # Directory in which to write the powerfail flag file. This file
    # is created when apcupsd initiates a system shutdown and is
    # checked in the OS halt scripts to determine if a killpower
    # (turning off UPS output power) is required.
    PWRFAILDIR /var/run

    # NOLOGINDIR # Directory in which to write the nologin file. The existence
    # of this flag file tells the OS to disallow new logins.
    NOLOGINDIR /var/run

    #
    # ======== 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.
    # 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 3

    # Time in seconds between annoying users to signoff prior to
    # system shutdown. 0 disables.
    #ANNOY 300
    ANNOY 120

    # Initial delay after power failure before warning users to get
    # off the system.
    #ANNOYDELAY 60
    ANNOYDELAY 30

    # 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
    #NETSERVER off

    # NISIP
    # IP address on which NIS server will listen for incoming connections.
    # This is useful if your server is multi-homed (has more than one
    # network interface and IP address). Default value is 0.0.0.0 which
    # means any incoming request will be serviced. Alternatively, you can
    # configure this setting to any specific IP address of your server and
    # NIS will listen for connections only on that interface. Use the
    # loopback address (127.0.0.1) to accept connections only from the
    # local machine.
    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 /var/log/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 with more than one machine

    #
    # Remaining items are for ShareUPS (APC expansion card) ONLY
    #

    # UPSCLASS [ standalone | shareslave | sharemaster ]
    # Normally standalone unless you share an UPS using an APC ShareUPS
    # card.
    UPSCLASS standalone
    #UPSCLASS sharemaster

    # UPSMODE [ disable | share ]
    # Normally disable unless you share an UPS using an APC ShareUPS card.
    UPSMODE disable
    #UPSMODE share

    #
    # ===== Configuration statements to control apcupsd system logging ========
    #

    # Time interval in seconds between writing the STATUS file; 0 disables
    #STATTIME 0
    STATTIME 30

    # Location of STATUS file (written to only if STATTIME is non-zero)
    STATFILE /var/log/apcupsd.status

    # LOGSTATS [ on | off ] on enables, off disables
    # Note! This generates a lot of output, so if
    # 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 0

    # 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
    UPSNAME UPSRS550

    # Battery date – 8 characters
    #BATTDATE mm/dd/yy

    # Sensitivity to line voltage quality (H cause faster transfer to batteries)
    # SENSITIVITY H M L (default = H)
    SENSITIVITY L

    # 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 020

    # 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 charge 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

  9. apcupsdを起動時に起動させるように設定します
  10. /etc/rc.confに記述しても次回起動時に消されてapcupsdが起動してきません

    freenas:~# vi /etc/defaults/rc.conf

    (snip)
    # apcupsd
    apcupsd_enable=”YES”

    ##############################################################
    ### Define source_rc_confs, the mechanism used by /etc/rc.* ##
    ### scripts to source rc_conf_files overrides safely. ##
    ##############################################################
    (snip)

  11. apcupsdを起動
  12. freenas:~# /usr/local/etc/rc.d/apcupsd start
    Starting apcupsd.
    freenas:~# ps ax | grep ups
    1888 ?? Ss 0:00.04 /usr/local/sbin/apcupsd –kill-on-powerfail
    1890 p0 S+ 0:00.00 grep ups

  13. RS550の状態確認してみます
  14. freenas:~# /usr/local/sbin/apcaccess
    APC : 001,036,0909
    DATE : 2012-05-30 16:09:57 +0900
    HOSTNAME : freenas.rootlinks.net
    VERSION : 3.14.10 (13 September 2011) freebsd
    UPSNAME : RS550
    CABLE : USB Cable
    DRIVER : USB UPS Driver
    UPSMODE : Stand Alone
    STARTTIME: 2012-05-30 16:09:55 +0900
    MODEL : APC RS 550G
    STATUS : ONLINE
    LINEV : 098.0 Volts
    LOADPCT : 0.0 Percent Load Capacity
    BCHARGE : 100.0 Percent
    TIMELEFT : 650.0 Minutes
    MBATTCHG : 5 Percent
    MINTIMEL : 3 Minutes
    MAXTIME : 0 Seconds
    SENSE : Medium
    LOTRANS : 082.0 Volts
    HITRANS : 123.0 Volts
    ALARMDEL : 30 seconds
    BATTV : 13.6 Volts
    LASTXFER : No transfers since turnon
    NUMXFERS : 0
    TONBATT : 0 seconds
    CUMONBATT: 0 seconds
    XOFFBATT : N/A
    SELFTEST : NO
    STATFLAG : 0x07000008 Status Flag
    SERIALNO : 3B1126X44080
    BATTDATE : 2011-06-25
    NOMINV : 100 Volts
    NOMBATTV : 12.0 Volts
    NOMPOWER : 330 Watts
    FIRMWARE : 855.L4 .A USB FW:L4
    END APC : 2012-05-30 16:10:33 +0900

Leave a Reply