Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

nutdrv_qx: init battery info always if it is known [issue #1279] #1652

Merged
merged 38 commits into from
Sep 14, 2023

Conversation

jimklimov
Copy link
Member

@jimklimov jimklimov commented Sep 6, 2022

Set C variables from dstate entries separately from "guesstimating" them.

May be the answer to issue #1279

  • Note detailed analysis posted there override.battery.packs doesn't work to adjust reported battery voltage #1279 (comment)
  • One big question that remains for me is whether we should "guesstimate" low/high voltages from nominal (as currently done in the PR) and whether we should "guesstimate" amount of battery packs from voltages (as currently not done in this PR) regardless of the device providing battery charge and runtime info "directly" - e.g. if the if clause for guesstimation should move lower. Note that for battery packs guesswork, it further queries qx_battery() to set more voltage-related variables, so I am not sure this is okay to do in all situations (even with devices that do serve data charge/runtime properly) or if those values would confuse something. However, the blazer driver seems to not ponder about this and "just works", which is a bit encouraging... CC @aquette @clepple @zykh

Also adds some troubleshooting aid for future similar reports.

@jimklimov jimklimov added bug CyberPower (CPS) Qx protocol driver Driver based on Megatec Q<number> such as new nutdrv_qx, or obsoleted blazer and some others labels Sep 6, 2022
@jimklimov jimklimov added this to the 2.8.1 milestone Sep 6, 2022
@jimklimov jimklimov added need testing Code looks reasonable, but the feature would better be tested against hardware or OSes need more info labels Sep 9, 2022
@jimklimov jimklimov changed the title nutdrv_qx: init battery info always if it is known nutdrv_qx: init battery info always if it is known [issue #1279] Sep 14, 2022
…attery.voltage.low/high/nom if known always (not just if battery.charge or battery.runtime are not served) [networkupstools#1279]
…t() to remain specific about the code source
…(so if sscanf() somehow fails/skips, we have a non-toxic outcome)
…y.voltage" right away, if we know the batt.packs and that battery_voltage_reports_one_pack [networkupstools#1279]
@jimklimov
Copy link
Member Author

In fact, the "Voltronic" driver reports battery.(packs|charge|runtime|voltage|...) directly while "Voltronic-QS" does not have mappings for all of that (only serves battery.voltage).

@jimklimov jimklimov added the Shutdowns and overrides and battery level triggers Issues and PRs about system shutdown, especially if battery charge/runtime remaining is involved label Aug 29, 2023
…ons since master versions moved while the PR networkupstools#1652 was queued

Signed-off-by: Jim Klimov <[email protected]>
jimklimov added a commit that referenced this pull request Sep 2, 2023
Cherry-pick nonfunctional improvements from PR #1652 (issue #1279)
@jimklimov jimklimov mentioned this pull request Sep 4, 2023
@jimklimov
Copy link
Member Author

jimklimov commented Sep 4, 2023

After giving it some thought, for the strange charge values like 67%-70% seen in reports for this PR and issue #1279, I think the formula in analysis above is a bit wrong, maybe:

 batt.chrg.act = 100 * (batt.volt.act - batt.volt.low) / (batt.volt.high - batt.volt.low);

Why should it care about batt.volt.high for the "interesting" range (e.g. up to 14V for 12V PbAc batteries when freshly re/over-charged)? What it should care about is the difference between NOMINAL (12V) and discharged (low =~ 10V) as the working range!

On the other hand, this formula seems to be the only use of the "high" values beside setting them and checking if they are set. And a freshly charged battery that is kept freshly charged (not in ONBATT mode) quite correctly hovers at that higher voltage?.. And perhaps boosting it in this PR from 130/120th to 150/120th to match some physical meaning was a bit too naive?

To reiterate, as far as the current formula in several drivers and methods goes, the reported current voltage equal to or greater than the "high" (a common occurrence per DDL dumps) means a ratio over 1 in the division, which gets truncated to 100%. And it is easier being 8+% above the nominal value than to be 25+% over :)

…to 130/120 of the nominal (back from experimental 150/120) [networkupstools#1652]

Signed-off-by: Jim Klimov <[email protected]>
@jimklimov
Copy link
Member Author

jimklimov commented Sep 13, 2023

Update from mailing list request for community to test this PR:

... one of our voltronic ups caught fire last year. so we abandoned them and bought APC. now I have only one 10KV ups to test.

> ./nutdrv_qx -a ftups -u root -DDDDDD -d1
Network UPS Tools - Generic Q* USB/Serial driver 0.35 (2.8.0-2359-g6c0032e52)
USB communication driver (libusb 1.0) 0.45
   0.000000     [D1] Network UPS Tools version 2.8.0-2359-g6c0032e52
(release/snapshot of 2.8.0.1) built with gcc (GCC) 11.3.1 20221121
(Red Hat 11.3.1-4) and configured with flags: --enable-Wcolor
--enable-keep_nut_report_feature --with-all=auto --with-cgi=auto
--with-serial=auto --with-dev=auto --with-doc=skip
--with-nut_monitor=auto --with-pynut=auto
--disable-force-nut-version-header --enable-check-NIT
--enable-maintainer-mode
   0.000011     [D1] debug level is '6'
   0.000014     [D5] send_to_all: SETINFO driver.debug "6"
   0.000018     [D5] send_to_all: SETFLAGS driver.debug RW NUMBER
   0.000815     [D1] Succeeded to become_user(root): now UID=0 GID=0
   0.000822     [D5] send_to_all: SETINFO device.type "ups"
   0.000825     [D5] send_to_all: SETINFO driver.state "init.device"
   0.000827     [D1] upsdrv_initups...
   0.003147     [D2] Checking device 1 of 11 (8087/8000)
   0.057855     [D2] - VendorID: 8087
   0.057861     [D2] - ProductID: 8000
   0.057862     [D2] - Manufacturer: unknown
   0.057864     [D2] - Product: unknown
   0.057865     [D2] - Serial Number: unknown
   0.057867     [D2] - Bus: 002
   0.057868     [D2] - Device: 002
   0.057870     [D2] - Device release number: 0005
   0.057873     [D2] Trying to match device
   0.057875     [D3] match_function_regex: matching a device...
   0.057888     [D2] Device does not match - skipping
   0.071830     [D2] Checking device 2 of 11 (1D6B/0002)
   0.078881     [D2] - VendorID: 1d6b
   0.078885     [D2] - ProductID: 0002
   0.078887     [D2] - Manufacturer: Linux 5.14.0-162.23.1.el9_1.x86_64 ehci_hcd
   0.078888     [D2] - Product: EHCI Host Controller
   0.078890     [D2] - Serial Number: 0000:00:1d.0
   0.078891     [D2] - Bus: 002
   0.078893     [D2] - Device: 001
   0.078894     [D2] - Device release number: 0514
   0.078897     [D2] Trying to match device
   0.078898     [D3] match_function_regex: matching a device...
   0.078912     [D2] Device does not match - skipping
   0.091359     [D2] Checking device 3 of 11 (8087/8008)
   0.145626     [D2] - VendorID: 8087
   0.145635     [D2] - ProductID: 8008
   0.145637     [D2] - Manufacturer: unknown
   0.145638     [D2] - Product: unknown
   0.145640     [D2] - Serial Number: unknown
   0.145641     [D2] - Bus: 001
   0.145643     [D2] - Device: 002
   0.145645     [D2] - Device release number: 0005
   0.145648     [D2] Trying to match device
   0.145661     [D3] match_function_regex: matching a device...
   0.145664     [D2] Device does not match - skipping
   0.159837     [D2] Checking device 4 of 11 (1D6B/0002)
   0.166862     [D2] - VendorID: 1d6b
   0.166867     [D2] - ProductID: 0002
   0.166868     [D2] - Manufacturer: Linux 5.14.0-162.23.1.el9_1.x86_64 ehci_hcd
   0.166870     [D2] - Product: EHCI Host Controller
   0.166871     [D2] - Serial Number: 0000:00:1a.0
   0.166873     [D2] - Bus: 001
   0.166874     [D2] - Device: 001
   0.166876     [D2] - Device release number: 0514
   0.166878     [D2] Trying to match device
   0.166880     [D3] match_function_regex: matching a device...
   0.166894     [D2] Device does not match - skipping
   0.179366     [D2] Checking device 5 of 11 (1D6B/0003)
   0.200847     [D2] - VendorID: 1d6b
   0.200851     [D2] - ProductID: 0003
   0.200853     [D2] - Manufacturer: Linux 5.14.0-162.23.1.el9_1.x86_64 xhci-hcd
   0.200854     [D2] - Product: xHCI Host Controller
   0.200856     [D2] - Serial Number: 0000:00:14.0
   0.200857     [D2] - Bus: 004
   0.200858     [D2] - Device: 001
   0.200860     [D2] - Device release number: 0514
   0.200862     [D2] Trying to match device
   0.200864     [D3] match_function_regex: matching a device...
   0.200877     [D2] Device does not match - skipping
   0.200931     [D2] Checking device 6 of 11 (9966/0202)
   0.202237     [D2] - VendorID: 9966
   0.202254     [D2] - ProductID: 0202
   0.202256     [D2] - Manufacturer: PSTEK
   0.202268     [D2] - Product: PSTEK Combo KVM 8/16 V:2.00
   0.202269     [D2] - Serial Number: unknown
   0.202271     [D2] - Bus: 003
   0.202272     [D2] - Device: 003
   0.202274     [D2] - Device release number: 0000
   0.202275     [D2] Trying to match device
   0.202276     [D3] match_function_regex: matching a device...
   0.202279     [D2] Device does not match - skipping
   0.202300     [D2] Checking device 7 of 11 (0557/2419)
   0.202309     [D2] - VendorID: 0557
   0.202327     [D2] - ProductID: 2419
   0.202329     [D2] - Manufacturer: unknown
   0.202331     [D2] - Product: unknown
   0.202334     [D2] - Serial Number: unknown
   0.202346     [D2] - Bus: 003
   0.202348     [D2] - Device: 004
   0.202350     [D2] - Device release number: 0100
   0.202353     [D2] Trying to match device
   0.202365     [D3] match_function_regex: matching a device...
   0.202367     [D2] Device does not match - skipping
   0.202371     [D2] Checking device 8 of 11 (0557/7000)
   0.202377     [D2] - VendorID: 0557
   0.202379     [D2] - ProductID: 7000
   0.202380     [D2] - Manufacturer: unknown
   0.202382     [D2] - Product: unknown
   0.202384     [D2] - Serial Number: unknown
   0.202386     [D2] - Bus: 003
   0.202389     [D2] - Device: 002
   0.202391     [D2] - Device release number: 0000
   0.202393     [D2] Trying to match device
   0.202395     [D3] match_function_regex: matching a device...
   0.202398     [D2] Device does not match - skipping
   0.202402     [D2] Checking device 9 of 11 (0665/5161)
   0.204923     [D1] nut_libusb_open get iManufacturer failed, retrying...
   0.207280     [D1] nut_libusb_open get iManufacturer failed, retrying...
   0.209669     [D1] nut_libusb_open get iManufacturer failed, retrying...
   0.212022     [D1] nut_libusb_open get iProduct failed, retrying...
   0.214338     [D1] nut_libusb_open get iProduct failed, retrying...
   0.216830     [D1] nut_libusb_open get iProduct failed, retrying...
   0.216846     [D2] - VendorID: 0665
   0.216847     [D2] - ProductID: 5161
   0.216849     [D2] - Manufacturer: unknown
   0.216850     [D2] - Product: unknown
   0.216852     [D2] - Serial Number: unknown
   0.216864     [D2] - Bus: 003
   0.216866     [D2] - Device: 006
   0.216868     [D2] - Device release number: 0001
   0.216870     [D2] Trying to match device
   0.216872     [D3] match_function_regex: matching a device...
   0.216885     [D2] Device matches
   0.216886     [D2] Reading first configuration descriptor
   0.216896     [D3] libusb_kernel_driver_active() returned 0: Success
   0.216926     [D2] Claimed interface 0 successfully
   0.216929     [D3] nut_usb_set_altinterface: skipped libusb_set_interface_alt_setting(udev, 0, 0)
   0.216946     [D5] send_to_all: SETINFO ups.vendorid "0665"
   0.216950     [D5] send_to_all: SETINFO ups.productid "5161"
   0.218318     [D3] send: QGS
   0.278886     [D5] read [  0]: (8 bytes) => 28 32 32 31 2e 33 20 35
   0.310887     [D5] read [  8]: (8 bytes) => 39 2e 39 20 32 31 39 2e
   0.342884     [D5] read [ 16]: (8 bytes) => 35 20 35 39 2e 39 20 30
   0.382879     [D5] read [ 24]: (8 bytes) => 30 32 2e 38 20 30 30 37
   0.414887     [D5] read [ 32]: (8 bytes) => 20 33 36 32 2e 33 20 33
   0.454888     [D5] read [ 40]: (8 bytes) => 36 31 2e 38 20 32 37 32
   0.486869     [D5] read [ 48]: (8 bytes) => 2e 39 20 2d 2d 2d 2e 2d
   0.518892     [D5] read [ 56]: (8 bytes) => 20 30 32 32 2e 39 20 31
   0.558896     [D5] read [ 64]: (8 bytes) => 30 30 30 30 30 30 30 30
   0.574889     [D5] read [ 72]: (8 bytes) => 30 31 30 0d 20 32 37 32
   0.574909     [D3] read: (221.3 59.9 219.5 59.9 002.8 007 362.3 361.8 272.9 ---.- 022.9 100000000010
   0.574928     [D5] send_to_all: SETINFO input.voltage "221.3"
   0.576176     [D3] send: QPI
   0.622874     [D5] read [  0]: (8 bytes) => 28 50 49 30 32 0d 00 00
   0.622880     [D3] read: (PI02
   0.622937     [D5] send_to_all: SETINFO ups.firmware.aux "P02"
   0.622940     Using protocol: Voltronic 0.08
   0.622942     [D5] send_to_all: SETINFO driver.state "init.quiet"
   0.622956     [D5] send_to_all: SETINFO driver.version "2.8.0-2359-g6c0032e52"
   0.622959     [D5] send_to_all: SETINFO driver.version.internal "0.35"
   0.622963     [D5] send_to_all: SETINFO [driver.name](http://driver.name/) "nutdrv_qx"
   0.622965     [D5] send_to_all: SETINFO driver.state "[init.info](http://init.info/)"
   0.622967     [D1] upsdrv_initinfo...
   0.622980     [D5] send_to_all: SETINFO driver.version.data "Voltronic 0.08"
   0.624104     [D3] send: QRI
   0.678874     [D5] read [  0]: (8 bytes) => 28 32 32 30 2e 30 20 30
   0.718855     [D5] read [  8]: (8 bytes) => 34 35 20 32 34 30 2e 30
   0.742898     [D5] read [ 16]: (8 bytes) => 20 36 30 2e 30 0d 00 00
   0.742910     [D3] read: (220.0 045 240.0 60.0
   0.742946     [D5] send_to_all: SETINFO output.voltage.nominal "220.0"
   0.742952     [D5] send_to_all: SETINFO output.current.nominal "45"
   0.742958     [D5] send_to_all: SETINFO battery.voltage.nominal "240.0"
   0.742964     [D5] send_to_all: SETINFO output.frequency.nominal "60.0"
   0.744242     [D3] send: QMD
   0.798887     [D5] read [  0]: (8 bytes) => 28 23 23 23 23 23 23 23
   0.838882     [D5] read [  8]: (8 bytes) => 23 23 23 23 47 31 30 4b
   0.870886     [D5] read [ 16]: (8 bytes) => 20 23 23 31 30 30 30 30
   0.910884     [D5] read [ 24]: (8 bytes) => 20 38 30 20 31 2f 31 20
   0.942903     [D5] read [ 32]: (8 bytes) => 32 33 30 20 32 33 30 20
   0.974868     [D5] read [ 40]: (8 bytes) => 32 30 20 31 32 2e 30 0d
   0.974873     [D3] read: (###########G10K ##10000 80 1/1 230 230 20 12.0
   0.974882     [D5] send_to_all: SETINFO device.model "G10K"
   0.974887     [D5] send_to_all: SETINFO ups.power.nominal "10000"
   0.974893     [D5] send_to_all: SETINFO output.powerfactor "0.8"
   0.974903     [D5] send_to_all: SETINFO input.phases "1"
   0.974907     [D5] send_to_all: SETINFO output.phases "1"
   0.974911     [D5] send_to_all: SETINFO input.voltage.nominal "230.0"
   0.976111     [D3] send: F
   1.022870     [D5] read [  0]: (8 bytes) => 23 32 32 30 2e 30 20 30
   1.062876     [D5] read [  8]: (8 bytes) => 34 35 20 32 34 30 2e 30
   1.086867     [D5] read [ 16]: (8 bytes) => 20 36 30 2e 30 0d 00 00
   1.086872     [D3] read: #220.0 045 240.0 60.0
   1.086881     [D5] send_to_all: SETINFO input.current.nominal "45.0"
   1.086901     [D5] send_to_all: SETINFO input.frequency.nominal "60.0"
   1.088234     [D3] send: QMF
   1.134884     [D5] read [  0]: (8 bytes) => 28 4e 41 4b 0d 00 00 00
   1.134903     [D3] read: (NAK
   1.134905     [D2] qx_process_answer: query rejected by the UPS (device.mfr)
   1.136185     [D3] send: QVFW
   1.198873     [D5] read [  0]: (8 bytes) => 28 56 45 52 46 57 3a 30
   1.230865     [D5] read [  8]: (8 bytes) => 30 30 37 37 2e 31 33 0d
   1.230870     [D3] read: (VERFW:00077.13
   1.230874     [D5] send_to_all: SETINFO ups.firmware "00077.13"
   1.232171     [D3] send: QID
   1.278886     [D5] read [  0]: (8 bytes) => 28 4e 41 4b 0d 00 00 00
   1.278896     [D3] read: (NAK
   1.278909     [D2] qx_process_answer: query rejected by the UPS (device.serial)
   1.280047     [D3] send: I
   1.326866     [D5] read [  0]: (8 bytes) => 20 20 20 20 20 20 20 20
   1.334901     [D5] read [  8]: (8 bytes) => 0d 00 00 00 00 00 00 00
   1.334906     [D3] read:
   1.334908     [D2] qx_process_answer: short reply (device.mfr)
   1.336115     [D3] send: QGS
   1.390871     [D5] read [  0]: (8 bytes) => 28 32 31 39 2e 35 20 35
   1.430868     [D5] read [  8]: (8 bytes) => 39 2e 39 20 32 32 30 2e
   1.462877     [D5] read [ 16]: (8 bytes) => 34 20 36 30 2e 30 20 30
   1.502865     [D5] read [ 24]: (8 bytes) => 30 32 2e 38 20 30 30 37
   1.534867     [D5] read [ 32]: (8 bytes) => 20 33 36 31 2e 38 20 33
   1.566867     [D5] read [ 40]: (8 bytes) => 36 31 2e 38 20 32 37 32
   1.606862     [D5] read [ 48]: (8 bytes) => 2e 39 20 2d 2d 2d 2e 2d
   1.638861     [D5] read [ 56]: (8 bytes) => 20 30 32 32 2e 39 20 31
   1.678883     [D5] read [ 64]: (8 bytes) => 30 30 30 30 30 30 30 30
   1.694864     [D5] read [ 72]: (8 bytes) => 30 31 30 0d 20 32 37 32
   1.694884     [D3] read: (219.5 59.9 220.4 60.0 002.8 007 361.8 361.8 272.9 ---.- 022.9 100000000010
   1.694914     [D5] send_to_all: SETINFO input.frequency "59.9"
   1.694921     [D5] send_to_all: SETINFO output.voltage "220.4"
   1.694926     [D5] send_to_all: SETINFO output.frequency "60.0"
   1.694932     [D5] send_to_all: SETINFO output.current "2.8"
   1.694936     [D5] send_to_all: SETINFO ups.load "7"
   1.694940     [D5] send_to_all: SETINFO battery.voltage "272.9"
   1.694945     [D5] send_to_all: SETINFO ups.temperature "22.9"
   1.694962     [D5] send_to_all: SETINFO ups.type "online"
   1.694967     [D5] update_status: OL
   1.694970     [D5] update_status: !LB
   1.694988     [D5] update_status: !CAL
   1.695003     [D5] update_status: !FSD
   1.695007     [D5] send_to_all: SETINFO ups.beeper.status "enabled"
   1.696295     [D3] send: QMOD
   1.734859     [D5] read [  0]: (8 bytes) => 28 4c 0d 00 00 00 00 00
   1.734878     [D3] read: (L
   1.734891     [D5] update_status: OL
   1.736229     [D3] send: QWS
   1.790912     [D5] read [  0]: (8 bytes) => 28 30 30 30 30 30 30 30
   1.830878     [D5] read [  8]: (8 bytes) => 30 30 30 30 30 30 30 30
   1.862874     [D5] read [ 16]: (8 bytes) => 30 30 30 30 30 30 30 30
   1.894869     [D5] read [ 24]: (8 bytes) => 30 30 30 30 30 30 30 30
   1.934865     [D5] read [ 32]: (8 bytes) => 30 30 30 30 30 30 30 30
   1.966853     [D5] read [ 40]: (8 bytes) => 30 30 30 30 30 30 30 30
   2.006871     [D5] read [ 48]: (8 bytes) => 30 30 30 30 30 30 30 30
   2.038858     [D5] read [ 56]: (8 bytes) => 30 30 30 30 30 30 30 30
   2.046851     [D5] read [ 64]: (8 bytes) => 30 0d 30 30 30 30 30 30
   2.046870     [D3] read: (0000000000000000000000000000000000000000000000000000000000000000
   2.048166     [D3] send: QBV
   2.102862     [D5] read [  0]: (8 bytes) => 28 32 37 33 2e 32 20 32
   2.142871     [D5] read [  8]: (8 bytes) => 30 20 30 31 20 31 30 30
   2.158875     [D5] read [ 16]: (8 bytes) => 20 30 31 30 0d 00 00 00
   2.158880     [D3] read: (273.2 20 01 100 010
   2.158886     battery_number: 20
   2.158895     battery_number, settable range: 1..9
   2.158904     [D5] send_to_all: SETINFO battery.packs "1"
   2.158907     [D5] send_to_all: SETFLAGS battery.packs RW
   2.158911     [D5] send_to_all: ADDRANGE battery.packs 1 99
   2.158914     [D5] send_to_all: SETFLAGS battery.packs RW NUMBER
   2.158919     [D5] send_to_all: SETINFO battery.charge "100"
   2.158924     [D5] send_to_all: SETINFO battery.runtime "600"
   2.160228     [D3] send: QLDL
   2.206859     [D5] read [  0]: (8 bytes) => 28 4e 41 4b 0d 00 00 00
   2.206874     [D3] read: (NAK
   2.206880     [D2] qx_process_answer: query rejected by the UPS (output.power.minimum.percent)
   2.206894     [D2] qx_process_answer: query rejected by the UPS (output.power.maximum.percent)
   2.208167     [D3] send: QFLAG
   2.270872     [D5] read [  0]: (8 bytes) => 28 45 70 62 72 61 73 64
   2.310890     [D5] read [  8]: (8 bytes) => 74 69 44 6f 76 65 66 6a
   2.318849     [D5] read [ 16]: (8 bytes) => 6d 0d 00 00 00 00 00 00
   2.318867     [D3] read: (EpbrasdtiDovefjm
   2.318910     [D5] send_to_all: SETINFO ups.start.auto "yes"
   2.318915     [D5] send_to_all: SETFLAGS ups.start.auto RW
   2.318928     [D5] send_to_all: ADDENUM ups.start.auto "no"
   2.318930     [D5] send_to_all: ADDENUM ups.start.auto "yes"
   2.318945     [D5] send_to_all: SETINFO battery.protection "yes"
   2.318948     [D5] send_to_all: SETFLAGS battery.protection RW
   2.318951     [D5] send_to_all: ADDENUM battery.protection "no"
   2.318964     [D5] send_to_all: ADDENUM battery.protection "yes"
   2.318969     [D4] ups_infoval_set: failed to preprocess value [battery.energysave: EpbrasdtiDovefjm]
   2.318973     [D4] ups_infoval_set: failed to preprocess value [ups.start.battery: EpbrasdtiDovefjm]
   2.318989     [D5] send_to_all: SETINFO outlet.0.switchable "no"
   2.318992     [D5] send_to_all: SETFLAGS outlet.0.switchable RW
   2.318994     [D5] send_to_all: ADDENUM outlet.0.switchable "no"
   2.318996     [D5] send_to_all: ADDENUM outlet.0.switchable "yes"
   2.319001     bypass_alarm: enabled
   2.319020     battery_alarm: enabled
   2.319036     bypass_when_off: disabled
   2.319055     alarm_control: enabled
   2.319060     converter_mode: disabled
   2.319072     eco_mode: disabled
   2.319075     battery_open_status_check: enabled
   2.319078     bypass_forbidding: disabled
   2.319083     [D4] ups_infoval_set: failed to preprocess value [site_fault_detection: EpbrasdtiDovefjm]
   2.319087     [D4] ups_infoval_set: failed to preprocess value [advanced_eco_mode: EpbrasdtiDovefjm]
   2.319091     [D4] ups_infoval_set: failed to preprocess value [constant_phase_angle: EpbrasdtiDovefjm]
   2.319096     [D4] ups_infoval_set: failed to preprocess value [limited_runtime_on_battery: EpbrasdtiDovefjm]
   2.319101     setvar(bypass_when_off, disabled)
   2.319104     bypass_when_off is already disabled
   2.319106     setvar: FAILED
   2.320434     [D3] send: QHE
   2.374864     [D5] read [  0]: (8 bytes) => 28 32 33 31 20 32 30 39
   2.382868     [D5] read [  8]: (8 bytes) => 20 0d 00 00 00 00 00 00
   2.382883     [D3] read: (231 209
   2.382916     [D5] send_to_all: SETINFO input.transfer.high "231"
   2.382929     [D5] send_to_all: SETFLAGS input.transfer.high RW
   2.382932     [D5] send_to_all: ADDRANGE input.transfer.high 231 244
   2.382934     [D5] send_to_all: SETFLAGS input.transfer.high RW NUMBER
   2.382950     [D5] send_to_all: SETINFO input.transfer.low "209"
   2.382953     [D5] send_to_all: SETFLAGS input.transfer.low RW
   2.382955     [D5] send_to_all: ADDRANGE input.transfer.low 196 209
   2.382957     [D5] send_to_all: SETFLAGS input.transfer.low RW NUMBER
   2.382962     [D5] send_to_all: SETINFO input.transfer.low.min "196"
   2.382966     [D5] send_to_all: SETINFO input.transfer.low.max "209"
   2.382970     [D5] send_to_all: SETINFO input.transfer.high.min "231"
   2.382975     [D5] send_to_all: SETINFO input.transfer.high.max "244"
   2.384206     [D3] send: QFRE
   2.430854     [D5] read [  0]: (8 bytes) => 28 4e 41 4b 0d 00 00 00
   2.430859     [D3] read: (NAK
   2.430861     [D2] qx_process_answer: query rejected by the UPS (input.frequency.high)
   2.430864     [D2] qx_process_answer: query rejected by the UPS (input.frequency.low)
   2.432092     [D3] send: QBYV
   2.494864     [D5] read [  0]: (8 bytes) => 28 32 36 34 20 31 31 30
   2.502857     [D5] read [  8]: (8 bytes) => 0d 00 00 00 00 00 00 00
   2.502875     [D3] read: (264 110
   2.502891     max_bypass_volt: 264
   2.502896     max_bypass_volt, settable range: 231..276
   2.502899     min_bypass_volt: 110
   2.502903     min_bypass_volt, settable range: 110..209
   2.504103     [D3] send: QBYF
   2.566858     [D5] read [  0]: (8 bytes) => 28 36 34 2e 30 20 35 36
   2.574855     [D5] read [  8]: (8 bytes) => 2e 30 0d 00 00 00 00 00
   2.574870     [D3] read: (64.0 56.0
   2.574876     max_bypass_freq: 64.0
   2.574891     max_bypass_freq, settable range: 61.0..64.0
   2.574895     min_bypass_freq: 56.0
   2.574909     min_bypass_freq, settable range: 56.0..59.0
   2.574915     [D2] setvar: nothing to do... [battery_number]
   2.576110     [D3] send: RE0
   2.798865     [D5] read [  0]: (8 bytes) => 00 00 00 00 00 00 00 00
   3.801004     [D3] read: Operation timed out (-7)
   3.801025     [D4] qx_process: failed to preprocess answer [battery.voltage.low]
   3.802276     [D3] send: QPD
   3.846839     [D5] read [  0]: (8 bytes) => 28 4e 41 4b 0d 00 00 00
   3.846844     [D3] read: (NAK
   3.846855     [D2] qx_process_answer: query rejected by the UPS (input_phase_angle)
   3.846872     [D2] qx_process_answer: query rejected by the UPS (output_phase_angle)
   3.848203     [D3] send: QPAR
   3.894852     [D5] read [  0]: (8 bytes) => 28 30 31 0d 00 00 00 00
   3.894870     [D3] read: (01
]  3.894874     [D2] voltronic_parallel: non numerical value
[voltronic_parallel: 01
]  3.894875     [D4] ups_infoval_set: failed to preprocess value
[voltronic_parallel: 01
   3.894883     [D5] send_to_all: ADDCMD load.off
   3.894898     [D5] send_to_all: ADDCMD load.on
   3.894900     [D5] send_to_all: ADDCMD shutdown.return
   3.894902     [D5] send_to_all: ADDCMD shutdown.stayoff
   3.894904     [D5] send_to_all: ADDCMD shutdown.stop
   3.894916     [D5] send_to_all: ADDCMD test.battery.start
   3.894918     [D5] send_to_all: ADDCMD test.battery.start.deep
   3.894920     [D5] send_to_all: ADDCMD test.battery.start.quick
   3.894922     [D5] send_to_all: ADDCMD test.battery.stop
   3.894934     [D5] send_to_all: ADDCMD beeper.toggle
   3.894937     [D5] send_to_all: ADDCMD beeper.enable
   3.894940     [D5] send_to_all: ADDCMD beeper.disable
   3.894942     [D5] send_to_all: ADDCMD bypass.start
   3.894956     [D5] send_to_all: ADDCMD bypass.stop
   3.894960     [D5] send_to_all: SETINFO ups.delay.start "180"
   3.894963     [D5] send_to_all: SETFLAGS ups.delay.start RW
   3.894978     [D5] send_to_all: ADDRANGE ups.delay.start 0 599940
   3.894981     [D5] send_to_all: SETFLAGS ups.delay.start RW NUMBER
   3.894983     [D5] send_to_all: SETINFO ups.delay.shutdown "30"
   3.894985     [D5] send_to_all: SETFLAGS ups.delay.shutdown RW
   3.894989     [D5] send_to_all: ADDRANGE ups.delay.shutdown 12 5940
   3.895001     [D5] send_to_all: SETFLAGS ups.delay.shutdown RW NUMBER
   3.895005     No values for battery high/low voltages
   3.895010     [D5] send_to_all: SETINFO battery.voltage.low "208.00"
   3.895023     [D5] send_to_all: SETINFO battery.voltage.high "260.00"
   3.895026     Using 'guesstimation' (low: 208.000000, high: 260.000000)!
   3.895037     setvar(ups.delay.start, 60)
   3.895041     [D2] setvar: setting server side variable ups.delay.start
   3.895044     [D5] send_to_all: SETINFO ups.delay.start "60"
   3.895046     setvar: SUCCEED
   3.895049     setvar(ups.delay.shutdown, 30)
   3.895051     setvar: nothing to do... [ups.delay.shutdown]
   3.895057     [D5] send_to_all: SETINFO driver.parameter.pollfreq "30"
   3.895065     [D5] send_to_all: SETINFO driver.state "init.updateinfo"
   3.895068     [D1] upsdrv_updateinfo...
   3.895071     [D1] Quick update...
   3.896659     [D3] send: QGS
   3.950819     [D5] read [  0]: (8 bytes) => 28 32 32 30 2e 34 20 35
   3.990855     [D5] read [  8]: (8 bytes) => 39 2e 39 20 32 31 38 2e
   4.022858     [D5] read [ 16]: (8 bytes) => 37 20 35 39 2e 39 20 30
   4.062843     [D5] read [ 24]: (8 bytes) => 30 32 2e 38 20 30 30 37
   4.094844     [D5] read [ 32]: (8 bytes) => 20 33 36 31 2e 38 20 33
   4.126840     [D5] read [ 40]: (8 bytes) => 36 31 2e 38 20 32 37 33
   4.166841     [D5] read [ 48]: (8 bytes) => 2e 32 20 2d 2d 2d 2e 2d
   4.198838     [D5] read [ 56]: (8 bytes) => 20 30 32 32 2e 39 20 31
   4.238833     [D5] read [ 64]: (8 bytes) => 30 30 30 30 30 30 30 30
   4.254852     [D5] read [ 72]: (8 bytes) => 30 31 30 0d 20 32 37 33
   4.254868     [D3] read: (220.4 59.9 218.7 59.9 002.8 007 361.8 361.8 273.2 ---.- 022.9 100000000010
   4.254872     [D5] update_status: OL
   4.254875     [D5] update_status: !LB
   4.254879     [D5] update_status: !CAL
   4.254896     [D5] update_status: !FSD
   4.254918     [D5] send_to_all: SETINFO ups.status "OL"
   4.254921     [D5] send_to_all: DATAOK
   4.254924     [D5] send_to_all: SETINFO driver.state "init.quiet"
   4.254938     [D5] send_to_all: SETINFO driver.parameter.pollinterval "10"
   4.254941     [D5] send_to_all: SETINFO driver.parameter.synchronous "yes"
   4.254943     Running as foreground process, not saving a PID file
   4.254956     [D5] send_to_all: SETINFO driver.flag.allow_killpower "0"
   4.254960     [D5] send_to_all: SETFLAGS driver.flag.allow_killpower RW NUMBER
   4.254963     [D5] send_to_all: ADDCMD driver.killpower
   4.254976     [D5] send_to_all: ADDCMD driver.reload
   4.254979     [D5] send_to_all: ADDCMD driver.reload-or-exit
   4.254981     [D5] send_to_all: ADDCMD driver.reload-or-error
   4.254984     [D5] send_to_all: SETINFO driver.state "quiet"
   4.254986     [D1] Driver initialization completed, beginning data dump (1 loops)
   4.254990     [D5] send_to_all: SETINFO driver.state "updateinfo"
   4.254993     [D1] upsdrv_updateinfo...
   4.254995     [D1] Quick update...
   4.256195     [D3] send: QGS
   4.310837     [D5] read [  0]: (8 bytes) => 28 32 31 39 2e 35 20 35
   4.350846     [D5] read [  8]: (8 bytes) => 39 2e 39 20 32 31 39 2e
   4.390858     [D5] read [ 16]: (8 bytes) => 35 20 36 30 2e 30 20 30
   4.422834     [D5] read [ 24]: (8 bytes) => 30 32 2e 38 20 30 30 37
   4.454832     [D5] read [ 32]: (8 bytes) => 20 33 36 31 2e 38 20 33
   4.494848     [D5] read [ 40]: (8 bytes) => 36 31 2e 38 20 32 37 32
   4.526837     [D5] read [ 48]: (8 bytes) => 2e 39 20 2d 2d 2d 2e 2d
   4.566835     [D5] read [ 56]: (8 bytes) => 20 30 32 32 2e 39 20 31
   4.598847     [D5] read [ 64]: (8 bytes) => 30 30 30 30 30 30 30 30
   4.614849     [D5] read [ 72]: (8 bytes) => 30 31 30 0d 20 32 37 32
   4.614855     [D3] read: (219.5 59.9 219.5 60.0 002.8 007 361.8 361.8 272.9 ---.- 022.9 100000000010
   4.614859     [D5] update_status: OL
   4.614862     [D5] update_status: !LB
   4.614866     [D5] update_status: !CAL
   4.614883     [D5] update_status: !FSD
   4.614903     [D5] send_to_all: SETINFO driver.state "quiet"
   4.614906     [D5] send_to_all: SETINFO driver.state "updateinfo"
   4.614908     [D1] upsdrv_updateinfo...
   4.614911     [D1] Quick update...
   4.616211     [D3] send: QGS
   4.670846     [D5] read [  0]: (8 bytes) => 28 32 32 31 2e 33 20 35
   4.710831     [D5] read [  8]: (8 bytes) => 39 2e 39 20 32 31 38 2e
   4.742850     [D5] read [ 16]: (8 bytes) => 37 20 35 39 2e 39 20 30
   4.782842     [D5] read [ 24]: (8 bytes) => 30 32 2e 38 20 30 30 37
   4.814822     [D5] read [ 32]: (8 bytes) => 20 33 36 31 2e 38 20 33
   4.846843     [D5] read [ 40]: (8 bytes) => 36 31 2e 38 20 32 37 32
   4.886822     [D5] read [ 48]: (8 bytes) => 2e 39 20 2d 2d 2d 2e 2d
   4.918833     [D5] read [ 56]: (8 bytes) => 20 30 32 32 2e 39 20 31
   4.958839     [D5] read [ 64]: (8 bytes) => 30 30 30 30 30 30 30 30
   4.974825     [D5] read [ 72]: (8 bytes) => 30 31 30 0d 20 32 37 32
   4.974829     [D3] read: (221.3 59.9 218.7 59.9 002.8 007 361.8 361.8 272.9 ---.- 022.9 100000000010
   4.974833     [D5] update_status: OL
   4.974836     [D5] update_status: !LB
   4.974839     [D5] update_status: !CAL
   4.974855     [D5] update_status: !FSD
   4.974864     [D5] send_to_all: SETINFO driver.state "quiet"
   4.974878     [D5] send_to_all: SETINFO driver.state "dumping"
   4.974881     [D3] Entering dstate_dump
battery.charge: 100
battery.packs: 1
battery.protection: yes
battery.runtime: 600
battery.voltage: 272.9
battery.voltage.high: 260.00
battery.voltage.low: 208.00
battery.voltage.nominal: 240.0
device.model: G10K
device.type: ups
driver.debug: 6
driver.flag.allow_killpower: 0
driver.name: nutdrv_qx
driver.parameter.bypass_when_off: disabled
driver.parameter.offdelay: 30
driver.parameter.ondelay: 60
driver.parameter.pollfreq: 30
driver.parameter.pollinterval: 10
driver.parameter.port: auto
driver.parameter.synchronous: yes
driver.state: dumping
driver.version: 2.8.0-2359-g6c0032e52
driver.version.data: Voltronic 0.08
driver.version.internal: 0.35
driver.version.usb: libusb-1.0.26 (API: 0x1000109)
input.current.nominal: 45.0
input.frequency: 59.9
input.frequency.nominal: 60.0
input.phases: 1
input.transfer.high: 231
input.transfer.high.max: 244
input.transfer.high.min: 231
input.transfer.low: 209
input.transfer.low.max: 209
input.transfer.low.min: 196
input.voltage: 221.3
input.voltage.nominal: 230.0
outlet.0.switchable: no
output.current: 2.8
output.current.nominal: 45
output.frequency: 60.0
output.frequency.nominal: 60.0
output.phases: 1
output.powerfactor: 0.8
output.voltage: 220.4
output.voltage.nominal: 220.0
ups.beeper.status: enabled
ups.delay.shutdown: 30
ups.delay.start: 60
ups.firmware: 00077.13
ups.firmware.aux: P02
ups.load: 7
ups.power.nominal: 10000
ups.productid: 5161
ups.start.auto: yes
ups.status: OL
ups.temperature: 22.9
ups.type: online
ups.vendorid: 0665
   4.975010     [D5] send_to_all: SETINFO driver.state "cleanup.upsdrv"
   4.975014     [D1] upsdrv_cleanup...
   4.975125     [D5] send_to_all: SETINFO driver.state "cleanup.exit"

@jimklimov jimklimov merged commit 91b3ee0 into networkupstools:master Sep 14, 2023
40 of 44 checks passed
@jimklimov jimklimov deleted the issue-1279 branch September 14, 2023 13:23
alexwbaule pushed a commit to alexwbaule/nut that referenced this pull request Oct 4, 2023
…to 130/120 of the nominal (back from experimental 150/120) [networkupstools#1652]

Signed-off-by: Jim Klimov <[email protected]>
Signed-off-by: Alex W Baulé <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug CyberPower (CPS) need more info need testing Code looks reasonable, but the feature would better be tested against hardware or OSes Qx protocol driver Driver based on Megatec Q<number> such as new nutdrv_qx, or obsoleted blazer and some others ready / gonna merge The PR is in final cycles leading to merge unless someone logs an objection before we hit the button Shutdowns and overrides and battery level triggers Issues and PRs about system shutdown, especially if battery charge/runtime remaining is involved
Projects
Status: Todo
Development

Successfully merging this pull request may close these issues.

2 participants