Page 2 of 6

Re: Python plugin: UPS Monitor

Posted: Tuesday 05 September 2017 9:51
by TiXav
For your information or for the others in the same case :
I come back to stable version : Domoticz crashes until the UPS plugin is activated

Yesterday evening, I did :
sudo apt-get update
sudo apt-get upgrade

then now it looks like working fine since

regards.

Re: Python plugin: UPS Monitor

Posted: Tuesday 05 September 2017 13:13
by lrybak
Thanks, very usefull. It works with QNAP (UPS NUT name: qnapups, default port) with no issues

Re: Python plugin: UPS Monitor

Posted: Tuesday 05 September 2017 14:44
by Logread
@TiXav and @Irybak,

Many thanks for your feedback for the community. Glad this works well for you.

Re: Python plugin: UPS Monitor

Posted: Tuesday 23 January 2018 13:18
by ycahome
Logread wrote: Friday 30 June 2017 18:17 Another python plugin that I wrote that I am releasing in case anyone finds it useful.
Hello Logread and thank you for this wonderful plugin.

I own the "EATON 5E 650i" Ups and i thought that everything was OK, till i was realised that "UPS Status Mode" was not updated (except the first time on installation).

After some troubleshooting, found the following correction that need to be done:

My output for "status" is

Code: Select all

VAR ups ups.status "OL CHRG"
so i have added one more case on the "ups.status" value check:

changed from:

Code: Select all

            if key == "ups.status":
                nvalue = 1 if "OL" in self.variables[key][2] else 4
                svalue = "On Line" if "OL" in self.variables[key][2] else "Backup Power"


to:

Code: Select all

            if key == "ups.status":
                nvalue = 1 if "OL" in self.variables[key][2] else 4
                svalue = "On Line" if "OL" in self.variables[key][2] else "Backup Power"
                svalue = "On Line - Charging" if "OL CHRG" in self.variables[key][2] else "Backup Power"
everything seems OK now.

Its time to bring more functionality to this plugin by processing all possible values of "ups.status":

Code: Select all

OL      - On line (mains is present)
OB      - On battery (mains is not present)
LB      - Low battery
HB      - High battery
RB      - The battery needs to be replaced
CHRG    - The battery is charging
DISCHRG - The battery is discharging (inverter is providing load power)
BYPASS  - UPS bypass circuit is active - no battery protection is available
CAL     - UPS is currently performing runtime calibration (on battery)
OFF     - UPS is offline and is not supplying power to the load
OVER    - UPS is overloaded
TRIM    - UPS is trimming incoming voltage (called "buck" in some hardware)
BOOST   - UPS is boosting incoming voltage
FSD     - Forced Shutdown (restricted use, see the note below)
am thinking something like:

Code: Select all

UpsStatusCode = self.variables[key][2].find("OB", beg=0, end=len(string))
.....
.....
.....
if UpsStatusCode is OB or CHRG or DISCHRG or BYPASS or CAL or BOOST or FSD then raise a warning
if UpsStatusCode is RB or OVER or TRIM then raise an alarm



My regards,

Re: Python plugin: UPS Monitor

Posted: Tuesday 23 January 2018 16:24
by Logread
@ycahome,

Thanks for your appreciation and suggestions... my own UPS does not have all these status levels, so did not think about these.

These would be great additions, though I am pretty tied up at the moment with my day job so not sure I can devote much time to this effort for now.

If you are willing to contribute code through GitHub via a pull request, please do so. If not you’ll have to bear with me.

Re: Python plugin: UPS Monitor

Posted: Tuesday 23 January 2018 16:30
by assenzuid
It works fine, but i noticed that since begin this month the plugin not works anymore

Error log:
2018-01-23 16:29:07.874 Error: (APC UPS02 Office) 'onHeartbeat' failed 'EOFError'.
2018-01-23 16:29:07.874 Error: (APC UPS02 Office) ----> Line 138 in /home/pi/domoticz/plugins/NUT_UPS/plugin.py, function onHeartbeat
2018-01-23 16:29:07.874 Error: (APC UPS02 Office) ----> Line 82 in /home/pi/domoticz/plugins/NUT_UPS/plugin.py, function onHeartbeat
2018-01-23 16:29:07.874 Error: (APC UPS02 Office) ----> Line 327 in /usr/lib/python3.5/telnetlib.py, function read_until
2018-01-23 16:29:07.874 Error: (APC UPS02 Office) ----> Line 403 in /usr/lib/python3.5/telnetlib.py, function read_very_lazy

Re: Python plugin: UPS Monitor

Posted: Tuesday 23 January 2018 16:59
by assenzuid
assenzuid wrote: Tuesday 23 January 2018 16:30 It works fine, but i noticed that since begin this month the plugin not works anymore

Error log:
2018-01-23 16:29:07.874 Error: (APC UPS02 Office) 'onHeartbeat' failed 'EOFError'.
2018-01-23 16:29:07.874 Error: (APC UPS02 Office) ----> Line 138 in /home/pi/domoticz/plugins/NUT_UPS/plugin.py, function onHeartbeat
2018-01-23 16:29:07.874 Error: (APC UPS02 Office) ----> Line 82 in /home/pi/domoticz/plugins/NUT_UPS/plugin.py, function onHeartbeat
2018-01-23 16:29:07.874 Error: (APC UPS02 Office) ----> Line 327 in /usr/lib/python3.5/telnetlib.py, function read_until
2018-01-23 16:29:07.874 Error: (APC UPS02 Office) ----> Line 403 in /usr/lib/python3.5/telnetlib.py, function read_very_lazy
Solved after rebooting Qnap NAS

Re: Python plugin: UPS Monitor

Posted: Tuesday 23 January 2018 19:16
by Logread
@ycahome,
I actually found some spare time... testing the code for now. Will share updated plugin for your testing if you do not mind

Re: Python plugin: UPS Monitor

Posted: Monday 29 January 2018 15:46
by ycahome
Logread wrote: Tuesday 23 January 2018 19:16 @ycahome,
I actually found some spare time... testing the code for now. Will share updated plugin for your testing if you do not mind
Nice

Re: Python plugin: UPS Monitor

Posted: Wednesday 31 January 2018 8:36
by Logread
New version 0.2.0 is available. For install/upgrade, please follow instructions from the wiki (https://www.domoticz.com/wiki/Plugins/NUT_UPS.html)

As suggested by @ycahome, the plugin now handles many more UPS status states and corresponding alert levels, as per list below:

Code: Select all

           #code       (display,           alarm level)
            "OL":       ("ONLINE",          1), # On line (mains is present)
            "OB":       ("ONBATTERY",       4), # On battery (mains is not present)
            "LB":       ("LOWBATTERY",      4), # Low battery
            "HB":       ("HIGHBATTERY",     1), # High battery
            "RB":       ("REPLACEBATTERY",  3), # The battery needs to be replaced
            "CHRG":     ("CHARGING",        1), # The battery is charging
            "DISCHRG":  ("DISCHARGING",     3), # The battery is discharging (inverter is providing load power)
            "BYPASS":   ("BYPASS",          3), # UPS bypass circuit is active - no battery protection is available
            "CAL":      ("CALLIBRATION",    1), # UPS is currently performing runtime calibration (on battery)
            "OFF":      ("OFF",             0), # UPS is offline and is not supplying power to the load
            "OVER":     ("OVERLOAD",        4), # UPS is overloaded
            "TRIM":     ("SMARTTRIM",       3), # UPS is trimming incoming voltage (called "buck" in some hardware)
            "BOOST":    ("BOOST",           3), # UPS is boosting incoming voltage
            "FSD":      ("FORCE_SHUTDOWN",  4)  # Forced Shutdown
 
Partially tested only, so please report any issue/bug (excluding general Domoticz Python Plugins framework issues please... nothing I can do about these).

Re: Python plugin: UPS Monitor

Posted: Wednesday 31 January 2018 11:27
by ycahome
Logread wrote: Wednesday 31 January 2018 8:36 New version 0.2.0 is available.
Thanks a lot LogRead for this upgraded version.
eeco800.JPG
eeco800.JPG (19.06 KiB) Viewed 6034 times

Re: Python plugin: UPS Monitor

Posted: Sunday 04 February 2018 22:00
by hamster
@Logread It seems that when I don't have the domoticz GUI open, the virtual devices do not continue to update. Is this expected behavior? For example, I set a notification for "last update" to 10 minutes. Well, exactly 10 minutes (or any amount I set) after I close the GUI, the notification fires.

On that note, how do you recommend setting alarms for different values such as time remaining, charge amount, etc?

Thanks!

Re: Python plugin: UPS Monitor

Posted: Monday 05 February 2018 22:34
by waaren
Logread wrote: Wednesday 31 January 2018 8:36 New version 0.2.0 is available. For install/upgrade, please follow instructions from the wiki (https://www.domoticz.com/wiki/Plugins/NUT_UPS.html)

Partially tested only, so please report any issue/bug (excluding general Domoticz Python Plugins framework issues please... nothing I can do about these).
@logread

Many thanks for this excellent plugin. I already used it on my other domoticz installations and because I am testing with Jessie on my PI3 to investigate if I encounter less problems with domoticz beta with Python plugins in general, I installed it on that instance as well.

The problem I encountered there was:

Error: (Synology UPS) Error reading UPS variables_: ERR ACCESS-DENIED

after quite some comparing between the working (Stretch) instance and the on Jessie, I finally came to the network settings.

on the working version (Stretch)
ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.xxx.51 netmask 255.255.255.0 broadcast 192.168.xxx.255
...........

and on the failing one (Jessie)
ifconfig eth0
eth0 Link encap:Ethernet HWaddr b8:27:eb:95:ca:49
inet addr:192.168.xxx.97 Bcast:0.0.0.0 Mask:255.255.255.0
.........

After the command ifconfig eth0 broadcast 192.168.xxx.255
and a restart of the plugin (disable / enable ) in domoticz. The information from my UPS came in and the device got updated.

Is this something worthwhile to add to the wiki ?

Re: Python plugin: UPS Monitor

Posted: Friday 09 February 2018 3:18
by hamster
In addition to previous question: Do you have any plans to create a plugin version to work with beta versions? The way the beta handles plugins will eventually be the stable way, so was hoping you might be willing to have two versions until the merge :)

Re: Python plugin: UPS Monitor

Posted: Friday 09 February 2018 10:44
by Logread
@waaren,

Interesting catch but in my view this is more to be reported under raspberry pi network configuration (localhost loopback), as it is not specific to this plugin.

@hamster: not sure I get your question. The plugin had factored the breaking changes to the python framework long ago and it works well with betas (putting aside some issues certain users seem to have with stability of the plugin framework, that are not specific to this particular plugin it seems).

Re: Python plugin: UPS Monitor

Posted: Friday 09 February 2018 13:28
by hamster
odd, I recently went from stable to beta and now the plugin doesnt show in the hardware list at all. completely disappeared.

edit: DONKEY BALLS. so, apparently the "enabled" slider for lua/events/scripts wasnt showing properly in Chrome, so the thing was disabled this whole time. finally ran across another forum post that mentioned it and got it fixed... geez. sorry for false report. Thanks for the nice plugin!

edit2: note to any future readers, dont rename any of the devices from their defaults. will break any script you might want to use with this.

Re: Python plugin: UPS Monitor

Posted: Wednesday 14 February 2018 23:52
by hamster
new question:

I'm currently troubleshooting a stale data issue with nut, I know that isn't your territory BUT, I'm noticing that even when nut is reporting stale data AND the errors are showing in domoticz log, that the plugin is still refreshing the virtual sensors with the stale data as if everything is normal. Is there a way for the plugin to make the virtual sensors stop updating? That would allow me to monitor "last seen" to be notified when data goes stale.

Or, do you know how I might send a notification when "Error: (CyberPower) Error reading UPS variables: ERR DATA-STALE" shows up in the domoticz log?

Thanks!

Re: Python plugin: UPS Monitor

Posted: Thursday 15 February 2018 6:15
by Logread
hamster wrote: Wednesday 14 February 2018 23:52 the plugin is still refreshing the virtual sensors with the stale data as if everything is normal. Is there a way for the plugin to make the virtual sensors stop updating? That would allow me to monitor "last seen" to be notified when data goes stale.
Yes, this is on my to do list... easy to implement. Bear with me please.

Re: Python plugin: UPS Monitor

Posted: Thursday 15 February 2018 14:13
by Logread
New version 0.2.1 is available. For install/upgrade, please follow instructions from the wiki (https://www.domoticz.com/wiki/Plugins/NUT_UPS.html).

This version changes the handling of communication errors with the UPS or the NUT server, as suggested by @hamster: in this event:
  • the plugin stops updating the devices
  • the "UPS Status" device is marked as "Timed Out" (Red bar in GUI) if the host domoticz version handles this (only recent betas do)
  • the "UPS Status" device shows "COMMUNICATION ERROR and its alert level is 0 (grey icon)
Partially tested only, so please report any issue/bug (excluding general Domoticz Python Plugins framework issues please... nothing I can do about these).

Re: Python plugin: UPS Monitor

Posted: Thursday 15 February 2018 20:42
by ycahome
Logread wrote: Thursday 15 February 2018 14:13 so please report any issue/bug (excluding general Domoticz Python Plugins framework issues please... nothing I can do about these).
Hello Logread.

I think that your wiki guide for upgrade has an error

Code: Select all

get reset –-hard
should be?

Code: Select all

git reset –-hard
regards,