networkupstools / nut

The Network UPS Tools repository. UPS management protocol Informational RFC 9271 published by IETF at https://www.rfc-editor.org/info/rfc9271 Please star NUT on GitHub, this helps with sponsorships!
https://networkupstools.org/
Other
2.07k stars 351 forks source link

blazer_usb / nutdrv_qx not detecting when LOWBATT in Syslog #561

Open Hary01o opened 6 years ago

Hary01o commented 6 years ago

Ive gone through quite a lot of manpages and articles trying to figure out whats missing here, but im starting to think something else is wrong.

When I try and use nutdrv_qx and run upsc myUPS, i get:

Network UPS Tools - UPS driver controller 2.7.4
Network UPS Tools - Generic Q* USB/Serial driver 0.28 (2.7.4)
USB communication driver 0.33
Using protocol: Voltronic-QS 0.07
Battery runtime will not be calculated (runtimecal not set)

And ive got these 2 values manually set in ups.conf:

default.battery.voltage.low = 25.50
default.battery.voltage.high = 26.00

The reason why i have default.battery.voltage.low so high is because i need to first test my UPS and see when it reaches 25.50 volts that It will initiate the shutdown and it doesn't!

So far, upsmon detects when there is a power failure and thats the last message i see in Syslog: upsmon[7764]: UPS myUPS@localhost on battery

If I reconnect the UPS, it will give a message in Syslog saying its Online again.

The problem is I don't see anywhere in the Syslog that it has LOWBATT or any sort of indication that the battery is 'low' which in turn does not initiate any shutdown either.

If i don't set battery.voltage.low & battery.voltage.high, it uses gestimation and gives the same result.

I don't know where the problem lies here.. I cannot find it in the logs. If you could shed some light that would be highly appreciated, otherwise this could be a bug maybe.

on system Ubuntu 18.04 with # sudo apt-get install nut nut-monitor Nut v. 2.7.4-5.1ubuntu2

clepple commented 6 years ago

@zykh can correct me if I am missing something specific to these drivers, but in general, overriding battery.voltage.* will only affect the battery.charge reading, not ups.status. The UPS has a low battery flag that it sends regardless of what values are shown for charge (or runtime).

However, if you use ignorelb and its associated configuration parameters, then the driver should ignore the UPS LB signal, and in your case, indirectly use the battery voltage overrides to calculate low battery status: https://networkupstools.org/docs/man/ups.conf.html#_ups_fields

clepple commented 6 years ago

although rather than temporarily messing with ignorelb, if your goal is to test the shutdown signaling, I would do the following:

  1. https://networkupstools.org/docs/man/upsmon.html#_simulating_power_failures upsmon -c fsd to test the shutdown scripts
  2. power the system from another source (wall power or another UPS), isolate the UPS and attach a dummy load, then let the battery run down so that you see the LB signal
Hary01o commented 6 years ago

@clepple thanks for your input. Ive already isolated the UPS and tested doing upsmon -c fsd, of course that immediately powers off the UPS. However, its the flags that upsmon doesn't detect. My goal is to actually test that the 'low battery (LOWBATT)' flag gets detected when the battery.voltage.low is set at a certain number such as the highest possible, would be 25.50 because the batteries im using are Marine batteries and it would take ages for them to go really low, so thats why i increased the number so that i can just test if it actually detects the LOWBATT flag. However in my case is the only way to test it by fiddling with the ignorelb ?

clepple commented 6 years ago

It might take a while to drain the batteries, but that is the only way to verify that the UPS sets the LB flag (as opposed to NUT setting it synthetically with ignorelb). You can add more load to the UPS (lamps, heaters, etc.) to increase the rate of discharge.

It is, of course, your choice as to which triggers your shutdown, but I'm just trying to point out the differences between the sources, and that you may not want to test with a synthetic LB, and go into production relying on the UPS LB signal.

If this were my system, I would want to verify that nothing crazy happens to battery.voltage when the UPS is getting close to the low battery mark. Given how inaccurate most UPS voltage readings tend to be, I would rely on the UPS LB flag in the absence of specific low-battery voltage readings.

Hary01o commented 6 years ago

@clepple These are my settings

Init SSL without certificate database
battery.charge: 100
battery.voltage: 26.40
battery.voltage.high: 26.00
battery.voltage.low: 25.00
battery.voltage.nominal: 24.0
device.type: ups
driver.name: nutdrv_qx
driver.parameter.pollfreq: 30
driver.parameter.pollinterval: 2
driver.parameter.port: auto
driver.parameter.synchronous: no
driver.version: 2.7.4
driver.version.data: Voltronic-QS 0.07
driver.version.internal: 0.28
input.voltage: 229.7
input.voltage.fault: 227.7
output.current.nominal: 8.0
output.frequency: 50.1
output.frequency.nominal: 50
output.voltage: 227.7
output.voltage.nominal: 230
ups.beeper.status: disabled
ups.delay.shutdown: 30
ups.delay.start: 180
ups.firmware.aux: PM-V
ups.load: 4
ups.productid: 5161
ups.status: OL
ups.type: offline / line interactive
ups.vendorid: 0665

So i successfully tested the system and it shutdown properly as soon as i used override.battery.charge.low = 90, however I have 2 questions here.

Firstly, I dont see battery.charge.low exist as an original setting when checking upsc [MyUPS], I had to use override. Which confuses me because I read on: https://networkupstools.org/docs/man/ups.conf.html#_ups_fields that the 'override' only changes the appearance of the value and not the actual value. So why can't a battery.charge.low be an original setting for both these drivers?

Secondly, id like to also point out that according to my UPS when on batteries, battery.charge is not reading accurately - it seems to stop at 20% and stay there even though batteries are 90% charged. So i have to set a very low number for battery.charge.low in order for shutdown to occur. That being said, I dont understand why battery.voltage.low can't also be part of the trigger for setting the LOWBATT flag as it is MORE accurate than using percentage aka battery.charge. Can the dev consider including this in addition to battery.charge.low and battery.runtime.low ?

antonchen commented 1 year ago

Secondly, id like to also point out that according to my UPS when on batteries, battery.charge is not reading accurately - it seems to stop at 20% and stay there even though batteries are 90% charged. So i have to set a very low number for battery.charge.low in order for shutdown to occur. That being said, I dont understand why battery.voltage.low can't also be part of the trigger for setting the LOWBATT flag as it is MORE accurate than using percentage aka battery.charge. Can the dev consider including this in addition to battery.charge.low and battery.runtime.low ?

I agree that battery.voltage.low is more accurate than battery.charge.low. I hope that the developer can support battery.voltage.low as the LOWBATT threshold.