====== UPS との接続 (APC) ====== SD カードや USB HDD などを接続して、ロガーとして運用する場合など、UPS と連動させたい場合もあると思います。\\ 電源断時にシャットダウン処理などができるよう、UPS と接続する方法を紹介します。 \\ ===== UPS の選択 ===== * Ubuntu Linux で標準でパッケージが用意されている * ドキュメントも豊富 という理由から、[[http://www.apc.com/products/category.cfm?id=13&ISOCountryCode=jp|APC]] 社の UPS を使用します。 [[http://www.apc.com/products/category.cfm?id=13&ISOCountryCode=jp|{{:mae3xx_tips:use_ups:ups-apc.png?400|UPS と言えば APC、マジでおすすめ}}]] \\ 製品の種類はたくさんありますが、 * MA-E3xx は、PC ほど消費電力は大きくない * 正弦波出力のほうが安心 といった理由から、[[http://www.apc.com/products/resource/include/techspec_index.cfm?base_sku=SMT500J&total_watts=50&tab=models|Smart-UPS]] シリーズの中の、容量が一番小さな製品 (Smart-UPS 500) を使ってみます ((手持ちの旧型機で写真のものとは異なるものを使っています))。 \\ **※注** 現行品は、Ubuntu 14.04 の apcupsd (3.14.10) と製品添付のシリアルケーブル (940-0625A) の組み合わせでは動作しません(([[http://apcupsd-ups-control-software.10985.n7.nabble.com/apcupsd-can-t-connect-to-the-UPS-serial-td8623.html|apcupsd can't connect to the UPS (serial)]]))。 * UPS 本体ファームウェアの更新 * [参考] [[http://www.schneider-electric.us/sites/us/en/support/faq/faq_main.page?page=content&country=ITB&lang=EN&id=FA164737&redirect=true|How do I update the firmware of my SMT, SMX, SMC, or SRT series Smart-UPS?]] * UPS **"modbus"** プロトコルの有効化 (本体パネルでの操作) * apcupsd 3.14.12 への upgrade (v2.4.2α2 で、Ubuntu 15.04α から backport しています) が必要です。 {{:mae3xx_tips:use_ups:smart-ups_500.jpg|Smart-UPS 500}} \\ ===== 設定 ===== ==== MA-E3xx との接続 ==== USB ケーブルで、UPS と接続します。\\ HID driver で認識されます。 [56980.932837] usb 1-1.3: new low-speed USB device number 5 using musb-hdrc [56981.032473] usb 1-1.3: New USB device found, idVendor=051d, idProduct=0002 [56981.032513] usb 1-1.3: New USB device strings: Mfr=3, Product=1, SerialNumber=2 [56981.032523] usb 1-1.3: Product: Smart-UPS 500 FW:650.13.A USB FW:4.2 [56981.032531] usb 1-1.3: Manufacturer: American Power Conversion [56981.032538] usb 1-1.3: SerialNumber: AS06xxxxxxxx ※ シリアルケーブル (940-0625A 等) で接続する場合、上記ログは出力されません。 \\ ==== 設定ファイルの編集 ==== APC 社の UPS と連動するためのソフト apcupsd はパッケージからインストール済みですので、\\ 設定ファイルの編集だけを行います。 参考: * [[https://help.ubuntu.com/community/apcupsd|apcupsd - Ubuntu Community Help Wiki]] * [[http://mizupc8.bio.mie-u.ac.jp/pukiwiki/?apcupsd|apcupsd - PukiWiki]] /etc/apcupsd/apcupsd.conf を編集します。 ## apcupsd.conf v1.1 ## # # for apcupsd release 3.14.12 (29 March 2014) - debian # # "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, 940-0625A, M-04-02-2000 # UPSCABLE 940-0625A # 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. # # modbus /dev/tty** Serial device for use with newest SmartUPS models # supporting the MODBUS protocol. # UPSTYPE modbus DEVICE /dev/ttyO1 # 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/lock # SCRIPTDIR # Directory in which apccontrol and event scripts are located. SCRIPTDIR /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 /etc/apcupsd # NOLOGINDIR # Directory in which to write the nologin file. The existence # of this flag file tells the OS to disallow new logins. NOLOGINDIR /etc # # ======== 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 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. # 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 127.0.0.1 # 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 # UPSMODE [ disable | share ] # Normally disable unless you share an UPS using an APC ShareUPS card. UPSMODE disable # # ===== Configuration statements to control apcupsd system logging ======== # # Time interval in seconds between writing the STATUS file; 0 disables STATTIME 0 # 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 # 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 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 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 変更した点は下記になります (conf ファイル中に書いてあるドキュメントのままですが)。 ^ 項目 ^ 初期値 ^ 設定値 ^^ ^:::^:::^ USB接続 ^ シリアルケーブル ^ |UPSCABLE| smart | usb | 940-0625A | |UPSTYPE| apcsmart | usb | modbus | |DEVICE| /dev/ttyS0 | "" (空欄) | /dev/ttyO1 | \\ Ubuntu の daemon が起動時に参照するファイル (/etc/default/apcupsd) も変更します。 # Defaults for apcupsd initscript # Apcupsd-devel internal configuration APCACCESS=/sbin/apcaccess ISCONFIGURED=yes ISCONFIGURED を "no" から "yes" に変更します。 \\ ===== apcupsd の起動 ===== 設定ファイルの編集ができたら、service を起動します。 user1@plum:~$ sudo service apcupsd start Starting UPS power management: apcupsd. user1@plum:~$ \\ MA-E3xx の起動時にデフォルトで起動させるためには、update-rc.d コマンドで有効化します。 user1@plum:~$ sudo update-rc.d apcupsd enable update-rc.d: warning: start runlevel arguments (none) do not match apcupsd Default-Start values (2 3 4 5) update-rc.d: warning: stop runlevel arguments (none) do not match apcupsd Default-Stop values (0 1 6) Enabling system startup links for /etc/init.d/apcupsd ... Removing any system startup links for /etc/init.d/apcupsd ... /etc/rc0.d/K80apcupsd /etc/rc1.d/S41apcupsd /etc/rc2.d/K59apcupsd /etc/rc3.d/K59apcupsd /etc/rc4.d/K59apcupsd /etc/rc5.d/K59apcupsd /etc/rc6.d/K80apcupsd Adding system startup for /etc/init.d/apcupsd ... /etc/rc0.d/K80apcupsd -> ../init.d/apcupsd /etc/rc1.d/S41apcupsd -> ../init.d/apcupsd /etc/rc6.d/K80apcupsd -> ../init.d/apcupsd /etc/rc2.d/S41apcupsd -> ../init.d/apcupsd /etc/rc3.d/S41apcupsd -> ../init.d/apcupsd /etc/rc4.d/S41apcupsd -> ../init.d/apcupsd /etc/rc5.d/S41apcupsd -> ../init.d/apcupsd user1@plum:~$ \\ ===== UPSの状態確認 ===== UPS の状態を確認することができます。 user1@plum:~$ sudo service apcupsd status APC : 001,036,0846 DATE : 2014-11-18 10:58:39 +0900 HOSTNAME : plum VERSION : 3.14.12 (29 March 2014) debian UPSNAME : APCUPS CABLE : Custom Cable Smart DRIVER : MODBUS UPS Driver UPSMODE : Stand Alone STARTTIME: 2014-11-18 10:51:09 +0900 MODEL : Smart-UPS 500 STATUS : ONLINE LINEV : 103.6 Volts LOADPCT : 0.0 Percent BCHARGE : 100.0 Percent TIMELEFT : 383.0 Minutes MBATTCHG : 5 Percent MINTIMEL : 3 Minutes MAXTIME : 0 Seconds OUTPUTV : 103.6 Volts DWAKE : 0 Seconds DSHUTD : 90 Seconds ITEMP : 34.6 C BATTV : 26.8 Volts LINEFREQ : 50.0 Hz NUMXFERS : 0 TONBATT : 0 Seconds CUMONBATT: 0 Seconds XOFFBATT : N/A SELFTEST : OK STATFLAG : 0x05000008 MANDATE : 2013-09-20 SERIALNO : AS133xxxxxxx BATTDATE : 2014-09-15 NOMOUTV : 100 Volts NOMPOWER : 360 Watts FIRMWARE : UPS 09.1 / 00.4 END APC : 2014-11-18 10:59:38 +0900 user1@plum:~$