Z-Wave

Questions and comments specific to a particular plugin should go here.
User avatar
kgschlosser
Site Admin
Posts: 4807
Joined: Fri Jun 05, 2015 5:43 am
Location: Rocky Mountains, Colorado USA

Re: Z-Wave

Post by kgschlosser » Mon Aug 20, 2018 10:07 am

I believe i found the error.

It seems as tho there is a pyd file that is trying to load several other dll files. specifically msvcrt90.dll, python27.dll and libopenblas.KZGMSHIV2CB7DB4HQYDV2LEPUALNSYMY.gfortran-win32.dll

the first 2 come with EG. so i added the eg main directory to the environment path statement that python is running in. and the last is included with numpy and i added that one as well.

put the attached file into the plugin folder, overwriting the old one.
Attachments
zwave_admin.py
(70.56 KiB) Downloaded 30 times
If you like the work I have been doing then feel free to Image

holdestmade
Experienced User
Posts: 180
Joined: Thu Dec 04, 2014 2:44 pm

Re: Z-Wave

Post by holdestmade » Mon Aug 20, 2018 3:24 pm

Nah sorry just the same:

Code: Select all

16:22:38   Exception in thread Thread-77:
16:22:38   Traceback (most recent call last):
16:22:38     File "threading.pyc", line 801, in __bootstrap_inner
16:22:38     File "threading.pyc", line 754, in run
16:22:38     File "C:\ProgramData\EventGhost\plugins\ZWave\zwave_admin.py", line 1071, in do
16:22:38       from zwave_cord_diagram import Plot
16:22:38     File "C:\ProgramData\EventGhost\plugins\ZWave\zwave_cord_diagram.py", line 19, in <module>
16:22:38       import matplotlib.pyplot as plt
16:22:38     File "C:\ProgramData\EventGhost\plugins\ZWave\libs\matplotlib\__init__.py", line 126, in <module>
16:22:38       from . import cbook
16:22:38     File "C:\ProgramData\EventGhost\plugins\ZWave\libs\matplotlib\cbook\__init__.py", line 34, in <module>
16:22:38       import numpy as np
16:22:38     File "C:\ProgramData\EventGhost\plugins\ZWave\libs\numpy\__init__.py", line 142, in <module>
16:22:38       from . import add_newdocs
16:22:38     File "C:\ProgramData\EventGhost\plugins\ZWave\libs\numpy\add_newdocs.py", line 13, in <module>
16:22:38       from numpy.lib import add_newdoc
16:22:38     File "C:\ProgramData\EventGhost\plugins\ZWave\libs\numpy\lib\__init__.py", line 8, in <module>
16:22:38       from .type_check import *
16:22:38     File "C:\ProgramData\EventGhost\plugins\ZWave\libs\numpy\lib\type_check.py", line 11, in <module>
16:22:38       import numpy.core.numeric as _nx
16:22:38     File "C:\ProgramData\EventGhost\plugins\ZWave\libs\numpy\core\__init__.py", line 26, in <module>
16:22:38       raise ImportError(msg)
16:22:38   ImportError: 
16:22:38   Importing the multiarray numpy extension module failed.  Most
16:22:38   likely you are trying to import a failed build of numpy.
16:22:38   If you're working with a numpy git repo, try `git clean -xdf` (removes all
16:22:38   files not under version control).  Otherwise reinstall numpy.
16:22:38   
16:22:38   Original error was: DLL load failed: The specified module could not be found.
16:22:38   
16:22:38

User avatar
kgschlosser
Site Admin
Posts: 4807
Joined: Fri Jun 05, 2015 5:43 am
Location: Rocky Mountains, Colorado USA

Re: Z-Wave

Post by kgschlosser » Mon Aug 20, 2018 3:31 pm

I can see where the error is coming from But i do not know why it is happening. I am almost wondering if it is because the DLL is built upon installing Numpy. and it has to be built for the target OS.

what OS are you running??
If you like the work I have been doing then feel free to Image

User avatar
kgschlosser
Site Admin
Posts: 4807
Joined: Fri Jun 05, 2015 5:43 am
Location: Rocky Mountains, Colorado USA

Re: Z-Wave

Post by kgschlosser » Mon Aug 20, 2018 4:00 pm

ok after more reading on this..

There could be an issue with some old dll files you might have on your system. Not sure but you can check

search your windows folder for these 3 files

Code: Select all

mkl_core.dll
mkl_def.dll
mkl_intel_thread.dll

if you find them ad .bak to the end of the filename. we want to make sure this is not going to cause an issue with any other applications you may have installed. if you do have an issue with another application simpy remove the .bak from them..

see if that helps at all.
If you like the work I have been doing then feel free to Image

holdestmade
Experienced User
Posts: 180
Joined: Thu Dec 04, 2014 2:44 pm

Re: Z-Wave

Post by holdestmade » Wed Aug 22, 2018 7:00 am

Hi,

I searched for those files but none exist on my system.
I'm running Windows 10

Thanks

User avatar
kgschlosser
Site Admin
Posts: 4807
Joined: Fri Jun 05, 2015 5:43 am
Location: Rocky Mountains, Colorado USA

Re: Z-Wave

Post by kgschlosser » Thu Aug 23, 2018 2:16 pm

well what you can do is you can install python 2.7

once you have python 27 installed, run this from a cmd window

Code: Select all

c:\python27\scripts\pip install matplotlib

delete the libs folder from the plugin and give it a go. let me know if it works.
If you like the work I have been doing then feel free to Image

skribb
Experienced User
Posts: 224
Joined: Thu Feb 12, 2015 7:22 pm
Location: Win7 64bit

Re: Z-Wave

Post by skribb » Thu Aug 30, 2018 6:08 pm

the aeotec UZB driver has been installed and the network is initializing in EG.

However, I need some clarification.

1. is "add node" and "remove node" the equivalent of "add device" and "remove device" as written in the Aeotec device manuals?

2. Should the zstick blink blue>yellow>red when the network is initialized but lacking devices? (edit: nope, it seems to blink constantly even when devices are added)

3. if "no" to 1, is there a way to add a device via EG?


--------------------------

also here's what happened when i unplugged the stick just now

Code: Select all

20:19:37   Unhandled exception in WorkerThread <ActionThread>:
20:19:37   Callers stack:
20:19:37     File "threading.pyc", line 774, in __bootstrap
20:19:37     File "threading.pyc", line 801, in __bootstrap_inner
20:19:37     File "threading.pyc", line 754, in run
20:19:37     File "C:\Program Files (x86)\EventGhost\eg\Classes\ThreadWorker.py", line 280, in __MainLoop
20:19:37       self.__DoOneEvent()
20:19:37     File "C:\Program Files (x86)\EventGhost\eg\Classes\ThreadWorker.py", line 269, in __DoOneEvent
20:19:37       eg.PrintTraceback()
20:19:37     File "C:\Program Files (x86)\EventGhost\eg\Classes\ThreadWorker.py", line 140, in HandleAction
20:19:37       action()
20:19:37     File "C:\Program Files (x86)\EventGhost\eg\Classes\EventThread.py", line 117, in Transfer
20:19:37       event.SetShouldEnd()
20:19:37   Traceback (most recent call last) (0.5.0-rc4):
20:19:37     File "C:\Program Files (x86)\EventGhost\eg\Classes\ThreadWorker.py", line 253, in __DoOneEvent
20:19:37       self.HandleAction(action)
20:19:37     File "C:\Program Files (x86)\EventGhost\eg\Classes\ActionThread.py", line 42, in HandleAction
20:19:37       action()
20:19:37     File "C:\Program Files (x86)\EventGhost\eg\Classes\ThreadWorker.py", line 324, in __call__
20:19:37       self.returnValue = self.func(*self.args, **self.kwargs)
20:19:37     File "C:\Program Files (x86)\EventGhost\eg\Classes\EventGhostEvent.py", line 114, in Execute
20:19:37       if listener(self) is True:
20:19:37     File "C:\ProgramData\EventGhost\plugins\ZWave\__init__.py", line 879, in device_removed
20:19:37       network.stop()
20:19:37     File "C:\ProgramData\EventGhost\plugins\ZWave\__init__.py", line 240, in stop
20:19:37       self.zwave_network.stop()
20:19:37     File "C:\ProgramData\EventGhost\plugins\ZWave\zwave_network.py", line 380, in stop
20:19:37       self.controller.stop()
20:19:37     File "C:\ProgramData\EventGhost\plugins\ZWave\zwave_controller.py", line 260, in stop
20:19:37       if self.send_queue_count <= 0:
20:19:37     File "C:\ProgramData\EventGhost\plugins\ZWave\zwave_controller.py", line 645, in send_queue_count
20:19:37       return self._network.manager.getSendQueueCount(self.home_id)
20:19:37   AttributeError: 'NoneType' object has no attribute 'getSendQueueCount'
Last edited by skribb on Thu Aug 30, 2018 6:39 pm, edited 1 time in total.
Automation is life.

Win7 64bit
EG: v0.5.0-rc4

skribb
Experienced User
Posts: 224
Joined: Thu Feb 12, 2015 7:22 pm
Location: Win7 64bit

Re: Z-Wave

Post by skribb » Thu Aug 30, 2018 6:29 pm

(I didn't know i had to remove the door sensor from my being paired with my smartthings hub; i have now paired it with the zstick successfully)
(separate post because different error)

This happened when I selected Zwave+ Version on my door sensor (aeotec gen5 EU door sensor - model zw120-c)

my ztick is model zw090-c

Code: Select all

20:25:45   Traceback (most recent call last) (0.5.0-rc4):
20:25:45     File "C:\ProgramData\EventGhost\plugins\ZWave\zwave_admin.py", line 2102, in on_selection_changed
20:25:45       panel = panel(self.splitter_window, obj)
20:25:45     File "C:\ProgramData\EventGhost\plugins\ZWave\zwave_admin.py", line 440, in __init__
20:25:45       value.id_on_network,
20:25:45     File "C:\ProgramData\EventGhost\plugins\ZWave\zwave_value.py", line 302, in id_on_network
20:25:45       self.command_class,
20:25:45     File "C:\ProgramData\EventGhost\plugins\ZWave\zwave_value.py", line 640, in command_class
20:25:45       return getattr(zwave_command_classes, self._commandClass)
20:25:45   AttributeError: 'CommandClasses' object has no attribute 'COMMAND_CLASS_ZWAVE_PLUS_INFO'

this is when selecting "installer icon"

Code: Select all

20:55:41   Traceback (most recent call last) (0.5.0-rc4):
20:55:41     File "C:\ProgramData\EventGhost\plugins\ZWave\zwave_admin.py", line 2102, in on_selection_changed
20:55:41       panel = panel(self.splitter_window, obj)
20:55:41     File "C:\ProgramData\EventGhost\plugins\ZWave\zwave_admin.py", line 440, in __init__
20:55:41       value.id_on_network,
20:55:41     File "C:\ProgramData\EventGhost\plugins\ZWave\zwave_value.py", line 302, in id_on_network
20:55:41       self.command_class,
20:55:41     File "C:\ProgramData\EventGhost\plugins\ZWave\zwave_value.py", line 640, in command_class
20:55:41       return getattr(zwave_command_classes, self._commandClass)
20:55:41   AttributeError: 'CommandClasses' object has no attribute 'COMMAND_CLASS_ZWAVE_PLUS_INFO'
this is when selecting "user icon"

Code: Select all

20:56:27   Traceback (most recent call last) (0.5.0-rc4):
20:56:27     File "C:\ProgramData\EventGhost\plugins\ZWave\zwave_admin.py", line 2102, in on_selection_changed
20:56:27       panel = panel(self.splitter_window, obj)
20:56:27     File "C:\ProgramData\EventGhost\plugins\ZWave\zwave_admin.py", line 440, in __init__
20:56:27       value.id_on_network,
20:56:27     File "C:\ProgramData\EventGhost\plugins\ZWave\zwave_value.py", line 302, in id_on_network
20:56:27       self.command_class,
20:56:27     File "C:\ProgramData\EventGhost\plugins\ZWave\zwave_value.py", line 640, in command_class
20:56:27       return getattr(zwave_command_classes, self._commandClass)
20:56:27   AttributeError: 'CommandClasses' object has no attribute 'COMMAND_CLASS_ZWAVE_PLUS_INFO'
all other functions (terminology?) seem to work
Automation is life.

Win7 64bit
EG: v0.5.0-rc4

User avatar
kgschlosser
Site Admin
Posts: 4807
Joined: Fri Jun 05, 2015 5:43 am
Location: Rocky Mountains, Colorado USA

Re: Z-Wave

Post by kgschlosser » Fri Aug 31, 2018 3:19 am

HEYYYY You seem to have found a command class i did not have added. I will do a bit of legwork and see what the ZWavePlus command class does. and I will add anything specific to that command class.

The other error when unplugging the ZStick is because of me stopping the network. I have the plugin set up so that is is supposed to stop the network if unplugged. and restart it when you plug it back in.

To be honest I completely forgot to test this portion of it. So apparently if you unplug the device stopping the network is not a good thing. maybe just deleting the network object and letting the garbage collector do it's job will suffice.
If you like the work I have been doing then feel free to Image

User avatar
kgschlosser
Site Admin
Posts: 4807
Joined: Fri Jun 05, 2015 5:43 am
Location: Rocky Mountains, Colorado USA

Re: Z-Wave

Post by kgschlosser » Fri Aug 31, 2018 4:56 am

OK those 2 tracebacks should now be fixed. the new version is on the first post.

As far as the values for the ZWavePlus devices. I cannot locate any information on them. The UserIcon and InstallerIcon I am sure have a special purpose. But I am unable to locate anything to tell me exactly what can be supplied. I do not own any zwave plus devices so I am not able to test.

I know they are for icons. but exactly what format the icon has to be in. or what the maximum size of the icon is i do not know. This is information i was unable to locate. I am guessing it is for storage of an icon for a specific device that a GUI interface can use. This could be a very handy thing.


if you run this script it will give me a whole lot more information about the device that i may be able to determine what else can be done with it.

You need to fill in NETWORK NAME and NODE_ID at the top of the script

it will output a bunch of data to your log. copy the data (without the timestamps turned on please) and send it to me in a PM

Code: Select all

NETWORK_NAME = 'ENTER NETWORK NAME HERE'
 # node id can be gotten from the admin panel
 # ID for the device.
NODE_ID = 0x5


node = eg.plugins.ZWave.GetNode(NETWORK_NAME, node_id=NODE_ID)


def HEX(h):
    try:
        return '0x' + hex(h)[2:].upper()
    except:
        try:
            return '0x' + hex(int(h, 16))[2:].upper()
        except:
            return h

print 'name:', node.name
print 'location:', node.location
print 'manufacturer_id:', HEX(node.manufacturer_id)
print 'manufacturer_name:', node.manufacturer_name
print 'product_name:', node.product_name
print 'product_type:', HEX(node.product_type)
print 'product_id:', HEX(node.product_id)
print 'command_classes:', ', '.join(list(HEX(c) + ' ' + node.get_command_class_as_str(c) for c in node.command_classes)),
print 'version:', node.version
print 'security:', node.security
print 'max_baud_rate:', node.max_baud_rate
print 'is_listening_device:', node.is_listening_device
print 'is_beaming_device:', node.is_beaming_device
print 'is_frequent_listening_device:', node.is_frequent_listening_device
print 'is_security_device:', node.is_security_device
print 'is_routing_device:', node.is_routing_device
print 'is_zwave_plus:', node.is_zwave_plus
print 'is_locked:', node.is_locked
print 'is_sleeping:', node.is_sleeping
print 'is_awake:', node.is_awake
print 'is_failed:', node.is_failed
print 'is_ready:', node.is_ready
print 'is_info_received:', node.is_info_received
print 'neighbors:', list(HEX(c) for c in node.neighbors)
print 'num_groups:', node.num_groups
print 'groups:', node.groups
print 'groups_to_dict:', node.groups_to_dict()
print 'device_type:', HEX(node.device_type), ' ', node.device_type_as_str
print 'generic:', HEX(node.generic), ' ', node.generic_as_str
print 'basic:', HEX(node.basic), ' ', node.basic_as_str
print 'specific:', HEX(node.specific), ' ', node.specific_as_str
print 'role:', HEX(node.role), ' ', node.role_as_str
print 'type:', node.type_as_str
print 'query_stage:', node.query_stage
print 'stats:', node.stats


for value in node.values:
    print value.label
    print '    data:', value.data
    print '    instance:', value.instance
    print '    units:', value.units
    print '    type:', value.type
    print '    help:', value.help
    print '    max:', value.max
    print '    min:', value.min
    print '    genre:', value.genre
    print '    index:', value.index
    print '    is_read_only:', value.is_read_only
    print '    is_write_only:', value.is_write_only
    print '    is_polled:', value.is_polled
    print '    command_class:', HEX(value.command_class), ' ', node.get_command_class_as_str(value.command_class)
    print '    precision:', value.precision
    print '    value choices:', list(value)
 
If you like the work I have been doing then feel free to Image

skribb
Experienced User
Posts: 224
Joined: Thu Feb 12, 2015 7:22 pm
Location: Win7 64bit

Re: Z-Wave

Post by skribb » Fri Aug 31, 2018 5:03 pm

running script gives errror

Code: Select all

   Traceback (most recent call last):
     Python script "306", line 7, in <module>
       node = eg.plugins.ZWave.GetNode(NETWORK_NAME, node_id=NODE_ID)
     File "C:\Program Files (x86)\EventGhost\eg\Classes\PluginInstanceInfo.py", line 245, in __getattr__
       return self.actions[name]()
   KeyError: 'GetNode'
Automation is life.

Win7 64bit
EG: v0.5.0-rc4

User avatar
kgschlosser
Site Admin
Posts: 4807
Joined: Fri Jun 05, 2015 5:43 am
Location: Rocky Mountains, Colorado USA

Re: Z-Wave

Post by kgschlosser » Fri Aug 31, 2018 8:50 pm

well that's odd. the action is in fact there.
hmmm......

this one will solve the issue.

Code: Select all


NETWORK_NAME = 'ENTER NETWORK NAME HERE'
 # node id can be gotten from the admin panel
 # ID for the device.
NODE_ID = 0x8

plugin = eg.plugins.ZWave.plugin

for network in plugin.networks:
    if network.name == NETWORK_NAME:
        break
else:
    eg.PrintError('Network not found.')
    eg.Exit()
    
if NODE_ID in network.nodes:
    node = network.nodes[NODE_ID]
else:
    eg.PrintError('Node not found')
    eg.Exit()
    

# node = eg.plugins.ZWave.GetNode(NETWORK_NAME, node_id=NODE_ID)


def HEX(h):
    try:
        return '0x' + hex(h)[2:].upper()
    except:
        try:
            return '0x' + hex(int(h, 16))[2:].upper()
        except:
            return h

print 'name:', node.name
print 'location:', node.location
print 'manufacturer_id:', HEX(node.manufacturer_id)
print 'manufacturer_name:', node.manufacturer_name
print 'product_name:', node.product_name
print 'product_type:', HEX(node.product_type)
print 'product_id:', HEX(node.product_id)
print 'command_classes:', ', '.join(list(HEX(c) + ' ' + node.get_command_class_as_str(c) for c in node.command_classes)),
print 'version:', node.version
print 'security:', node.security
print 'max_baud_rate:', node.max_baud_rate
print 'is_listening_device:', node.is_listening_device
print 'is_beaming_device:', node.is_beaming_device
print 'is_frequent_listening_device:', node.is_frequent_listening_device
print 'is_security_device:', node.is_security_device
print 'is_routing_device:', node.is_routing_device
print 'is_zwave_plus:', node.is_zwave_plus
print 'is_locked:', node.is_locked
print 'is_sleeping:', node.is_sleeping
print 'is_awake:', node.is_awake
print 'is_failed:', node.is_failed
print 'is_ready:', node.is_ready
print 'is_info_received:', node.is_info_received
print 'neighbors:', list(HEX(c) for c in node.neighbors)
print 'num_groups:', node.num_groups
print 'groups:', node.groups
print 'groups_to_dict:', node.groups_to_dict()
print 'device_type:', HEX(node.device_type), ' ', node.device_type_as_str
print 'generic:', HEX(node.generic), ' ', node.generic_as_str
print 'basic:', HEX(node.basic), ' ', node.basic_as_str
print 'specific:', HEX(node.specific), ' ', node.specific_as_str
print 'role:', HEX(node.role), ' ', node.role_as_str
print 'type:', node.type_as_str
print 'query_stage:', node.query_stage
print 'stats:', node.stats


for value in node.values:
    print value.label
    print '    data:', value.data
    print '    instance:', value.instance
    print '    units:', value.units
    print '    type:', value.type
    print '    help:', value.help
    print '    max:', value.max
    print '    min:', value.min
    print '    genre:', value.genre
    print '    index:', value.index
    print '    is_read_only:', value.is_read_only
    print '    is_write_only:', value.is_write_only
    print '    is_polled:', value.is_polled
    print '    command_class:', HEX(value.command_class), ' ', node.get_command_class_as_str(value.command_class)
    print '    precision:', value.precision
    print '    value choices:', list(value)
    
If you like the work I have been doing then feel free to Image

skribb
Experienced User
Posts: 224
Joined: Thu Feb 12, 2015 7:22 pm
Location: Win7 64bit

Re: Z-Wave

Post by skribb » Sat Sep 01, 2018 9:22 am

Slightly better result this time hehe

Code: Select all

Python Script
   name: main_door
   location: Entrance
   manufacturer_id: 0x86
   manufacturer_name: Aeotec
   product_name: ZW120 Door Window Sensor Gen5
   product_type: 0x2
   product_id: 0x78
   command_classes: 0x0 COMMAND_CLASS_NO_OPERATION, 0x20 COMMAND_CLASS_BASIC, 0x84 COMMAND_CLASS_WAKE_UP, 0x85 COMMAND_CLASS_ASSOCIATION, 0x86 COMMAND_CLASS_VERSION, 0x30 COMMAND_CLASS_SENSOR_BINARY, 0x80 COMMAND_CLASS_BATTERY, 0x70 COMMAND_CLASS_CONFIGURATION, 0x71 COMMAND_CLASS_ALARM, 0x72 COMMAND_CLASS_MANUFACTURER_SPECIFIC, 0x73 COMMAND_CLASS_POWERLEVEL, 0x5A COMMAND_CLASS_DEVICE_RESET_LOCALLY, 0x5E COMMAND_CLASS_ZWAVE_PLUS_INFO version: 4
   security: 0
   max_baud_rate: 40000
   is_listening_device: False
   is_beaming_device: True
   is_frequent_listening_device: False
   is_security_device: False
   is_routing_device: True
   is_zwave_plus: True
   is_locked: False
   is_sleeping: True
   is_awake: False
   is_failed: True
   is_ready: False
   is_info_received: True
   neighbors: []
   num_groups: 1
   groups: {1: <eg.UserPluginModule.ZWave.zwave_group.ZWaveGroup object at 0x090FAA50>}
   groups_to_dict:Traceback (most recent call last):
     Python script "307", line 60, in <module>
       print 'groups_to_dict:', node.groups_to_dict()
     File "C:\ProgramData\EventGhost\plugins\ZWave\zwave_node.py", line 350, in groups_to_dict
       ret[gid] = groups[gid].to_dict(extras=extras)
   TypeError: to_dict() got an unexpected keyword argument 'extras'
Automation is life.

Win7 64bit
EG: v0.5.0-rc4

User avatar
kgschlosser
Site Admin
Posts: 4807
Joined: Fri Jun 05, 2015 5:43 am
Location: Rocky Mountains, Colorado USA

Re: Z-Wave

Post by kgschlosser » Sat Sep 01, 2018 3:32 pm

@skribb

New version is up. it should fix the latest error. I do not have anything that is utilizing group associations So I have not been able to bug test this portion either LOL

It just so happens you are hitting all of the things that i have not gone through yet. So please be patient. I will have them sorted out.

There is going to be a major version change soon. I have decided to add actions for the various device types, If there is anyone willing to spend some time to either make or locate some public domain icons that would be a HUGE help. I want to add some beauty to the plugin. I am also going to add some kind of a web interface for management/control. I have not decided on how I am going to go about serving the web pages. I want to keep everything self contained. but at the same time I would love to have the power of a server like Apache. I am going to have to do some digging and see what I come up with.

The icons I am looking for are all of the various types of icons associated with HA, Things like light bulbs, alarm sensors. irrigation, thermostats just to name a few.

New version of the plugin is up also.
If you like the work I have been doing then feel free to Image

skribb
Experienced User
Posts: 224
Joined: Thu Feb 12, 2015 7:22 pm
Location: Win7 64bit

Re: Z-Wave

Post by skribb » Sat Sep 01, 2018 10:40 pm

Just doing what I can to help you iron out the kinks.

I'll see if I can find some royalty-free icons. you mean static icons tho right? Not animated ones.

edit: found no irrigation icons, ergo any icon set i find will be insufficient, so can't help you there. :cry:


when updating plugin, is it safe to install new version over old one, or is there anything i need to backup?
Automation is life.

Win7 64bit
EG: v0.5.0-rc4

Post Reply