Drew,
If you have a macro with 3 else logic (4
total macros trigerred by the same address),
for instance, the macro engine will evaluate
each one until it finds a match, then it
stops. I don't believe it keeps evaluating
the rest of the conditions if it finds them
true in one of the first blocks.
For your second question - one way to avoid
this is to use flags - then the condition
doesn't match until the first instance of the
macro is done. I can see how you can have two
valid instances of the same macro start if
you don't use flags, and I don't know what
the CM15A does in that case - I would also
like to know. A lot of times you don't really
need to use flags, unless you want to
explicitly avoid collisions.
If I think about it, I think the CM15A
actually treats each macro trigerred the same
way and tries to execute them all, which
could be a problem, especially if you turn
lights off after a certain amount of time.
Consider the following "welcome home macro":
If time between 5 PM and 8 PM,
Turn hallway lights on
Turn kitchen lights on
Delay 5 minutes
Turn lights off
If I come home at 5:15 PM the macro starts
running and it turns the lights on.
Meanwhile, my wife walks in at 5:19 PM, four
minutes after I trigerred the macro. In that
case the macro is executed again, however 1
minute after my wife gets home the lights
turn off instead of 5 minutes later, because
the first instance of the macro is still
running. So, we end up with somethine like this:
5:15 PM Lights ON
5:19 PM Lights ON
5:20 PM Lights OFF
5:24 PM Lights OFF
The last set of OFF commands is redundant
since the lights would be off anyway, but the
macros are just doing their job.
I would hope X10 will change AHP to terminate
a running instance of a macro if that macro
is trigerred again (I think this would be the
preferred solution). The alternative is to
ignore calls to the macro while it is running
(not appealing, since my wife would only get
1 minute of light and I'd be the one taking
the blame!!!). Hope this helps.