Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revisionBoth sides next revision
docs:guide-user:services:ups:software.nut [2018/08/07 09:58] – [UCI Configuration] Promote section and rename top section cshoredanieldocs:guide-user:services:ups:software.nut [2018/12/12 08:01] – [Post 18.06.2 / Commmit c95a1d3 on openwrt-18.06 / Commit f48b060 on master] better title cshoredaniel
Line 6: Line 6:
 NUT can be installed from packages feed. NUT can be installed from packages feed.
  
-NUT was updated with more UCI in commit [[https://github.com/openwrt/packages/commit/a23c4e85c5f6c9f9dcf67743b93c492ba833e365|a23c4e85c5f6c9f9dcf67743b93c492ba833e365]], which appears in the 18.06 release.+NUT was updated with more UCI in commit [[https://github.com/openwrt/packages/commit/a23c4e85c5f6c9f9dcf67743b93c492ba833e365|a23c4e85]], which appears in the 18.06 release.
  
-<wrap lo> +===== 18.06 and beyond =====
-In __older release(s)__ there's problem with some USB UPSes (e.g. EATON) that are not recognized by usbhid-ups. This is apparently a bug in libusb-compat, since libusb (0.1.4) can recognize them.+
  
-You can work around this by installing Attitude Adjustment, manually installing packages __libusb-compat__ and **nut-driver-usbhid-ups**, then manualy remove __libusb-compat__ and install **libusb** istead (packages in trunk may break on having manually installed libusb) +<color #ed1c24>NOTE: configuration has **changed**</color>:  It's now all done through UCI (see below) (and the UCI is changed).
-</wrap>+
  
-===== 18.06 / Commit a23c4e85c5f6c9f9dcf67743b93c492ba833e365 ===== 
  
-<color #ed1c24>NOTE: configuration has **changed**</color>:  It's now all done through UCI (see below(and the UCI is changed).+<WRAP center round tip 60%> 
 +If you wish to use a 'standard' NUT config just remove the symlinks in /etc/nut and replace them with regular NUT configuration files. 
 +</WRAP> 
 +==== 18.06 / Commit a23c4e85 ==== 
 + 
 +<WRAP center round alert 60%> 
 +Due to changes in procd (or the OpenWrt shell wrapper around starting and stopping services with procdstopping/restarting NUT stopped working properly.  Work is underway to remedy this.  Unfortunately issues were not reported before the 18.06 release.  18.06.1 has fixes for the most troublesome of the issues, and 18.06.2 should resolve the rest. 
 + 
 +[[https://github.com/openwrt/packages/pull/7638|PR #7638]] / [[https://github.com/openwrt/packages/commit/c95a1d3da89cb62eacc1d8217b861b36194d8838|Commmit c95a1d3]] Resolves these issues in the 18.06 branch. 
 +This should be in the next 18.06.x point release (18.06.2). 
 + 
 +See <del>[[https://github.com/openwrt/packages/pull/6897|PR #6987]], [[https://github.com/openwrt/packages/issues/6997|Issue #6997]], [[https://github.com/openwrt/packages/issues/6966|Issue #6966]], and [[https://github.com/openwrt/packages/issues/6843|Issue #6843]]</del> 
 +</WRAP> 
 + 
 +==== Commit f48b060 on master ==== 
 + 
 +<WRAP center round important 60%> 
 +With [[https://github.com/openwrt/packages/commit/f48b060fa752fdf6556080dc1af221363f9b1ef4|Commit f48b060 on master]] all known issues are resolved. 
 + 
 +</WRAP> 
 + 
 +<WRAP center round important 60%> 
 + 
 + 
 +[[https://github.com/openwrt/packages/pull/7167/commits/8ff6a83a541b114437eab170a0760c1c04263aa2|Commit 8ff6a83]] adds building of serial drivers by default. 
 + 
 +[[https://github.com/openwrt/packages/pull/7167/commits/daa974cff0bef94c71277e703c32b3fd36f1411b|Commit daa974c]] completes the USB UPS hotplugging in which a USB UPS driver can be run as non-root and the USB device will be given the right permissions. 
 + 
 +[[https://github.com/openwrt/packages/pull/7592/commits/a5d06ce1106644b26a1b9d0ad87220d772d6b862|Commit a5d06ce]] adds hotplug support for serial UPSes when using a standare serial-to-USB cable. 
 +</WRAP> 
 ==== Package Selection ==== ==== Package Selection ====
  
Line 22: Line 49:
 | nut | Required to enable the 'real' packages | | nut | Required to enable the 'real' packages |
 | nut-common | Required for all NUT packages | | nut-common | Required for all NUT packages |
-| nut-server | NUT server or standalone; only for the host attached directly to the UPS | +| nut-server | NUT server or standalone; only for the host attached directly to the UPS.  Note will require a 'nut-dirver-xxx' driver to actually connect to the UPS. 
-| nut-upsmon | Monitoring and/or triggering shutdown (e.g. client mode; can be on a server too and is in fact recommended on all hosts.  Note will require a 'nut-dirver-xxx' driver to actually connect to the UPS |+| nut-upsmon | Monitoring and/or triggering shutdown (e.g. client mode; can be on a server too and is in fact recommended on all hosts).  |
 | nut-upsc | Command line client for querying UPS status | | nut-upsc | Command line client for querying UPS status |
 | nut-upscmd | Perform 'instant commands' on UPS (e.g. remote shutdown) if supported by UPS | | nut-upscmd | Perform 'instant commands' on UPS (e.g. remote shutdown) if supported by UPS |
Line 29: Line 56:
 | nut-upsrw | Set variables on UPS (e.g. buzzer status) if supported by UPS | | nut-upsrw | Set variables on UPS (e.g. buzzer status) if supported by UPS |
 | nut-upssched | Schedule script actions from some time after a UPS event | | nut-upssched | Schedule script actions from some time after a UPS event |
-| nut-upsmon-sendmail-notify | Send an email via sendmail command on a UPS event.  In 18.06, added in commit [[https://github.com/openwrt/packages/commit/c94e334c4e5251d09995e3f6c8b80d61928a451c#diff-4ea671be370e4ab06ffeb50e1312d11e|c94e334c4e5251d09995e3f6c8b80d61928a451c#diff-4ea671be370e4ab06ffeb50e1312d11e]] |+| nut-upsmon-sendmail-notify | Send an email via sendmail command on a UPS event.  In 18.06, added in commit [[https://github.com/openwrt/packages/commit/c94e334c4e5251d09995e3f6c8b80d61928a451c#diff-4ea671be370e4ab06ffeb50e1312d11e|c94e334c4]] |
 | nut-web-cgi | A 'web' (e.g. uhttpd) GUI for monitoring the UPS | | nut-web-cgi | A 'web' (e.g. uhttpd) GUI for monitoring the UPS |
 | nut-avahi-service | Advertise the UPS server via mDNS (avahi-daemon only) | | nut-avahi-service | Advertise the UPS server via mDNS (avahi-daemon only) |
Line 36: Line 63:
 === UPS Drivers === === UPS Drivers ===
  
-== Serial ==+<WRAP center round tip 60%> 
 +See [[https://networkupstools.org/stable-hcl.html|NUT Stable Hardware Compatibility List]] to match your UPS model to a driver. 
 +</WRAP>
  
  
 +== Serial ==
  
 +<WRAP group>
 +<WRAP half column>
 +<WRAP group>
 +<WRAP half column>
   * al175    * al175 
   * bcmxcp    * bcmxcp 
Line 61: Line 95:
   * e-shut    * e-shut 
   * mge-utalk    * mge-utalk 
 +
 +</WRAP>
 +
 +<WRAP half column>
   * microdowell    * microdowell 
   * mge-shut    * mge-shut 
Line 81: Line 119:
   * apcupsd-ups    * apcupsd-ups 
   * riello_ser   * riello_ser
 +</WRAP>
 +</WRAP>
 +</WRAP>
  
 +<WRAP half column>
 == SNMP == == SNMP ==
  
Line 96: Line 138:
   * nutdrv_atcl_   * nutdrv_atcl_
   * usb nutdrv_qx   * usb nutdrv_qx
 +</WRAP> 
 +</WRAP>
 ===== LuCI app ===== ===== LuCI app =====
  
-There was a Pull Request ([[https://github.com/openwrt/luci/pull/936|#936]]) for a LuCI app for the new configuration that sadly never made into 18.06, for complicated reasons that are non-technical.+There was a Pull Request ([[https://github.com/openwrt/luci/pull/936|#936]]) for a LuCI app for the new configuration that sadly never made into 18.06, for complicated reasons that are non-technical, but is merged in a modified form into master.
 ===== 18.06.x+ UCI files ===== ===== 18.06.x+ UCI files =====
  
 ^ File     ^ Purpose | ^ File     ^ Purpose |
-| nut_cgi    | configure nut-cgi | +[[docs:guide-user:services:ups:software.nut#nut_cgi]]    | configure nut-cgi | 
-| nut_monitor | configure nut-monitor | +[[docs:guide-user:services:ups:software.nut#nut_monitor]] | configure nut-monitor | 
-| nut_server | configure nut-server |+[[docs:guide-user:services:ups:software.nut#nut_server]] | configure nut-server |
  
 ===== UCI Configuration (18.06.x+) ===== ===== UCI Configuration (18.06.x+) =====
Line 111: Line 154:
 ==== nut_server ==== ==== nut_server ====
  
-Most items have sane defaults where possible (those are the commented out values).+There can be more than one of each section (as appropriate) 
 + 
 + 
 +=== config driver_global === 
 + 
 +<WRAP center round important 60%> 
 +[[https://github.com/openwrt/packages/commit/44e57d4bdfe93214e9c031f181533bb0e4ef25ca|Commit 44e57d4]] (adds the following variables) and [[https://github.com/openwrt/packages/commit/f48b060fa752fdf6556080dc1af221363f9b1ef4| Commit f48b060]] (fixes synchronous setting) 
 +</WRAP> 
 + 
 +^ Option           ^ Type           ^ Required ^ Default      ^ Description    ^ 
 +^ chroot             | string         | no       | //none//     | chroot directory | 
 +^ driverpath         | string         | no       | /lib/nut     | Where to search for drivers | 
 +^ maxstartdelay      | integer        | no       | //none//     | Override default for UPSes not specifying this field | 
 +^ maxretry           | integer        | no                  | Number of time to retry loading driver (apart from procd's respawn) initially | 
 +^ retrydelay         | integer        | no                  | Number of seconds between retries | 
 +^ pollinterval       | integer        | no                  | Maximum number of seconds between UPS status refresh | 
 +^ synchronous        | boolean string | no         no         | Whether reading from UPS has to empty pipe before more data written | 
 +^ user               | string         | no         nut        | If run as root, user to which to drop privileges | 
 + 
 +=== config driver 'upsname' === 
 + 
 +**NB**: From 18.06 
 + 
 +The config section name (e.g. 'upsname' above) will be used a the ups name. 
 + 
 +^ Option           ^ Type           ^ Required ^ Default      ^ Description    ^ 
 +^ driver           | string         | yes       | //none//   | Driver for the model of UPS (see list above and [[https://networkupstools.org/stable-hcl.html|NUT HCL for stable release]]) | 
 +^ port             | string         | yes       | ? (shouldn't rely on anyway) | Port on which the UPS is attached (or auto for auto-detection with USB) | 
 +^ other            | string         | varies    | //none//   | see HCL above | 
 +^ runas            | string         | no        | //none//   | User as which to run the daemon (note that means the USB device has in /dev/bus/usb/xxxx has to be //writable// by this user) | 
 + 
 +<WRAP center round important 60%> 
 +As of [[https://github.com/openwrt/packages/commit/ceff68837d4b8d5a9bd8bf1962e913b5203d95e5|ceff6883]] adding random parameters was removed and only pre-defined parameters are allowed. 
 +</WRAP> 
 + 
 +^ Option           ^ Type           ^ Required ^ Default      ^ Description    ^ 
 +^ mfr              | string         | no       | //none//     | Manufacturer description string | 
 +^ model            | string         | no       | //none//     | Model description string | 
 +^ serial           | string         | no       | //none//     | Serial number description string or regex match for serial number (depends on driver) | 
 +^ sdtime           | integer        | no       | //none//     | Number of seconds for driver to sleep after sending shutdown signal | 
 +^ offdelay         | integer        | no       | 20           | Number of seconds UPS will wait before shutting down after receiving shutdown signal | 
 +^ ondelay          | integer        | no       | 30           | Number of seconds UPS will wait before powering up if still on mains after shutdown (must be less than ondelay) | 
 +^ pollfreq         | integer        | no       | 30           | How often driver will poll UPS for data | 
 +^ vendor           | string         | no       | //none//     | regex to match USB vendor string | 
 +^ product          | string         | no       | //none//     | regex to match USB product string | 
 +^ bus              | string         | no       | //none//     | regex to match a specific USB bus or group of busses | 
 +^ interruptonly    | boolean        | no       | false        | flag to driver to do no polling, only get data by interrupts (push) from UPS | 
 +^ interruptsize    | integer        | no       | //none//     | limit interrupt data to given number of bytes; e.g. for some PowerCom units | 
 +^ maxreport        | boolean        | no       | false        | With this option, the driver activates a tweak to workaround buggy firmware returning invalid HID report length. Some APC Back-UPS units are known to have this bug. | 
 +^ vendorid         | string         | no       | //none//     | regex: Match only UPSes with this USB vendorid | 
 +^ productid        | string         | no       | //none//     | regex: Match only UPSes with this USB productid | 
 +^ community        | string         | no       | public       | For snmp-ups: community to poll UPS | 
 +^ snmp_version     | v1, v2c, or v3 | no         v1         | For snmp-ups: SNMP version | 
 +^ snmp_retries     | integer        | no          5         | Number of Net-SNMP tries | 
 +^ snmp_timeout     | integer        | no          1         | Number of seconds between Net-SNMP retries | 
 +^ notransferoids   | boolean        | no       | false        | Disable the monitoring of the low and high voltage transfer OIDs in the hardware. This will remove input.transfer.low and input.transfer.high from the list of variables. This should only be used on APCC Symmetra equipment which has strangeness in the three-phase power reporting. | 
 + 
 +<WRAP center round important 60%> 
 +[[https://github.com/openwrt/packages/commit/44e57d4bdfe93214e9c031f181533bb0e4ef25ca|Commit 44e57d4]] (adds the following variables) 
 +</WRAP> 
 + 
 + 
 +^ Option           ^ Type            ^ Required                ^ Default      ^ Description    ^ 
 +^ synchronous      | yes or no       | no                      |    no        | Whether UPS must read all data from UPS before getting new data | 
 +^ maxstartdelay    | integer         | no                      |    45        | How long NUT waits for driver to start before giving up | 
 +^ retrydelay       | integer         | no                      |            | How long NUT waits to retry starting driver | 
 +^ override         | list of strings | no                      | //none//     | names of 'override' config sections (below) | 
 +^ default          | list of strings | no                      | //none//     | names of 'default' config sections (below) | 
 +^ other            | list of strings | no                      | //none//     | names of 'other' config sections (below) | 
 +^ otherflags       | list of strings | no                      | //none//     | names of 'otherflag' config sections (below) | 
 + 
 +config override 'override_[variable_name]' 
 + 
 +e.g. ''config override 'override_battery_charge_low''' creates ups.conf entry for ''override.battery.charge.low = '' 
 + 
 +^ Option           ^ Type           ^ Required                ^ Default       ^ Description    ^ 
 +^ value            | varies         | yes                     | //none//      | Value driver 'pretends' UPS sent | 
 + 
 +config default 'default_[variable_name]' 
 + 
 +e.g. ''config default 'default_battery_charge_low''' creates ups.conf entry for ''default.battery.charge.low = '' 
 +^ Option           ^ Type           ^ Required                ^ Default       ^ Description    ^ 
 +^ value            | varies         | yes                     | //none//      | Value driver 'pretends' UPS sent unless UPS actually sends a value | 
 + 
 +config override 'other_[parameter]' 
 + 
 +e.g. ''config other 'other_parameter''' creates ups.conf entry for ''parameter = '' 
 + 
 +^ Option           ^ Type           ^ Required                ^ Default       ^ Description    ^ 
 +^ value            | varies         | yes                     | //none//      | A way to handle currently unknown (to UCI) parameters | 
 + 
 +config override 'otherflag_[parameter]' 
 + 
 +e.g. ''config override 'otherflag_extraflag''' creates ups.conf entry for ''extraflag'' 
 + 
 +^ Option           ^ Type           ^ Required                ^ Default       ^ Description    ^ 
 +^ value            | boolean        | yes                     | false         | A way to handle currently unknown (to UCI) flags | 
 + 
 +=== config user === 
 + 
 +**NB** From 18.06 
 + 
 +^ Option           ^ Type           ^ Required ^ Default           ^ Description    ^ 
 +^ username         | string         | yes       | ? (probably not) | 'username' (NUT only) for accessing a this server with e.g. upsmon (local or remote) | 
 +^ password         | password       | yes       | //none//         | password for the above user | 
 +^ actions          | string         | no        | //none//         | optional action (only listed allowed) | 
 +^ instcmd          | list of strings | no       | //none//         | List of 'instant-commands' user is allowed to perform 
 +^ upsmon           | ('slave' or 'master') | yes    | ?                | Whether client is a 'slave' for 'master' slaves are dependent on masters and can't shutdown the UPS on low UPS power; used for multiple hosts on the same UPS | 
 +  
 +=== config listen_address === 
 +^ Option           ^ Type                  ^ Required ^ Default           ^ Description    ^ 
 +^ address          | IPv4 or IPv6 address  | yes      | ::1             | Address to which to bind server (can be a wildcard address such as 0.0.0.0) | 
 +^ port             | tcp port              | yes      | 3493            | Port on which to listen | 
 + 
 +=== config upsd 'upsd' === 
 + 
 +There should only be on 'upsd' section and it should be named 'upsd' 
 + 
 +^ Option           ^ Type           ^ Required ^ Default           ^ Description    ^ 
 +^ maxage           | integer        | yes       | 15               | Maximum number of seconds before data is considered 'stale'
 +^ statepath        | string         | yes       | /var/run/nut     | Where to store runtime data | 
 +^ maxconn          | integer        | yes       | 102              | Maximum number of connections to accept at once | 
 +^ certfile         | path           | no        | //none//         | Only for SSL-enabled builds; path to SSL certificate |
  
-=== Default config file ===+==== nut_server default file ====
  
 <code> <code>
Line 141: Line 306:
 </code> </code>
  
-=== A Working Example ===+==== nut_server working example ====
  
 <code> <code>
Line 152: Line 317:
    option password somepassword    option password somepassword
    option upsmon master    option upsmon master
-    +   # For a netserver, otherwise the default ::1 (localhost) is fine 
-# For a netserver, otherwise the default ::1 (localhost) is fine + 
-option listen_address+config listen_address
    option 0.0.0.0    option 0.0.0.0
 +
 +config upsd upsd
 </code>    </code>   
  
 ==== nut_monitor ==== ==== nut_monitor ====
  
 +=== config upsmon 'upsmon' ===
 +
 +There should be only one upsmon section and should be named 'upsmon'
 +
 +^ Option       ^ Type        ^ Required        ^ Default           ^ Description ^
 +^ runas        | string      | yes             | nut               | User as which to execute upsmon |
 +^ minsupplies  | integer     | yes             | 1                 | Not OpenWrt relevent (Datacentre use) minimum number of UPSes that have to be supplying power to host |
 +^ shutdowncmd  | path        | yes             | /sbin/halt        | Command to run on UPS clean shutdown (either due to lower power, or NUT action |
 +^ notifycmd    | path        | no              | //none//           | Command to execute if 'notify' type EXEC is set |
 +^ defaultnotify | list of SYSLOG or EXEC or IGNORE or WALL | yes | SYSLOG | How to notify of UPS monitoring events.  Note that nut-upsmond-sendmail-notify sets //notifycmd// to a script which emits a message via email (using 'sendmail' command in standard location) and adds EXEC to //defaultnotify// |
 +^ pollfreq     | integer     | yes             | 5                 | Time in seconds to query the NUT server |
 +^ pollfreqalert | integer   | yes             | 5                 | Time in seconds to query the NUT server while on battery |
 +^ hostsync     | integer     | yes            | 15                | From  [[https://networkupstools.org/docs/man/upsmon.conf.html|upsmon.conf man page (official)]]   upsmon will wait up to this many seconds in master mode for the slaves to disconnect during a shutdown situation. By default, this is 15 seconds.  When a UPS goes critical (on battery + low battery, or "FSD": forced shutdown), the slaves are supposed to disconnect and shut down right away. The HOSTSYNC timer keeps the master upsmon from sitting there forever if one of the slaves gets stuck. This value is also used to keep slave systems from getting stuck if the master fails to respond in time. After a UPS becomes critical, the slave will wait up to HOSTSYNC seconds for the master to set the FSD flag. If that timer expires, the slave will assume that the master is broken and will shut down anyway.  This keeps the slaves from shutting down during a short-lived status change to "OB LB" that the slaves see but the master misses. |
 +^ deadtime     | integer     | yes           | 15                 | How long a server can go missing before declaring it 'dead' |
 +^ powerdownflags | path      | no            | /var/run/killpower | If NUT sees this file it will powerdown the UPS(es) |
 +^ finaldelay   | integer     | yes           | 15                 | From  [[https://networkupstools.org/docs/man/upsmon.conf.html|upsmon.conf man page (official)]] When running in master mode, upsmon waits this long after sending the NOTIFY_SHUTDOWN to warn the users. After the timer elapses, it then runs your SHUTDOWNCMD. By default this is set to 5 seconds.  If you need to let your users do something in between those events, increase this number. Remember, at this point your UPS battery is almost depleted, so don’t make this too big.  Alternatively, you can set this very low so you don’t wait around when it’s time to shut down. Some UPSes don’t give much warning for low battery and will require a value of 0 here for a safe shutdown. |
 +^ certpath     | path        | no            | /etc/ssl/certs     | Only for SSL-enabled builds: Path to directory containing CA certificates for validating SSL certificates |
 +^ certverify    | boolean     | no           | false              | Only for SSL-enabled builds: server CommonName must match DNS name we are using |
 +^ forcessl      | boolean    | no            | false              | Only for SSL-enabled builds: implied by certverify; without certverfy requires the connection is at least encrypted |
 +
 +For each of (lowercased):
 +
 +  * COMOK
 +  * COMBAD
 +  * SHUTDOWN
 +  * REPLBATTERY
 +  * NOCOMMS
 +  * NOPARENT
 +  * ONLINE
 +  * ONBATT
 +  * LOWBATT
 +  * FSD
 +
 +There are 'XXXmsg' and 'XXXnotifyflag' options (e.g. 'comokmsg' and 'comoknotifyflag').
 +
 +This are all optional.  The 'msg' options are strings and are messages to emit instead of the default on one of the above conditions (see [[https://networkupstools.org/docs/man/upsmon.conf.html|upsmon.conf man page (official)]]).
 +
 +The 'notifyflag' options are boolean (default true) and indicate whether to emit the message using the 'defaultnotify' setting or to not emit a message (IGNORE) setting for that message. 
 +
 +=== config master and config slave ===
 +
 +== Slave vs. Master ==
 +
 +From 'UPS TYPES' in [[https://networkupstools.org/docs/man/upsmon.html|upsmon manpage (official)]]
 +
 +upsmon and upsd(8) don’t always run on the same system. When they do, any UPSes that are directly attached to the upsmon host should be monitored in "master" mode. This makes upsmon take charge of that equipment, and it will wait for slaves to disconnect before shutting down the local system. This allows the distant systems (monitoring over the network) to shut down cleanly before upsdrvctl shutdown runs and turns them all off.
 +
 +When upsmon runs as a slave, it is relying on the distant system to tell it about the state of the UPS. When that UPS goes critical (on battery and low battery), it immediately invokes the local shutdown command. This needs to happen quickly. Once it disconnects from the distant upsd(8) server, the master upsmon will start its own shutdown process. Your slaves must all shut down before the master turns off the power or filesystem damage may result.
 +
 +upsmon deals with slaves that get wedged, hang, or otherwise fail to disconnect from upsd(8) in a timely manner with the HOSTSYNC timer. During a shutdown situation, the master upsmon will give up after this interval and it will shut down anyway. This keeps the master from sitting there forever (which would endanger that host) if a slave should break somehow. This defaults to 15 seconds.
 +
 +If your master system is shutting down too quickly, set the FINALDELAY interval to something greater than the default 15 seconds. Don’t set this too high, or your UPS battery may run out of power before the master upsmon process shuts down that system
 +
 +== options ==
 +
 +^ Option      ^ Type      ^   Required    ^ Default     ^ Description                   ^
 +^ upsname     | string    |    yes         | //none//    | name assigned to the UPS by the server      |
 +^ hostname    | string    |    yes         | //none//    | host with the UPS server (dns name or ip)   |
 +^ port        | tcp port  |    no          | 3493        | port on which to connect to server          |
 +^ powervalue  | integer      yes         | 1           | Number of UPSes supplying this host from the server        |
 +^ username    | string    |    yes         | // none //  | NUT username for connecting to the server | 
 +^ password    | password  |    yes         | //none//    | NUT password for the user for connecting to  the server |
 +
 +==== nut_monitor default file ====
 <code> <code>
 #config upsmon 'upsmon' #config upsmon 'upsmon'
Line 216: Line 447:
 </code> </code>
  
-=== A Working Example ===+==== nut_monitor working example ====
 <code> <code>
 +config 'upsmon' upsmon
 +
 config master config master
-  option uspname eaton5p+  option upsname eaton5p
   option hostname localhost   option hostname localhost
   option username upsuser   option username upsuser
Line 226: Line 459:
  
 ==== nut_cgi ==== ==== nut_cgi ====
 +
 +<WRAP center round tip 60%>
 +The NUT CGI doensn't have to be on the same server as nut-monitor or nut-server.
 +
 +It does however require a webserver installed (default configuration is for uhttpd).
 +</WRAP>
 +
 +^ Option      ^ Type     ^ Required      Default      ^ Description
 +| upsname     | upsname  | yes          | //none//      | Name of UPS to monitor (as configured in nut_server) |
 +| hostname    | hostname | yes          | //none//      | Name or IP of NUT server |
 +| port        | tcp port | no           | 3493          | Port on which to connect to NUT server |
 +| displayname | string   | yes          | none          | What to show in Web UI as the UPS name |
 +
 +==== nut_cgi default config file ====
 <code> <code>
 #config host #config host
Line 234: Line 481:
 </code> </code>
  
-=== A Working Example ===+==== nut_cgi working example ====
 <code> <code>
 config host config host
Line 242: Line 489:
 </code> </code>
 ===== Pre 18.06 ===== ===== Pre 18.06 =====
 +
 +<wrap lo>
 +In __older release(s)__ there's problem with some USB UPSes (e.g. EATON) that are not recognized by usbhid-ups. This is apparently a bug in libusb-compat, since libusb (0.1.4) can recognize them.
 +
 +You can work around this by installing Attitude Adjustment, manually installing packages __libusb-compat__ and **nut-driver-usbhid-ups**, then manualy remove __libusb-compat__ and install **libusb** istead (packages in trunk may break on having manually installed libusb)
 +</wrap>
  
 You will want to have packages **nut**, **nut-server** and **nut-client** packages installed to have main functionality. You will want to have packages **nut**, **nut-server** and **nut-client** packages installed to have main functionality.
  • Last modified: 2019/08/31 07:08
  • by tmomas