Python plugin: UPS Monitor

Python and python framework
User avatar
TiXav
Posts: 45
Joined: Saturday 28 November 2015 23:25
Target OS: Raspberry Pi
Domoticz version: Beta
Location: France
Contact:

Re: Python plugin: UPS Monitor

Post by TiXav » Tuesday 05 September 2017 9:51

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.

lrybak
Posts: 54
Joined: Thursday 18 December 2014 21:12
Target OS: Raspberry Pi
Domoticz version: Beta
Location: Poland
Contact:

Re: Python plugin: UPS Monitor

Post by lrybak » Tuesday 05 September 2017 13:13

Thanks, very usefull. It works with QNAP (UPS NUT name: qnapups, default port) with no issues
HW: HP dc7900 USD running ESXi, RaspberryPi (few of it), AEON S2 USB stick, Fibaro modules (Dimmers, switches), 1-wire (DS18B20, DS2423), DSC Alarm with Envisalink ethernet module, MySensors, RFLink

Logread
Posts: 178
Joined: Sunday 28 August 2016 7:48
Target OS: Raspberry Pi
Domoticz version:
Location: France
Contact:

Re: Python plugin: UPS Monitor

Post by Logread » Tuesday 05 September 2017 14:44

@TiXav and @Irybak,

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

User avatar
ycahome
Posts: 198
Joined: Sunday 12 February 2017 11:55
Target OS: Linux
Domoticz version: lat Beta
Contact:

Re: Python plugin: UPS Monitor

Post by ycahome » Tuesday 23 January 2018 14:18

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,

Logread
Posts: 178
Joined: Sunday 28 August 2016 7:48
Target OS: Raspberry Pi
Domoticz version:
Location: France
Contact:

Re: Python plugin: UPS Monitor

Post by Logread » Tuesday 23 January 2018 17:24

@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.

assenzuid
Posts: 154
Joined: Friday 13 November 2015 10:11
Target OS: Raspberry Pi
Domoticz version: Beta
Location: The Netherlands, Emmen Area
Contact:

Re: Python plugin: UPS Monitor

Post by assenzuid » Tuesday 23 January 2018 17: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

assenzuid
Posts: 154
Joined: Friday 13 November 2015 10:11
Target OS: Raspberry Pi
Domoticz version: Beta
Location: The Netherlands, Emmen Area
Contact:

Re: Python plugin: UPS Monitor

Post by assenzuid » Tuesday 23 January 2018 17:59

assenzuid wrote:
Tuesday 23 January 2018 17: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

Logread
Posts: 178
Joined: Sunday 28 August 2016 7:48
Target OS: Raspberry Pi
Domoticz version:
Location: France
Contact:

Re: Python plugin: UPS Monitor

Post by Logread » Tuesday 23 January 2018 20: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

User avatar
ycahome
Posts: 198
Joined: Sunday 12 February 2017 11:55
Target OS: Linux
Domoticz version: lat Beta
Contact:

Re: Python plugin: UPS Monitor

Post by ycahome » Monday 29 January 2018 16:46

Logread wrote:
Tuesday 23 January 2018 20: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

Logread
Posts: 178
Joined: Sunday 28 August 2016 7:48
Target OS: Raspberry Pi
Domoticz version:
Location: France
Contact:

Re: Python plugin: UPS Monitor

Post by Logread » Wednesday 31 January 2018 9: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)

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).

User avatar
ycahome
Posts: 198
Joined: Sunday 12 February 2017 11:55
Target OS: Linux
Domoticz version: lat Beta
Contact:

Re: Python plugin: UPS Monitor

Post by ycahome » Wednesday 31 January 2018 12:27

Logread wrote:
Wednesday 31 January 2018 9:36
New version 0.2.0 is available.
Thanks a lot LogRead for this upgraded version.
eeco800.JPG
eeco800.JPG (19.06 KiB) Viewed 1320 times

hamster
Posts: 19
Joined: Friday 28 April 2017 19:11
Target OS: Raspberry Pi
Domoticz version:
Contact:

Re: Python plugin: UPS Monitor

Post by hamster » Sunday 04 February 2018 23:00

@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!
Last edited by hamster on Thursday 08 February 2018 4:03, edited 1 time in total.

User avatar
waaren
Posts: 607
Joined: Tuesday 03 January 2017 15:18
Target OS: Raspberry Pi
Domoticz version: Beta
Location: Netherlands
Contact:

Re: Python plugin: UPS Monitor

Post by waaren » Monday 05 February 2018 23:34

Logread wrote:
Wednesday 31 January 2018 9: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 ?
Raspberry (debian stretch via berryboot on Synology DS916+) , Domoticz (almost) latest Beta, RFLink, RFXtrx433e, P1, Youless, Harmony, Hue, Yeelight, Xiaomi, HomeWizard, Zwave , dzVents 2.4.n, Amazon echo

hamster
Posts: 19
Joined: Friday 28 April 2017 19:11
Target OS: Raspberry Pi
Domoticz version:
Contact:

Re: Python plugin: UPS Monitor

Post by hamster » Friday 09 February 2018 4:18

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 :)

Logread
Posts: 178
Joined: Sunday 28 August 2016 7:48
Target OS: Raspberry Pi
Domoticz version:
Location: France
Contact:

Re: Python plugin: UPS Monitor

Post by Logread » Friday 09 February 2018 11:44

@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).

hamster
Posts: 19
Joined: Friday 28 April 2017 19:11
Target OS: Raspberry Pi
Domoticz version:
Contact:

Re: Python plugin: UPS Monitor

Post by hamster » Friday 09 February 2018 14:28

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.

hamster
Posts: 19
Joined: Friday 28 April 2017 19:11
Target OS: Raspberry Pi
Domoticz version:
Contact:

Re: Python plugin: UPS Monitor

Post by hamster » Thursday 15 February 2018 0:52

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!

Logread
Posts: 178
Joined: Sunday 28 August 2016 7:48
Target OS: Raspberry Pi
Domoticz version:
Location: France
Contact:

Re: Python plugin: UPS Monitor

Post by Logread » Thursday 15 February 2018 7:15

hamster wrote:
Thursday 15 February 2018 0: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.

Logread
Posts: 178
Joined: Sunday 28 August 2016 7:48
Target OS: Raspberry Pi
Domoticz version:
Location: France
Contact:

Re: Python plugin: UPS Monitor

Post by Logread » Thursday 15 February 2018 15:13

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).

User avatar
ycahome
Posts: 198
Joined: Sunday 12 February 2017 11:55
Target OS: Linux
Domoticz version: lat Beta
Contact:

Re: Python plugin: UPS Monitor

Post by ycahome » Thursday 15 February 2018 21:42

Logread wrote:
Thursday 15 February 2018 15: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,

Post Reply

Who is online

Users browsing this forum: No registered users and 3 guests