PowerHome version 1.03.4.7 now available

I would think group commands would be used primarily for scenes (or as you say to keep KPL's or 3-ways in sync) but I see your point. The great thing about groups, is the variable ramprate (preconfigured in the group definition, but variable at the time the group is created). The downside would be the limitation on specific dim levels (variable when the group is created). With a direct command, you could instantly go to whatever level you want, but only at the preconfigured local ramprate.

I wouldnt think that a group command would be any more reliable that a direct command. A group command is first a broadcast message that is not acknowledged followed by individual group cleanup (direct) commands that are acknowledged. The direct command is the same thing minus the initial group broadcast (the commands are actually different, but both are direct commands that are acknowledged.

Now talking about this has just given me a new idea (no idea emoticon).

You can get even more usability out of your groups by "slicing" them up! A standard direct command tells a device to go to a specific level using the local ramprate. A group cleanup direct command tells a specific device to go the group level using the group ramprate. You can use group cleanup commands without first sending a group broadcast. This way you could control individual devices within a group using the group level and ramprate. I'll be adding a new function/command to PowerHome so you can send a group cleanup command (not sure if many would find it useful, but it's easy enough to add) without the group broadcast.

Dave.
 
I'm following this discussion of group vs direct commands closely, because from reading the dev kit docs, it is not obvious as to how these are meant to be used. Direct commands need you to specify the device id of the switch, so creating a device list in a PC based HA program reuiqres you to build a table of virtual device names (ie: whatever way you want to identify the devices in your program) that references a device id. With groups, you can keep it all virtual (group numbers only)and only the PLC needs to have an internal link to a device id.

I discussed this a bit with dhoward on last Friday's chat but it is still not clear in my mind as to how SH was intending this to be implemented in an external sofware package communicating through a PLC.
 
Guy Lavoie said:
I'm following this discussion of group vs direct commands closely, because from reading the dev kit docs, it is not obvious as to how these are meant to be used. Direct commands need you to specify the device id of the switch, so creating a device list in a PC based HA program reuiqres you to build a table of virtual device names (ie: whatever way you want to identify the devices in your program) that references a device id. With groups, you can keep it all virtual (group numbers only)and only the PLC needs to have an internal link to a device id.

I discussed this a bit with dhoward on last Friday's chat but it is still not clear in my mind as to how SH was intending this to be implemented in an external sofware package communicating through a PLC.
I guess my feeling is that a group command has 2 parts: the fast broadcast part and the surefire cleanup (direct) part. When controlling several devices, you will get faster response from a single group command that triggers them all than with a series of individual comands directed at each device. Since you also get the surefire cleanup as a follow-up, I don't see any down side to using group commands.

Also many, if not all, of your devices will have links to companion switches or keypads and if you want to keep things in sync in those situations then you have to use a group command. I don't see doing things 2 different ways depending on whether a particular device is linked to others or not. The group command method works in both situations.

I also don't see using direct commands on a device that is not linked to anything else and then have to change your command structure because you decide to add a link to that device.
 
Guy,

That is exactly what PowerHome does...I have a table of Insteon devices that connects the actual address to a "Virtual" ID such as KITCHENLIGHT. You basically need to identify for PowerHome every Insteon device you have either manually (yuck) or using the auto discovery.

This is then coupled (joined) to another table in the database that contains the individual links within each device. Without all of this information, it would be impossible for PowerHome or any program to track actual on,off, and dim levels of individual devices since "group" commands contain none of this info. You could wait around for the group cleanup command to come around, but this would only give you the address of the controlled device and the status...either on or off since the level is ONLY contained within the receiving devices link database. Even this is unreliable, because the group cleanup commands are only sent as long as the line is clear and other Insteon traffic does not interfere.

In contrast, a "Direct" command contains the receiving address, the command value (on,off,etc) and the level.

Hope this helps,

Dave.
 
Posted at the same time (almost, Im obviously a slower typer than you :lol:).

Since you also get the surefire cleanup as a follow-up, I don't see any down side to using group commands.

The only problem here is that this is not guaranteed (at least not from devices other than the PLC). If you have a KPL that controls say 5 lights, you'll get the group broadcast followed by individual group cleanups for each of the 5 devices. If another Insteon command comes on the line before all 5 group cleanup commands are sent, then the remaining commands are just skipped.

You won't have to worry about this with the PLC using PowerHome though. PowerHome uses the PLC linking differently and queues up the group cleanup commands for transmission whether or not other Insteon traffic appears on the line.

Dave.
 
So Dave, you're saying that in PowerHome, you are turning individual lights on and off using direct commands, and that group commands are used for scenes and such? From your explanation above, your main reason for using the direct commands is that you get better status information such as the current dim level, etc. I just want to be sure that I'm understanding this right (sorry if I appear a bit slow on this...).

So it would appear that with Insteon, you actually have a choice of a "simple" or "complex" implementation, where a simple setup would be to assign an individual group to each device as well as for any actual groups you want to create, to keep everything virtual outside of the PLC, and a complex implementation (like PowerHome) where you can address devices individually, giving possibly faster operation and keeping track of status much more closely.

Does any of this make sense? :lol:
 
Guy,

Everything you said was pretty close. Actually in PowerHome, you can control devices using either direct or group commands. The "Device Status" screen where every Insteon, X-10, Digitial Input, Digital Output, etc is displayed uses the "Direct" command method. This screen displays a sorted list of every device, the type of device, the current status, level, time of last change, etc. Since this screen doesnt know anything about groups or links and displays devices individually, it also controls them individually. If a group command is issued by PowerHome (say from a script) or an incoming group command is received, you'll see all effected devices (devices within the group) transition as a group, but control from the screen is done individually as direct commands.

Now, this screen also displays "Virtual" X10 devices (Housecodes > P with unitcodes 1 to 99). What some people have done is set "triggers" on the virtual X10 devices so that turning a virtual X10 device on actually sends an Insteon "group" command. So you could set the system up so that the Device Status screen will send Insteon group commands.

Sooo, not to turn this into an explanation of PowerHome, I just chose to implement this screen using Direct commands because it just made more sense to me. Not because I thought it was more reliable or had more information or anything. Probably more of a "habit" from X-10 thinking. The PowerHome macro commands and formula functions allow you to send Insteon commands using either direct or groups....users choice.

Now if you look at all the current Insteon devices (switchlinc, KPL's, etc.)...they ALL send a group command initially (unless it's not linked to anything...then it sends nothing) followed by a group cleanup (direct) command. I suppose they do this by default mainly because they only have to program for 1 method. If a device were controlling only one other device, then they could just as well as used a direct command (only in this case, the controller would need to know the level, instead of the other way around). But as soon as a device needed to control two or more devices, the direct command method would mean that the devices could not be switched simultaneously and they would have to resort to group commands. Just more complicated so it was easier and cheaper (Im surmising) to just send group commands.

The PLC however, being programmable and remotely controllable, supports both types of communications. The biggest stumbling block I think most people (developers) are having with Insteon, is keeping a copy of every devices database in a central location. If you don't do this, all you can do is watch for group cleanup commands (and hope they don't get interrupted so you capture them all) and then query each individual device to find out what level the group command caused them to be set to. For the most part, it would probably work, but would hardly be realtime and would create extra Insteon traffic for the polling operation.

Im not sure if I answered your question or not. I tend to try to over-explain things and sometimes get lost in the process :lol: . If I missed the mark on this one, just let me know and I'll try to get it right the next time :D.

Dave.
 
I noticed there is a clone option. Not sure if that is a device cloning feature or a group cloner. (I am kind of behind on my reading).

A cool feature would be if you could pick a virtual X-10 address like R3 and select an existing group such as Living Room keypad button 3, and have it build automatically. It could just pick the next available slot in the PowerLinc, duplicate all the links from keypad button 3, and assign the newly created group to R3. Press R3 on the device status screen and it is the same as pushing button 3 on the Living Room Keypad.
 
Mike,

Heh, that would be pretty automated but may be a little to specialized for most people :) . However, I could create a macro that would do this for you.

The clone option clones a group. You define a new controller and group number and then pick an existing group controller/group number and it will copy all the responders of the existing group as responders of the new group with the option to copy the existing group controller as a responder as well. Perfect for duplicating groups on a KPL or similar into PLC groups since you'd also want to include the group controller as a responder in the new group. It copies over all of the existing ramprates and levels as well.

Also, let me know on the SDM problems you're having. It will help me perfect the SDM auto-recovery feature.

Dave.
 
Back
Top