Hi, if you are using the Stack, you could just implement the switch function on the Router. The meshing is already implemented.
Off the top of my head, for that specific example, that could be done by :
Router --Unicast--> Coordinator ;
Coordinator process payload ;
Coordinator --Unicast--> Light (hop through Router).
Cons: Coordinator needs to Discover & keep track of what Address is what Type of device. Generates more traffic, more latency, more collision.
or the more proper(?)/compliant(?) way,
Router & Light are Bounded together.
Router --Bound Data Unicast--> Light
Cons: Coordinator does not know status(if needed) unless Coordinator poll Light, or Light has implemented Reporting feature. Extra step for Find & Bind.
You could look into ZCL for even more compliance.
There are many more styles you could look into.