APC SmartUps SU-700 - Linksys EA3500 - LuCI graphs

This describes how to connect an APC SmartUps SU-700 via USB on a Linksys EA3500 router. This includes collecting the data, and displaying graphs.

  • Plug in UPS
  • Connect a 940-0024 serial cable to the UPS (I'm using a 940-0024c. Other 'smart' cables may work as well. See: http://www.apcupsd.org/manual/manual.html#cables)
  • Connect other end of the cable to a serial-to-usb converter
    • Some converters work, some don't. A cable from eBay called “USB to RS232 Serial 9 Pin DB9 PIN PL2303 Cable Adapter” did not end up working for me, due to Linux driver issues. I ended up using a https://www.iogear.com/product/GUC232A.
  • Connect the serial-to-usb converter to the router USB port (or a USB hub, if you need multiple things plugged into the port).
  • In the router command line or LuCI web pages, install packages: apcupsd, collectd-mod-apcups, and kmod-usb-serial-pl2303
  • For the command line, the commands are:
    opkg update
    opkg install kmod-usb-serial-pl2303
    opkg install apcupsd
    opkg install collectd-mod-apcups
  • On the router command line, verify that the USB driver is installed and working with command and response:
    # ls -la /dev/ttyUSB*
    crw-------    1 root     root      188,   0 Dec  1 00:29 /dev/ttyUSB0
  • If you don't see a serial port then something is wrong with the driver for the serial-to-usb converter.
  • Resolve this, before proceeding.
  • The next step is to customize the apcupsd config file. Details of the options can be found at http://www.apcupsd.org/manual/manual.html , in the section “Configuration Directive Reference”.
  • On the router command line, go to the /etc/apcupsd directory, and edit the config file:
    # cd /etc/apcupsd
    # vi apcupsd.conf
  • use the dd command to delete all the lines in the file
  • use the i command to set the VI editor into “insert” mode.
  • Copy and paste this text into the editor:
    ## apcupsd.conf v1.1 ##
    UPSNAME APC700
    UPSCABLE smart
    UPSTYPE apcsmart
    DEVICE /dev/ttyUSB0
    LOCKFILE /var/lock
    ONBATTERYDELAY 6
    BATTERYLEVEL 5
    MINUTES 3
    TIMEOUT 0
    ANNOY 300
    ANNOYDELAY 60
    NOLOGON disable
    KILLDELAY 0
    NETSERVER on
    NISIP 0.0.0.0
    NISPORT 3551
    EVENTSFILE /var/log/apcupsd.events
    # max kilobytes
    EVENTSFILEMAX 10
    UPSCLASS standalone
    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 off
    # Time interval in seconds between writing the DATA records to
    #   the log file. 0 disables.
    DATATIME 0
  • type :wq into the editor, to write the new apcupsd.conf, and quit the edit session
  • restart the apcupsd deamon process:
     
    # /etc/init.d apcupsd restart
  • Enter the apcaccess command into the command line, and you should get output like this:
    # apcaccess
    APC      : 001,034,0829
    DATE     : 2017-12-01 18:11:01 -0700  
    HOSTNAME : myrouter
    VERSION  : 3.14.14 (31 May 2016) unknown
    UPSNAME  : APC700
    CABLE    : Custom Cable Smart
    DRIVER   : APC Smart UPS (any)
    UPSMODE  : Stand Alone
    STARTTIME: 2017-12-01 18:10:11 -0700  
    MODEL    : Smart-UPS 700 RM
    STATUS   : ONLINE 
    ...
  • Note the STATUS : ONLINE . If you don't have “ONLINE”, then something is wrong
  • Reboot the router.
  • In the router web interface, go to Statistics, Graphs, APC UPS
  • You should see the graphs, with data starting on the right side.
  • If not, wait a minute, refresh your browser and you should start to see data being written.
  • By default the collected data will be lost after a reboot of the router. To save the data, you need to put it on an external device, like a USB flash drive. Connecting both the UPS and a flash drive to a USB hub, which is then connected to the router, works fine for me.
  • To put the data on an external device, go to Statistics / Setup / Output plugins / RRDTool (http://192.168.1.1/cgi-bin/luci/admin/statistics/collectd/output/rrdtool), and change the Storage directory to wherever you want to store your data.

If you don't have APC UPS graphs at this point, here are some things to check:

  1. Change the data collection interval to 10 seconds. This is a workaround for the issue reported in: https://github.com/collectd/collectd/issues/617.
    • Go to Statistics / Setup /
    • Change the Data collection interval to 10 seconds
  2. Verify that serial communication to the UPS is working - On a PC
    • attach usb converter to PC
    • startup minicom (or equivalent): minicom -D /dev/ttyUSB0
    • ctrl-a, ctrl-z, P,
    • change port configuration to 2400,8,n,1
    • ctrl-a, ctrl-z, O, Serial Port Setup
    • change port configuration to hardware / software flow control: none
    • type the uppercase letter: Y , and expect the reply SM
      Y
      SM
    • Note: serial APC UPS commands are documented at: http://networkupstools.org/protocols/apcsmart.html )
  3. Verify that serial communication to the UPS is working - On the Router
    • Detach the usb converter from PC , attach to router
    • Install minicom on the router.
    • Use the same minicom commands to verify communication with the router.
    • type the uppercase letter: Y , and expect the reply SM
      Y
      SM
  4. There should be a tab for APC UPS on the General Plugins page at:
    http://192.168.1.1/cgi-bin/luci/admin/statistics/collectd/general

    If not, you may not have the patches that added luci-statistics support for the apcups plugin: https://github.com/openwrt/luci/pull/1227. The best fix for this is to upgrade to a version that does.

  5. /var/etc/collectd.conf should have a section for apcups:
    LoadPlugin apcups
     <Plugin apcups>
      Host localhost
      Port "3551"
     </Plugin>

    If it does not, you can regenerate /var/etc/collectd.conf with this command:

    /usr/bin/stat-genconfig > /var/etc/collectd.conf
  • If you still don't have APC UPS graphs, you may not have the patches that added luci-statistics support for the apcups plugin: https://github.com/openwrt/luci/pull/1227. The best fix for this is to upgrade to a version that does.
  • Last modified: 2020/09/20 20:26
  • by vgaetera