That's what I like to see! That's a substantial improvement over a 1 in 7 error rate!
I'll have a look at the reset code; it sounds like a good idea.
Eventually, we need to add support for the
CommunicationFailure property. This property is found in all native drivers (I included it in the WeederTech driver) and indicates when the driver has lost communications with the physical device (i.e. the RZC0P). A standard thing to do when this happens is to have the driver log an Event.
Here's my idea for Groups. Each Group will have three properties:
- GroupNumber (Integer)
- ProgramGroupNumber (Boolean, Momentary)
- Programmed (DateTime)
So if you set the GroupNumber for "AllLights" to
125 and then click "ProgramGroupNumber", the driver will time-stamp "Programmed" and send a Group Store command ("N1,2,3,4GS125") to the RZC0P. This is something the end-user would (optionally) do for each group.
Now when you set a Group's PowerState to ON, the driver will check to see if the Group has an assigned GroupNumber (i.e. a non-zero value). If so, the driver will issue a Group Recall command ("GR125ON") to turn on lights in the group. On the other hand, if GroupNumber is zero, the driver iterates through all members of the group and sends individual commands (N1ON,UP"). Naturally, sending one GR command is more efficient than sending one N command per device.
The "Programmed" property is purely a convenience to remind the end-user when the GroupNumber was programmed.
QUESTION
Do you know if sending this command ">N1,2,3,4,5,6ON,UP" is as reliable as sending indvidual commands like ">N1ON,UP", "N2ON,UP", etc? Is it more, or less, time-efficient?
I'm trying to determine how a Group should be handled if the GroupNumber is
not assigned. Should I send one long list (">N1,2,3,4,5,6ON,UP") or a bunch of individual commands (">N1ON,UP").