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

d tbsky tbskyd at gmail.com
Mon Nov 27 12:50:03 GMT 2023


Jim Klimov <jimklimov+nut at gmail.com>
>
> I believe some fixes were applied to the branch since your report (most visibly, about battery time settings), are you in position to test how it behaves now? :)

Hi:
   I got another ups for testing. so I test the new commit for both
APC SRT3000XL and SMT2200RM2U. the results below:

1. I get the new attribute "ups.test.result" for both ups and it is fine.

2. upsrw battery.date works fine for both UPS. and the modified result
shows immediately. no need to restart the driver. (I still need to
restart the driver to get correct battery.date.maintenance. but I
think that's not very important. there's not even that attribute at
apcupsd.)

3. test.battery.stop works fine at SRT3000XL. but it is not working at
SMT2200RM2U (same experience as the driver author). I think it is not
important. BTW, at program "apctest" from apcupsd, the function
"test.battery.start" is called "self test", and the physical ups panel
also shows "self test". the function "test.panel.start" is called
"alarm test" at apctest. what bothers me is when testing, the ups
status will become "OB TEST". "OB" will cause the system shutdown when
I configured upssched for early shutdown. I had only saw one very old
APC ups which will show "OB" when testing/calibration. most will show
like "OL DISCHRG". but I think the information is from ups and can not
change?

4. almost all the power-related upscmd command(load.* outlet.*
shutdown.*) are not working. there is only one exception: ouetlet1.*
works at SMT2200RM2U (I test outlet.1.load.off). nothing works at
SRT3000XL. the new driver detect there are two outlet groups for both
UPS(outlet.group.count: 2). but SMT2200RM2U has only one outlet group.
since the new driver can not shutdown the ups, I wonder what's the
fastest method to test the function (previously I setup the ups and
unplug the utility from the ups for testing). is "upsrw
driver.flag.allow_killpower=1" then "upscmd driver.killpower" the
correct testing procedure?

5. the default/actual shutdown delay for both ups is 90 seconds(when
real testing under apcupsd). the "upsrw -l myups" has value "90" for
the attribute "outlet.group.1.delay.shutdown". but other attributes
related to the shutdown delay are all "0". BTW, apcupsd also shows "0"
shutdown delay although it can correctly shutdown ups.

below are the raw data for SMT2200RM2U:

>upsc myups
battery.charge: 100.00
battery.date: 2023-11-25
battery.date.maintenance: 2028-05-25
battery.runtime: 22320
battery.temperature: 24.69
battery.voltage: 54.53
device.mfr: American Power Conversion
device.model: Smart-UPS 2200
device.serial: AS1848260180
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.1
driver.version.internal: 0.10
experimental.output.energy: 0
input.transfer.high: 127
input.transfer.low: 106
input.transfer.reason: AcceptableInput
input.voltage: 109.39
outlet.group.0.delay.reboot: 8
outlet.group.0.delay.shutdown: 0
outlet.group.0.delay.start: 0
outlet.group.0.name: UPS Outlets
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: -1
outlet.group.2.delay.shutdown: -1
outlet.group.2.delay.start: -1
outlet.group.2.name:
outlet.group.3.delay.reboot: -1
outlet.group.3.delay.shutdown: -1
outlet.group.3.delay.start: -1
outlet.group.3.name:
outlet.group.count: 2
output.current: 0.00
output.frequency: 59.95
output.voltage: 109.39
ups.delay.reboot: 8
ups.delay.shutdown: 0
ups.delay.start: 0
ups.efficiency: LoadTooLow
ups.firmware: UPS 15.0
ups.id: APCUPS
ups.load: 0.00
ups.mfr: American Power Conversion
ups.mfr.date: 2018-11-26
ups.model: Smart-UPS 2200
ups.power: 0.00
ups.power.nominal: 2200
ups.realpower: 0.00
ups.realpower.nominal: 1980
ups.serial: AS1848260180
ups.status: OL HE
ups.test.result: Passed, Source: Protocol
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-25

[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: 127

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

[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: UPS Outlets

[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: -1

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

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

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

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

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

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

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

[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: APCUPS

>upscmd -l myups
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