[Nut-upsdev] [Nut-upsuser] APC Modbus support is finally here!

d tbsky tbskyd at gmail.com
Wed Nov 22 14:05:09 GMT 2023


Jim Klimov via Nut-upsuser <nut-upsuser at alioth-lists.debian.net>
>
> Got an update for APC Modbus users: a new PR is waiting for real-life testing for settable variables and instant commands support.
>
> https://github.com/networkupstools/nut/pull/2184
>
> As before, a custom build of libmodbus may be needed for USB support (detailed in the earlier PR), but Serial and TCP may already be well served by a distro near you!

Hi:
   I got a new APC SRT3000XL and tested the new driver "apc_modbus".
the ups works fine with nut+apcupsd.  the new driver "apc_modbus" has
result below:

1.  upsrw can write the variable "battery.date". but the new value
will only show after restarting apc_modbus. and in my case the written
data will shift one day. eg the command "upsrw -s
battery.date=2023-09-13" will return "2023-09-12" later.
2. the upscmd power-off related commands (like load.*, outlet.*,
shutdown.*) can not work. so it can not shutdown the ups. (I think
this is the most important feature which needs to be fixed)
3. upscmd command works: beeper.mute, bypass.start, bypass.stop,
test.battery.start, test.battery.stop, test.panel.start
4. I can't  attach any load so I can not test calibrate.start. but I
found the new driver seems missing an import item which apcupsd have:
"ups.test.result"

below are some raw data:
> data read from  nut+apcupsd (for reference):
battery.charge: 99.0
battery.charge.low: 5
battery.date: 2023-11-21
battery.runtime: 57000.0
battery.runtime.low: 180
battery.voltage: 109.0
device.mfr: APC
device.model: Smart-UPS SRT    3000
device.serial: AS2032296523
device.type: ups
driver.debug: 0
driver.flag.allow_killpower: 0
driver.name: apcupsd-ups
driver.parameter.pollinterval: 10
driver.parameter.port: localhost
driver.parameter.synchronous: auto
driver.state: quiet
driver.version: 2.8.1
driver.version.internal: 0.71
input.frequency: 60.0
input.voltage: 224.7
output.current: 0.00
output.frequency: 60.0
output.voltage: 207.6
output.voltage.nominal: 208
power.percent: 0.0
ups.date: 2023-11-22
ups.delay.shutdown: 0
ups.delay.start: 0
ups.firmware: UPS 15.5
ups.firmware.aux: 00.5
ups.id: APC UPS
ups.load: 0.0
ups.mfr: APC
ups.mfr.date: 2020-08-10
ups.model: Smart-UPS SRT    3000
ups.power.nominal: 3000
ups.realpower.nominal: 2700.0
ups.serial: AS2032296523
ups.status: OL
ups.temperature: 27.0
ups.test.result: OK
ups.time: 17:24:25

> data read from new driver "apc_modbus"
battery.charge: 99.00
battery.date: 2023-11-21
battery.date.maintenance: 2028-05-21
battery.runtime: 57425
battery.temperature: 29.00
battery.voltage: 108.69
device.mfr: American Power Conversion
device.model: Smart-UPS SRT    3000
device.serial: AS2032296523
device.type: ups
driver.debug: 0
driver.flag.allow_killpower: 0
driver.name: apc_modbus
driver.parameter.pollinterval: 10
driver.parameter.port: /dev/ttyS0
driver.parameter.synchronous: yes
driver.state: quiet
driver.version: 2.8.1
driver.version.internal: 0.10
experimental.output.energy: 7
input.transfer.high: 220
input.transfer.low: 184
input.transfer.reason: TestEnded
input.voltage: 224.77
outlet.group.0.delay.reboot: 8
outlet.group.0.delay.shutdown: 0
outlet.group.0.delay.start: 0
outlet.group.0.name: Unswitched Group
outlet.group.1.delay.reboot: 8
outlet.group.1.delay.shutdown: 90
outlet.group.1.delay.start: 0
outlet.group.1.name: Outlet Group 1
outlet.group.2.delay.reboot: 8
outlet.group.2.delay.shutdown: 90
outlet.group.2.delay.start: 0
outlet.group.2.name: Outlet Group 2
outlet.group.3.delay.reboot: 8
outlet.group.3.delay.shutdown: 90
outlet.group.3.delay.start: 0
outlet.group.3.name: Outlet Group 3
outlet.group.count: 2
output.current: 0.00
output.frequency: 60.00
output.voltage: 207.62
ups.delay.reboot: 8
ups.delay.shutdown: 0
ups.delay.start: 0
ups.efficiency: LoadTooLow
ups.firmware: UPS 15.5
ups.id: APC UPS
ups.load: 0.00
ups.mfr: American Power Conversion
ups.mfr.date: 2020-08-10
ups.model: Smart-UPS SRT    3000
ups.power: 0.00
ups.power.nominal: 3000
ups.realpower: 0.00
ups.realpower.nominal: 2700
ups.serial: AS2032296523
ups.status: OL
ups.timer.reboot: -1
ups.timer.shutdown: -1
ups.timer.start: -1

>upsrw -l myups
[battery.date]
Battery change date
Type: NUMBER
Value: 2023-11-21

[driver.debug]
Current debug verbosity level of the driver program
Type: NUMBER
Value: 0

[driver.flag.allow_killpower]
Safety flip-switch to allow the driver daemon to send UPS shutdown
command (accessible via driver.killpower)
Type: NUMBER
Value: 0

[input.transfer.high]
High voltage transfer point (V)
Type: NUMBER
Value: 220

[input.transfer.low]
Low voltage transfer point (V)
Type: NUMBER
Value: 184

[outlet.group.0.delay.reboot]
Description unavailable
Type: NUMBER
Value: 8

[outlet.group.0.delay.shutdown]
Description unavailable
Type: NUMBER
Value: 0

[outlet.group.0.delay.start]
Description unavailable
Type: NUMBER
Value: 0

[outlet.group.0.name]
Description unavailable
Type: STRING
Maximum length: 16
Value: Unswitched Group

[outlet.group.1.delay.reboot]
Description unavailable
Type: NUMBER
Value: 8

[outlet.group.1.delay.shutdown]
Description unavailable
Type: NUMBER
Value: 90

[outlet.group.1.delay.start]
Description unavailable
Type: NUMBER
Value: 0

[outlet.group.1.name]
Description unavailable
Type: STRING
Maximum length: 16
Value: Outlet Group 1

[outlet.group.2.delay.reboot]
Description unavailable
Type: NUMBER
Value: 8

[outlet.group.2.delay.shutdown]
Description unavailable
Type: NUMBER
Value: 90

[outlet.group.2.delay.start]
Description unavailable
Type: NUMBER
Value: 0

[outlet.group.2.name]
Description unavailable
Type: STRING
Maximum length: 16
Value: Outlet Group 2

[outlet.group.3.delay.reboot]
Description unavailable
Type: NUMBER
Value: 8

[outlet.group.3.delay.shutdown]
Description unavailable
Type: NUMBER
Value: 90

[outlet.group.3.delay.start]
Description unavailable
Type: NUMBER
Value: 0

[outlet.group.3.name]
Description unavailable
Type: STRING
Maximum length: 16
Value: Outlet Group 3

[ups.delay.reboot]
Interval to wait before rebooting the UPS (seconds)
Type: NUMBER
Value: 8

[ups.delay.shutdown]
Interval to wait after shutdown with delay command (seconds)
Type: NUMBER
Value: 0

[ups.delay.start]
Interval to wait before (re)starting the load (seconds)
Type: NUMBER
Value: 0

[ups.id]
UPS system identifier
Type: STRING
Maximum length: 16
Value: APC UPS


>upscmd -l myups
Instant commands supported on UPS [ftups]:

beeper.mute - Temporarily mute the UPS beeper
bypass.start - Put the UPS in bypass mode
bypass.stop - Take the UPS out of bypass mode
calibrate.start - Start run time calibration
calibrate.stop - Stop run time calibration
driver.killpower - Tell the driver daemon to initiate UPS shutdown;
should be unlocked with driver.flag.allow_killpower option or variable
setting
driver.reload - Reload running driver configuration from the file
system (only works for changes in some options)
driver.reload-or-error - Reload running driver configuration from the
file system (only works for changes in some options); return an error
if something changed and could not be applied live (so the caller can
restart it with new options)
driver.reload-or-exit - Reload running driver configuration from the
file system (only works for changes in some options); exit the running
driver if something changed and could not be applied live (so service
management framework can restart it with new options)
load.off - Turn off the load immediately
load.off.delay - Turn off the load with a delay (seconds)
load.on - Turn on the load immediately
load.on.delay - Turn on the load with a delay (seconds)
outlet.0.load.cycle - Description unavailable
outlet.0.load.off - Description unavailable
outlet.0.load.on - Description unavailable
outlet.0.shutdown.return - Description unavailable
outlet.1.load.cycle - Description unavailable
outlet.1.load.off - Turn off the load on outlet 1 immediately
outlet.1.load.on - Turn on the load on outlet 1 immediately
outlet.1.shutdown.return - Turn off the outlet 1 and return when power is back
outlet.2.load.cycle - Description unavailable
outlet.2.load.off - Turn off the load on outlet 2 immediately
outlet.2.load.on - Turn on the load on outlet 2 immediately
outlet.2.shutdown.return - Turn off the outlet 2 and return when power is back
outlet.3.load.cycle - Description unavailable
outlet.3.load.off - Description unavailable
outlet.3.load.on - Description unavailable
outlet.3.shutdown.return - Description unavailable
shutdown.reboot - Shut down the load briefly while rebooting the UPS
shutdown.reboot.graceful - Delay briefly then shut down the load while
rebooting the UPS
shutdown.return - Turn off the load and return when power is back
shutdown.stayoff - Turn off the load and remain off
test.battery.start - Start a battery test
test.battery.stop - Stop the battery test
test.panel.start - Start testing the UPS panel



More information about the Nut-upsdev mailing list