i!-Schedule
instruction manual
integration!Solutions
Software Limited Agreement
LIMITED WARRANTY
LIMITED WARRANTY. AMX Corporation warrants that the SOFTWARE will perform substantially in accordance with
the accompanying written materials for a period of ninety (90) days from the date of receipt. Any implied warranties on
the SOFTWARE and hardware are limited to ninety (90) days and one (1) year, respectively. Some states/countries do
not allow limitations on duration of an implied warranty, so the above limitation may not apply to you.
CUSTOMER REMEDIES. AMX Corporation’s entire liability and your exclusive remedy shall be, at AMX Corporation's
option, either (a) return of the price paid, or (b) repair or replacement of the SOFTWARE that does not meet AMX Corporation's Limited Warranty and which is returned to AMX Corporation. This Limited Warranty is void if failure of the
SOFTWARE or hardware has resulted from accident, abuse, or misapplication. Any replacement SOFTWARE will be
warranted for the remainder of the original warranty period or thirty (30) days, whichever is longer.
NO OTHER WARRANTIES.
not limited to implied warranties of merchantability and fitness for a particular purpose, with regard to the SOFTWARE,
the accompanying written materials, and any accompanying hardware. This limited warranty gives you specific legal
rights. You may have others which vary from state/country to state/country.
NO LIABILITY FOR CONSEQUENTIAL DAMAGES
whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business
information, or any other pecuniary loss) arising out of the use of or inability to use this AMX Corporation product, even
if AMX Corporation has been advised of the possibility of such damages. Because some states/countries do not allow
the exclusion or limitation of liability for consequential or incidental damages, the above limitation may not apply to you.
U.S. GOVERNMENT RESTRICTED RIGHTS
The SOFTWARE and documentation are provided with RESTRICTED RIGHTS. Use, duplication, or disclosure by the
Government is subject to restrictions as set forth in subparagraph (c)(1)(ii) of The Rights in Technical Data and Computer Software clause at DFARS 252.227-7013 or subparagraphs (c)(1) and (2) of the Commercial Computer Software--Restricted Rights at 48 CFR 52.227-19, as applicable. Manufacturer is AMX Corporation, 3000 Research Drive,
Richardson, TX 75082.
If you acquired this product in the United States, this Agreement is governed by the laws of the State of Texas.
Should you have any questions concerning this Agreement, or if you desire to contact AMX for any reason, please
write: AMX Corporation, 3000 Research Drive, Richardson, TX 75082 .
AMX Corporation disclaims all other warranties, either expressed or implied, including, but
. In no event shall AMX Corporation be liable for any damages
Table of Contents
Table of Contents
Introduction ...............................................................................................................1
Supported Operating Systems .......................................................................................... 1
Minimum PC Requirements .............................................................................................. 1
Installing i!-Schedule ......................................................................................................... 2
Using i!-Schedule .....................................................................................................3
Dynamic Events ................................................................................................................ 4
Schedule Persistence........................................................................................................ 7
Time Protocols .................................................................................................................. 8
Programming i!-Schedule ......................................................................................11
Channels ......................................................................................................................... 11
Levels .............................................................................................................................. 11
Send_Commands............................................................................................................ 12
Strings ............................................................................................................................. 13
Modules........................................................................................................................... 14
i!-ScheduleEngineMod Module .............................................................................................. 14
i!-ScheduleMod Module ......................................................................................................... 17
i!-Schedule
i
Table of Contents
ii
i!-Schedule
Introduction
i!-Schedule is an application that allows you to schedule NetLinx events directly from a touch panel
connected to a NetLinx control system. i!-Schedule provides a user interface to schedule up to 240
NetLinx events to run on a repeating or non-repeating basis. i!-Schedule also provides a scheduling
engine that triggers each event at the appropriate time and reschedule repeating events.
Two scheduling modules are available with i!-Schedule.
i!-ScheduleEngineMod is the scheduling engine module only. This module has no user
interface and can be used for fixed events that do not need to be edited by the user. Use
this module if you do not want a user interface for scheduling.
i!-ScheduleMod includes the functionality of the engine module and provides a user
interface where the user can edit the scheduling of events. Use this module if you want a
user interface for scheduling. You do not need to include the i!-ScheduleEngineMod if
you use this module.
Supported Operating Systems
Windows 95
Windows NT 4.0
64 MB of installed memory)
Windows 2000
(minimum requirement); 300 MHZ or faster recommended, with 96 MB of installed
memory.)
Windows ME
300 MHZ or faster recommended, with 96 MB of installed memory.)
Windows XP
300 MHZ or faster recommended, with 128 MB of installed memory.)
Introduction
®
/98® (with at least 48 MB of installed memory)
®
Workstation or Server (service pack 6 B or greater, with at least
®
Professional or Server (running on a Pentium 266 MHZ processor
®
(running on a Pentium 266 MHZ processor (minimum requirement);
®
(running on a Pentium 266 MHZ processor (minimum requirement);
i!-Schedule
Minimum PC Requirements
Windows-compatible mouse (or other pointing device)
At least 5 MB of free disk space (150 MB recommended)
SVGA monitor, with a minimum screen resolution of 800 x 600
A Network adapter
1
Introduction
Installing i!-Schedule
1. In Explorer, double-click i!-ScheduleSetup.exe from the directory window where you
downloaded the i!-PCLinkMediaPlayer install program.
2. After reading the License Agreement, select I Agree and Next to proceed.
3. The Welcome To i!-Schedule Setup dialog opens, reminding you to close all Windows
programs before going any further. Click Next to proceed.
4. In the i!-Schedule Select Components dialog, select which example programs you would like
to install.
5. In the Select i!-Schedule Install Location dialog, use the Browse button to navigate to a
directory other than the default install directory, if desired. Click Next .
6. In the i!-Schedule Shortcut Creation dialog, select Install Shortcut Icons for the installed
components on your desktop, if desired.
7. Click Next in the Start i!-Schedule Installation dialog to install the selected components.
8. The program prompts you to restart your system to complete the installation.
2
i!-Schedule
Using i!-Schedule
Little work is required to add i!-Schedule to your existing NetLinx code. i!-Schedule is
implemented as a NetLinx module so you need to add the module definition and all it’s parameters
to your code. You must also define the NetLinx events you would like to schedule.
In order to use i!-Schedule, you will need to program and define a series of events in the NetLinx
control system. The key to the scheduling engine is the virtual device,
support the events you want scheduled using this virtual device.
Using i!-Schedule
vdvSchEvents. You must
Think of the virtual device,
vdvSchEvents, as a touch panel. Normally, you would write your
NetLinx program to respond to certain push channel from a touch panel; i!-Schedule is exactly the
same. Let’s say you want the user to be able to schedule when the outdoor lights turn on and when
they turn off. Imagine you have two touch panel buttons that do these functions. You would write
code that responds to the pushes; turning the lights on and then off. (Let’s use relays for lighting
control to simplify the example):
BUTTON_EVENT[TP,1] (* Outdoor Lights On *)
{
PUSH:
{
ON[RELAY,1]
}
}
BUTTON_EVENT[TP,2] (* Outdoor Lights Off *)
{
PUSH:
{
OFF[RELAY,1]
}
}
To schedule these events using i!-Schedule, we write the same code substituting the touch panel
device for our scheduling virtual device:
BUTTON_EVENT[vdvSchEvents,1] (* Outdoor Lights On *)
{
PUSH:
{
ON[RELAY,1]
}
}
BUTTON_EVENT[vdvSchEvents,2] (* Outdoor Lights Off *)
{
PUSH:
{
OFF[RELAY,1]
}
}
When the scheduling engine detects that the user has programmed the lights on event to run at a
certain time and that schedule time has occurred, i!-Schedule will "push" the button on the virtual
device just like a user pushes a button on a touch panel. There is now only one thing left to do: tell
the user which events are which.
i!-Schedule
In order to expose an event for scheduling via i!-Schedule, you need to support the programming
for the event (as we have just seen) tell i!-Schedule what that event is. i!-Schedule allows a user to
scroll through a list of events and edit the time which it runs. In order to associate an item in the list
3
Using i!-Schedule
with a button/channel number, you must tell i!-Schedule what each channel you have programmed
can do.
To specify the name of an event, you need to send a command to the scheduling virtual device
describing the name of a given channel code. To specify the names of the commands in the above
example, you would add some code like this:
DATA_EVENT[vdvSchEvents]
{
ONLINE:
{
(* Setup events *)
(* Outdoor Lights On *)
SEND_COMMAND vdvSchEvents,"'SET NAME-1,Outdoor Lights Off '"
(* Outdoor Lights Off *)
SEND_COMMAND vdvSchEvents,"'SET NAME-2,Outdoor Lights Off'"
}
}
Once i!-Scheduling receives these commands, it will show the user the two events in the main event
list, sorted in alphabetical order, and allow the user to schedule these events. Whenever the user
schedules the "Outdoor Lights On" event to run at a certain time and that time occurs, the
scheduling engine will push button one and your code can turn the lights on.
Each event can be programmed to occur on a repeating or non-repeating basis running at a single
time per day. Additionally, each event can have a start and end time. Events do not have end dates
so they can only span a 24-hour period; however, that 24-hour period can span 2 dates by specifying
an end time less than a start time. For instance, if a user schedules an event to start at sunset and end
at sunrise, i!-Schedule will start the event at sunset of the scheduled day and stop the event at
sunrise of the following day.
In addition to specifying the name of an event, you can also program the date and time when the
event should occur. The scheduled virtual device supports a variety of commands to set and query
the values of the names, dates and times for each event. See the Send_Commands section on
page 12 for more details.
Dynamic Events
So far, i!-Schedule has handled simple fixed events where each event provides a single function and
can be scheduled only once for each day. Some scheduling applications require dynamic events
where the user can add and delete events on the fly. i!-Schedule has a provision to handle this case.
Let's look at the programming side of i!-Schedule for a moment. For every event that needs to be
scheduled, your program must contain a
event. To provide dynamic events, you must provide dynamic
Let's say you want to schedule a new event using i!-Schedule while the program is running. This
seems easy, you simply add the send command to name the new event:
SEND_COMMAND vdvSchEvents,"'SET NAME-14,My New Event'"
The name "My new Event" appears in the event list, the user schedules it to occur at 5:00 on
Saturdays and everything is fine. Now Saturday 5:00 rolls around, and the scheduling engine
pushes button 14 for this event to occur. Since you did not re-compile and download your program
after the user scheduled the event, you would have had to add code for button event 14 prior to the
user scheduling the event! So the problem is: how do you program for an unknown number of
events that has not been scheduled? Additionally, since you did not define these events up front,
BUTTON_EVENT to handle the push and/or release of that
BUTTON_EVENTS.
4
i!-Schedule