This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Using PyACI how to model app unbind and bind again

I have devices within an same group that bind with same app key, all are working normal together. But I want one device to be unbind and bind with another app key(out of the group) to control seperately.

After restart script, I tried these commands step by step, but doesn't work.

db = MeshDB("database/example_database.json")

p = Provisioner(device, db)
device.send(cmd.DevkeyAdd(db.nodes[0].unicast_address, 0, db.nodes[0].device_key))
device.send(cmd.AddrPublicationAdd(db.nodes[0].unicast_address))

cc = ConfigurationClient(db)
device.model_add(cc)
cc.publish_set(8, 0)

cc.composition_data_get()
cc.appkey_add(0)

cc.appkey_add(1)

cc.model_app_unbind(db.nodes[0].unicast_address, 0, mt.ModelId(0x1000))

cc.model_app_bind(db.nodes[0].unicast_address, 1, mt.ModelId(0x1000))

But nothing happned, anyone have an idea or please share step by step command.

  • Hi Jawwad. 

    I'm not sure I understood correctly but why do you unbind the key before you bind anything to the model ? 
    If you call 
    cc.model_app_bind(db.nodes[0].unicast_address, 0, mt.ModelId(0x1000))

    and 
    cc.model_app_unbind(db.nodes[0].unicast_address, 0, mt.ModelId(0x1000))

    cc.model_app_bind(db.nodes[0].unicast_address, 1, mt.ModelId(0x1000))

    Would this work ? 

    Please check on the peer node if you receive the CONFIG_OPCODE_MODEL_APP_UNBIND command from the provisioner. 

  • Thanks for your response.

    Actually I want to test to control all lights in a group and then move one node to another group, and then test individually.

    Next, I want to reverse back this step. The purpose of this test to check how PYACI command can use to control nodes within a group or without group.

    If I restart pycai script, I am not sure what commands need to follow to archive above task.

    db = MeshDB("database/example_database.json")
    db.provisioners
    p = Provisioner(device, db)

    ???

  • Hi Jawwad, 
    Please be aware that the PyACI was only an example on how you can use the serial interface. So it doesn't show how to reinitialize the provisioner after resetting it. 
    You can have a look at this case.

    But I am not sure I fully understand what you plan to do. If you simply want to change the group (for subscription or publication) why do you need to change the appkey ? Would that work by simply change the publication and subscription addresses ? 
    What do you mean exactly by "group" ? 

  • My plan is to test the node from group A to group B and reverse it. I have a 4 lights in a group A that all controlling by one command and 2 lights in group B that also controlling by separate command. I want to move my node D from group A to group B.

    Group: Controlling all nodes by one commands.

    Example: 

    Before

    After

    Please let me know if this scnario is clear, so using PYACI can it do?

  • Please clearly define what you mean by a "group".
    How do you configure a node into a "group" in the first place ?

Related