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

Jim Klimov jimklimov+nut at gmail.com
Wed Nov 22 14:20:41 GMT 2023


Great! Thanks for the info, and hope the driver author can address the nits
(forwarding now...)

Jim

On Wed, Nov 22, 2023, 15:05 d tbsky <tbskyd at gmail.com> wrote:

> 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/nut-upsuser/attachments/20231122/2f5e251d/attachment-0001.htm>


More information about the Nut-upsuser mailing list