Closed bust4rhymes closed 4 years ago
Line 61 should be:
print("<text>Input voltage fluctuation " + banner_model + banner_serial + "</text>")
Source: https://github.com/angela-d/prtg-ups-monitor/blob/master/battery_sensor.py
That was done by me trying to get around the issue but even with the space between the issue is still the same:
File "/var/prtg/scriptsxml/battery_sensor.py", line 231, in
What issue are you having that you're trying to fix by modifying the code?
If you run (from a terminal after having SSH'd into the pi):
upsc tc
What is your output?
banner_serial
is a variable that assumes statuses[1]
is set - if for some reason your battery is outputting something different, it's likely this is where its failing. Calling NUT direct would be able to show us what it's generating before it gets to the PRTG Python script.
The UPSC query work fine. I just replaced the default TC for TL:
The issue happen when i call the "battery_sensor.py" the query start is returning the proper informations but at the end it is giving those error a posted earlier.
When you talk about statuses[1]
are you regarding to the variable ups.status
returned from UPSC ?
pi@raspberrypi:~ $ upsc TL Init SSL without certificate database battery.voltage: 13.90 battery.voltage.nominal: 12 device.mfr: Tripp Lite device.model: SMART500RT1U device.type: ups driver.name: tripplite_usb driver.parameter.pollinterval: 2 driver.parameter.port: auto driver.parameter.synchronous: no driver.version: 2.7.4 driver.version.internal: 0.29 input.voltage: 119 input.voltage.maximum: 125 input.voltage.minimum: 0 input.voltage.nominal: 120 outlet.1.desc: Load 1 outlet.1.id: 1 outlet.1.switch: 1 outlet.1.switchable: 1 outlet.2.desc: Load 2 outlet.2.id: 2 outlet.2.switchable: 0 ups.debug.D: 00 77 00 8b 0d 00 00 '.w.....' ups.debug.L: 15 00 00 07 58 58 0d '....XX.' ups.debug.load_banks: 1 ups.debug.M: 00 00 00 7d 0d 00 00 '.......' ups.debug.P: 30 30 35 30 30 58 0d '00500X.' ups.debug.S: 01 04 00 00 64 00 0d '....d..' ups.debug.T: 1d 00 02 57 01 58 0d '...W.X.' ups.debug.V: 02 00 0c 01 58 58 0d '....XX.' ups.delay.shutdown: 64 ups.firmware: F334401 ups.firmware.aux: protocol 3005 ups.id: 0 ups.mfr: Tripp Lite ups.model: SMART500RT1U ups.power.nominal: 500 ups.productid: 0001 ups.status: OL ups.temperature: 0 ups.vendorid: 09ae
Ah, your battery isn't returning a serial (as the code is expecting to see).
Make sure you're running the Github code (undo any changes you've made, to ensure if there are any additional problems, it's based on undefined variables and not typos or anything like that).
If you made changes you know are working and would like to keep, I'd advise making a backup of the file you modified and then try the changes below.
Lines 37-40 (original):
if statuses[0] == 'Ups Model':
banner_model = "Model: " + statuses[1]
if statuses[0] == 'Ups Serial':
banner_serial = " Serial: " + statuses[1]
Change to:
if statuses[0] == 'Ups Model':
banner_model = "Model: " + statuses[1]
if statuses[0] == 'Ups Serial':
banner_serial = " Serial: " + statuses[1]
else:
banner_serial = ""
If this works for you, I can push an update in the code. So far, I've only used this on one battery model so I didn't run into this while testing.
That worked! i now have proper JSON return and PRTG is showing all sensor. If this dont cause any issues with other UPS i suggest to add this modification to the actual script.
Thanks for your help
I just pushed the change, so anyone else going forward, shouldn't run into this. :) Also updated the readme with your model, so anyone else using the same should know it'll work for them.
Lastly, for all of those sensors returning "Channel relation not found" for you, click the settings to the far right and configure a unit measurement. (I also changed this to a more informative message, by default)
Hi! Thanks for your work, i stumble on an issue when i tried to make it work:
When i add the sensor SSH Advance to run the python script: battery_sensor.py I get the following error in PRTG:
When activating the results handling for the sensor i found that i have some data in log file but i found the following error:
I tried to understand the error but i have no knowledge with Python so this is pretty challenging. Any idea?
My setup: