Hi,
I've been doing some testing over the weekend with my UZB1. In my opinion these are better then Aotec. Now you can buy US version or any other and change the frequency to US so it shouldn't be an issue any more.
In my current scenario I have been using UZB1 as a Primary controller and Z-Stick2 as a secondary Inclusion controller. As you may have noticed in previous posts there is a good way to backup the UZB1 stick using Raspberry PI with Z-Way software. I have successfully shifted Primary controller back and forth using Zensys tool as posted by Albatros.
After the shift I have changed associations using the following script. Please note that it has been tested on limited number of nodes and I'm not sure how it may behave with all 90 nodes in my network. I plan to do it in groups of devices and unfortunately there are 2 issues:
1. With battery devices you need to wake up them individually for the association change or wait for the wake up
2. New controller node number is not immediately visible in the node info and in Indigo database - you still need to resynch all devices - very cumbersome with battery devices.
Anyway, here is the script if you wan to play with it:
- Code: Select all
import simplejson as json
oldAssociation = 1
newAssociation = 99 #Use None just for removing the node from all groups i.ex. faulty
gnames = ['g1','g2','g3','g4','g5'] #group names
## Convenience log function
def log(msg):
indigo.server.log(msg, type="Associations change")
debug = 1
#start iteration for all devices or in the list below
devIds = [1190943052, 1123456]
for devId in devIds: #or all devices below
#for devId in indigo.devices.iter("indigo.zwave" "indigo.relay"): #filter can be added for specific devices like relay, thermostst etc
d = indigo.devices[devId]
if d.ownerProps["zwDevSubIndex"] == 0 and d.ownerProps["SupportsBatteryLevel"] == False: ##battery devices may be treated separately
nrgroups = len(d.ownerProps['zwAssociationsMap'])
for g in range(nrgroups): #g+1 = group number
gname = gnames[g]
glist = d.ownerProps['zwAssociationsMap'][gname]
#indigo.server.log('device='+str(devId)+' '+str(glist))
gnritems = len(glist)
if gnritems > 0:
for gindex in range(gnritems):
assoc = d.ownerProps['zwAssociationsMap'][gname][gindex]
if debug: indigo.server.log('device='+str(devId)+' group=:'+gname+' assoc:'+str(assoc))
if assoc == oldAssociation:
removeAssoc = [0x85, 0x04, g+1, oldAssociation]
indigo.zwave.sendRaw(device=devId, cmdBytes=removeAssoc, sendMode=1, waitUntilAck=True)
# Note sendMode is: 0=immediate, 1=immediateThenWaitForWake, 2=waitForWake
if newAssociation <> None:
addAssoc = [0x85, 0x01, g+1, newAssociation]
indigo.zwave.sendRaw(device=devId, cmdBytes=addAssoc, sendMode=1, waitUntilAck=True)