#
# === CommandPort
# --- Set this value to the port which will be used to send X10 commands to the server
# --- The default port# is 8182
:CommandPort = 8182
#
# === LogHost
# --- Set this value to the host:port to send X10 event logging information to.
# --- To broadcast X10 event messages, set the address to a valid broadcast address.
# --- [Note: When used with the CM17A, only commands/events originating from the X10Server
# --- will be forwarded to the log host]
# --- The default is to not send X10 event information.
#:LogHost = 168.129.100.255:30321
#
# --- TimeServer (applicable to TINI installation only)
# --- Set this value to the host which will be used for obtaining 'date' information.
# --- This uses the 'daytime' service on port 13, which has to be enabled to be effective.
# --- This is used by the 'SetClock -t' command and is only applicable for the TINI.
# --- The default is to ignore the TimeServer features.
#:TimeServer = 168.129.100.161
#

# -----------------------------------------------------------------------------------------
# ==== Notes
# - If A1/A2 appear to randomly trigger, this may indicate battery failure on an IR sensor.
# - A prolonged power-fail may reset some switches to the default A1 setting.
#

# -----------------------------------------------------------------------------------------
# ==== Example X10 Appliance configuration
# A2  - living-room sconce lights
# A3  - living-room ceiling lights
# A4  - dining-room ceiling lights
# A5  - front-port lights
# A6  - back porch lights
# A7  - back yard lights
# A13 - bedroom ceiling light
# A14 - night-stand light
# A15 - Christmas lights
# ====
# B2  - office lights
# B3  - shop lights
# B4  - garage lights
# ====
# C2  - IR front porch motion sensor
# C3  - IR front porch dusk/dawn
# C4  - IR driveway motion sensor
# C5  - IR driveway dusk/dawn
# ====
# D*  - unused
# E*  - unused
# F*  - unused
# ====
# - The TINI does not support hardware handshaking.  As a result, it is possible to
# - confuse the X10 poll bytes 0x5A & 0x5B with house/unit codes G4 & G12.  For this
# - reason the 'G' house code should not be used (at least not G4 and G12).
# - (this is not an issue for platforms which support serial port hardware handshaking)
# G*  - reserved (closely matches polling characters: 0x5A, 0x5B)
# G4  - reserved [matches poll char 0x5A]
# G12 - reserved [matches poll char 0x5B]
# ====
# H*  - unused
# I*  - unused
# J*  - unused
# K*  - unused
# L*  - unused
# M*  - unused
# N*  - unused
# O*  - unused
# P*  - unused
# ====

# -----------------------------------------------------------------------------------------
# === Abbreviated command syntax BNF:
#
# - Here is an abbreviated BNF of the command/macro syntax expected by this macro file:
# <MacroLine> := <Comment> | <CommandList> | <X10Server-Macro> | <CM11A-Macro>
#
# - commants are ignored while parsing this file.
# <Comment> := any stream of characters beginning with a '#' and ending with a newline.
#
# - separately specified commands are executed as this macro file is loaded
# <CommandList> := <Command> | <Command> ';' <CommandList>
# <Command> := 
#	'SetClock' <TimeSpecifier> |               <-- CM11A only
#	'ResetEEPROM' |                            <-- CM11A only
#	'Pause' <Seconds> | 
#	'Notify' <NotifyMessage> |
#	'On' <HouseUnitList> | 
#	'Off' <HouseUnitList> | 
#	'Dim:'<DimValue> <HouseCodeList> | 
#	'Bright:'<DimValue> <HouseCodeList> |
#	'PresetDim1' <HouseCodeList> |             <-- CM11A only
#	'PresetDim2' <HouseCodeList> |             <-- CM11A only
#	'AllLightsOn' |                            <-- CM11A only
#	'AllLightsOff' |                           <-- CM11A only
#	'AllUnitsOff'                              <-- CM11A only
# <HouseUnitList> := <HouseCode> <UnitAddress>
# <HouseCode> := value between 'A' and 'P' inclusive
# <UnitAddress> := <UnitCode> | <UnitCode> <UnitAddress>
# <UnitCode> := value between '1' and '16' inclusive
# <DimValue> := value between '1' and '210' inclusive
# <TimeSpecifier> := '-t' | <YYMMSShhmm[ss]>
# <NotifyMessage> := a quoted text message
# <Seconds> := a number of seconds >= '1'
#
# - X10Server macros are handled by the X10Server itself.
# <X10Server-Macro> := <X10Server-EventMacro> | <X10Server-TimerMacro>
# <X10Server-EventMacro> := '[' <EventMacroSpecifier> ']' <CommandList>
# <X10Server-TimerMacro> := '[' <TimerMacroSpecifier> ']' <CommandList>
#
# - CM11A macros are are handled by the CM11A EEPROM
# - Note: On the CM17A, this type of macro definition is handle by the X10Server
# -   itself [ie. the same as <X10Server-[|Event|Timer]Macro>].
# <CM11A-Macro> := <CM11A-EventMacro> | <CM11A-TimerMacro>
# <CM11A-EventMacro> := '<' <EventMacroSpecifier> '>' <CommandList>
# <CM11A-TimerMacro> := '<' <TimerMacroSpecifier> '>' <CommandList>
#
# - Event macros are triggered by incoming (received) X10 events.
# - Note: The CM11A does not directly handle Event macros which are only valid during a 
# -   specified time-of-day range.  As a result, if a Start/End time range is specified
# -   for an event-macro to be handled by the CM11A,  the X10Server will automatically 
# -   reload the CM11A with the event macros valid for that time period.
# <EventMacroSpecifier> := <SimpleCommand> | <SimpleCommand> ',' <StartTime> ',' <EndTime>
# <SimpleCommand> := 'On' <HouseCode> <UnitAddress> | 'Off' <HouseCode> <UnitAddress>
# <StartTime> := <TimeSpecifier>
# <EndTime> := <TimeSpecifier>
#
# - Timer macros are triggered at a specific time.
# <TimerMacroSpecifier> := <EventTime> | <EventTime> ',' <DayOfWeekSpecifier>
# <DayOfWeekSpecifier> := "smtwtfs" day mask containing '+' or '-' indicating which days 
#                         the time is effective.
# <EventTime> := <TimeSpecifier>
#
# <TimeSpecifier> := <hour>':'<minute>
#

# -----------------------------------------------------------------------------------------
# ==== Command description
#
# SetClock -t       (CM11A only)
#    Reset the internal date/time in the CM11A from the host specified in 'TimeServer'.
#    On non-TINI platforms, this will obtain the date/time from the current system time.
#    (On the TINI, this also resets the system date/time).
#
# SetClock YYYYMMDDhhmm[ss]        (CM11A only)
#    Reset the internal date/time in the CM11A. 
#    (On the TINI, this also resets the system date/time).
#
# ResetEEPROM       (CM11A only)
#    reload CM11 EEPROM with defined macros.
#
# Pause [<seconds>]
#    Pause for specified number of seconds (the default is 1 second).
#    Additional commands may be queued for execution, but they will not be executed
#    until the specified time has elapsed.
#
# Notify [<message>]
#    Send "<message>" to LogHost.
#    This is only used to send informational messages to the LogHost:port.
#
# On <houseCode> <unitCode> [ <unitCode> ...]
#    Turn 'ON' specified House/Unit codes.
#    Note: On the CM17A, specification of multiple unit codes will cause multiple
#          separate commands to be generated. ie. Specifying "ON A 1 2 3" will
#          result is a command that is equivalent to "ON A1; ON A2; ON A3"
#
# Off <houseCode> <unitCode> [ <unitCode> ...]
#    Turn 'OFF' specified House/Unit codes.
#    Note: On the CM17A, specification of multiple unit codes will cause multiple
#          separate commands to be generated. ie. Specifying "OFF A 1 2 3" will
#          result is a command that is equivalent to "OFF A1; OFF A2; OFF A3"
#
# Dim:<dimValue> <houseCode> <unitCode> [ <unitCode> ...]
#    'DIM' specified House/Unit codes (with specified dim amount).
#
# Bright:<brightValue> <houseCode> <unitCode> [ <unitCode> ...]
#    'BRIGHT' specified House/Unit codes (with specified bright amount).
#
# PresetDim1 <houseCode> <unitCode> [ <unitCode> ...]       (CM11A only)
#    Set specified House/Unit codes to their 'PRESET_DIM1' value.
#    (preset-dim capable modules only)
#
# PresetDim2 <houseCode> <unitCode> [ <unitCode> ...]       (CM11A only)
#    Set specified House/Unit codes to their 'PRESET_DIM1' value
#    (preset-dim capable modules only)
#
# AllLightsOn       (CM11A only)
#    Turn 'ON' all light modules.
#
# AllLightsOff       (CM11A only)
#    Turn 'OFF' all light modules.
#
# AllUnitsOff       (CM11A only)
#    Turn 'OFF' all lights and appliance modules.
#

# -----------------------------------------------------------------------------------------
# ==== Example macros handled by X10Server

# - Reset the CM11A date/time at 2:30am    (CM11A only)
# - ('-t' means to use the specified TimeServer for obtaining the current time.)
# - (On non-TINI platforms, the current system date/time is used.)
#[02:30] setclock -t;

# -----------------------------------------------------------------------------------------
# ==== Example macros handled by the CM11A (or the X10Server, if the CM17A is used)

# --- Christmas lights on/off
#<17:15> on A15;  # --- Christmas lights on
#<00:00> off A15; # --- Christmas lights off

# --- away lights
#<16:50> on  A3; # --- LR
#<00:45> off A3;
#<19:30> on  A4; # --- DR
#<23:30> off A4;

# --- multi command macro
# - If a "on D1" event is received, a series of addition commands are invoked
# - A3/A4 are turn 'on', A5/A6/A7 are turned 'off' when "on d1" is received
#<on D1> on a 3 4; off a 5 6 7;

# --- porch lights on/off
# - between 8pm and 5am, if the X10 IR sensor signals, turn on the porch light and inside 
# - light
#<on  C2, 20:00, 5:00> on a 5 3;
#<off C2, 20:00, 5:00> off a 5;   # --- turns off after a set delay from the last 'on c2'
#<6:00> off a 5;

# --- back yard lights
# - on Monday through Friday, turn the back yard lights on at 8pm
#<20:00,-+++++-> on A7;
# - on Saturday & Sunday, turn the back yard lights on at 9pm
#<29:00,+-----+> on A7;
# - turn the back yard lights off at 5am
#<05:00> off A7;

# -----------------------------------------------------------------------------------------
# ==== commands to execute when this file is loaded

# --- startup alerts
# - The 'clicking' sound of the relay responding to A1 may give audible confirmation at 
# - startup.
on A1; pause; off A1;

#
# ==== end
