Please login or register.

Login with username, password and session length
Advanced search  

News:

The X10Hub (PiX10Hub) is here! Created by the Community, for the Community.:)% #:)

Author Topic: Looping Macros  (Read 18430 times)

steven r

  • Advanced Member
  • Hero Member
  • ******
  • Helpful Post Rating: 74
  • Posts: 2189
  • Halloween with X10
Looping Macros
« on: March 27, 2008, 10:35:40 AM »

It's both easy and dangerous to build and start a loop. e.g. I use one as a panic that flashes the lights.
The most basic endless loop can be created as follows.

Create a Dummy module with the same address as your macro.

Macro M1 ON - Trigger on an M1 signal
<execute commands>
delay 10 min
M1 On

The above will continue to execute indefinitely and if triggered again each additional loop will continue till purged. I strongly recommend using flags, elses, and/or time conditions to give one an exit point.

Without a way to exit, the macro will go into an endless loop causing multiple possible problems including possibly having the CM15A lock up!

This is a the looping macro I use to test check my X10 signal as well as switches and modules on my test jig before installing. It gives an example of how to program an exit for a macro.

Narrative:
AHP 3.204 (should work on 3.206 as well)

This is an example on a looping macro using a flag to exit it. I use a similar one to flash the lights.
It requires a dummy lamp module set to HC/UC P1. Macros can't directly call themselves! A macro can trigger a dummy module with the same HC/UC, however. This will result in a macro effectively calling itself.
I test my X10 components on P1 and leave them on that code till I need them. This way if I need to reach in the X10 box of stuff for something in a hurry, I know the component has been already tested.

The actual looping macro is "P1 On". Macros "P2 On" and "P2 Off" start and stop the loop respectively.

  • Initiating "P2 On" sets flag 1 and starts the P1 loop.
  • The P1 loop continues till it sees the flag 1 cleared.
  • Initiating "P2 Off" clears flag 1 and stops the P1 loop.

P1 ON LOOP TEST   - Triggers with P1 On and Flag Status On exactly 1   
Delay for 2 Seconds
(P1) Dummy - Loop test   OFF                                         ;X10 test commands
Delay for 2 Seconds                                                       ;   "     "        "
(P1) Dummy - Loop test   Brighten then dim to 25%          ;   "     "        "
Delay for 4 Seconds                                                       ;   "     "        "
(P1) Dummy - Loop test   Brighten then dim to 75%          ;   "     "        "
Delay for 4 Seconds                                                       ;   "     "        "
(P1) Dummy - Loop test   OFF                                         ;   "     "        "
Delay for 2 Seconds                                                       ;   "     "        "
(P1) Dummy - Loop test   ON                                          ;Recalls itself via dummy module

P2 ON - START SIGNAL TEST - Triggers with P2 On   
Set Flags [1]   
(P1) Dummy - Loop test   ON                                         ;Starts P1 loop via dummy module

P2 OFF -STOP SIGNAL TEST - Triggers with P2 Off   
Clear Flags [1]                                                             ;With flag 1 clear P1 loop will stop at the end of its current loop
Delay for 2 Seconds
Clear Flags [1]                                                             ;Redundant command. Most likely not needed. Added just for the "Murphy factor"
Delay for 30 Seconds
(P1) Dummy - Loop test   OFF                                       ;Just to make sure whatever I was testing is left off.


Another exit approach would be to place a timed condition in the looping macro.
« Last Edit: March 27, 2008, 10:39:46 PM by steven r »
Logged
BVC let's me tell my camera where to go!
:) Murphy is my beta testing pal. He helps me find problems whether I like it or not. :)

steven r

  • Advanced Member
  • Hero Member
  • ******
  • Helpful Post Rating: 74
  • Posts: 2189
  • Halloween with X10
Re: Looping Macros
« Reply #1 on: March 27, 2008, 12:16:51 PM »

Exit via a time.

Requires dummy appliance module M1

M1 Off - Triggers on M1 off and time is before 6:00 am
<turn off kids lights>
delay 15 min
M1 Off

Once started it will turn off the light every 15 minutes till it's time to wake up for school.
This works flawlessly for wired lights and also for plug in lights till your kid figures out how to plug his lamp in directly.  ;)

Hey... It's just an example. Your mileage will vary.

I've built a similar one for Earth Hour this coming Sat, March 29 at 8:00 pm.
« Last Edit: March 27, 2008, 12:20:18 PM by steven r »
Logged
BVC let's me tell my camera where to go!
:) Murphy is my beta testing pal. He helps me find problems whether I like it or not. :)

Don N

  • Hero Member
  • *****
  • Helpful Post Rating: 14
  • Posts: 311
Re: Looping Macros
« Reply #2 on: December 05, 2009, 10:49:05 AM »

steven r --  I built your looping marco and found that after 5-6 cycles a "firestorm" causes the AHP to lock up.  By your narrative, it sounds as if you use this routine a lot.  How have you overcome the "firestorm?"
Logged
 

X10.com | About X10 | X10 Security Systems | Cameras| Package Deals
© Copyright 2014-2016 X10.com All rights reserved.