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! Jim On Sun, Oct 22, 2023, 01:08 Jim Klimov <jimklimov+nut at gmail.com> wrote:> Hello fellow NUTs :) > > It is my great pleasure to get a bit of sunshine from other people's > work, and announce that the initial pull request for `apc_modbus` NUT > driver has recently been merged to the main NUT codebase, so it would be > part of an eventual 2.8.1 release. Great thanks go to Axel Gembe for the > implementation, and to numerous community members for testing as well as > their bug-fix and feature suggestions. It is my understanding that some > thanks also goes to the apcupsd project that served as inspiration for data > points that we can collect from the devices, as well as for its unfortunate > development inactivity that convinced someone to step up and implement a > native NUT driver for the "new" APC devices (~2010+) which all but > deprecated USB HID support. Really, this feature was very long awaited! > > At the moment the driver is "read-only", with commands and variables to > be implemented later (hopefully some coming before 2.8.1 cut-off point). It > can be used with the already published and packaged libmodbus versions for > Serial-port and TCP support (with add-in network management cards). However > please note that USB support is not currently part of the upstream library, > but rather is provided by a fork (PR pending). It is not certain > whether/when exactly such a feature will appear in the upstream library > project - it does not seem very actively maintained at the moment :\ > > For more details please see > https://github.com/networkupstools/nut/pull/2063 and > https://github.com/networkupstools/nut/issue/139. > > Jim Klimov > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://alioth-lists.debian.net/pipermail/nut-upsuser/attachments/20231118/d596184f/attachment.htm>
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 myupsInstant 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