Ok, Here's the breakdown:
Your Child device is number 95.
You receive a GSD command (192 ON) from DCERouter.
Here's what you do:
cmd = Command.new(95, 95, 1, 1, 193) # not this is OFF
ignoreoff = true #flag set to ignore next OFF command
cmd = Command.new(95, 95, 1, 1, 192) # NOW send the ON command
ignoreon = true #flag to ignore the next ON command
In your Receive Command for Child, don't forget to check those flags..
If they are set, ignore the command, and reset the flag.
The OFF command is exactly the same, but reversed...
cmd = Command.new(95, 95, 1, 1, 192) #on first
cmd = Command.new(95, 95, 1, 1, 193) # now off
Notice I'm sending the command to myself: Seems useless right? That's what I thought... but what happens is the DCERouter gets the command, and sets it's internal state.. then sends the command back out.
Ideally, this shouldn't happen, but it does, and it caused me about 3 weeks of hairpulling to figure it out.