This is an old revision of the document!
Schedules
In the IOM, all schedules are derived from a common Schedule base class. This base contains all the shared components of schedules.
Schedule Base Class
All schedules will inherit properties from the Schedule base class.
Like other high-level objects in Indigo, there are rules for modifying schedules. For Scripters and Plugin Developers:
- To create, duplicate, delete, and send commands to a schedule, use the command namespace as described below
- To modify an object's definition, get a copy of the schedule, make the necessary changes, then call
mySchedule.replaceOnServer(newPropsDict)
For Plugin Developers:
- To update a plugin's props on a schedule, call
mySchedule.replacePluginPropsOnServer(newPropsDict)rather than try to update them on the local schedule
Unlike Devices, you can't call create() in the the schedule base class command namespace (indigo.schedule.*). Rather, each subclass has its own create() method that takes the appropriate arguments for that schedule type.
Class Properties
Under construction
| Property | Type | Writable | Description |
|---|---|---|---|
absoluteDate | datetime.datetime / None | Yes | The absolute date of the next schedule execution with 00:00:00 as the base time |
absoluteDateTime | datetime.datetime / None | Yes | The absolute date and time of the next schedule execution |
absoluteTime | datetime.datetime / None | Yes | The absolute time of the next schedule execution with 2000-01-01 as the base date |
autoDelete | boolean | Yes | true if Indigo should automatically delete this schedule after the next execution, otherwise false |
configured | boolean | Yes | true if the schedule has been fully configured, otherwise false |
dateType | indigo.kDateType / None | Describes the “type” of date/time options for the schedule [Absolute / EveryDay / DaysOfWeek / DaysOfMonth] | |
description | string | Yes | description of the schedule |
enabled | boolean | Yes | true if the schedule is enabled, otherwise false (Indigo will not execute the schedule if false) |
folderId | integer | No | unique ID of the folder this schedule is in |
globalProps | dictionary | No | |
id | integer | No | a unique id of the schedule, assigned on creation by IndigoServer |
name | string | Yes | the unique name of the schedule - no two schedules can have the same name |
nextExecution | datetime.datetime / None | No | The date and time of the schedule's next execution |
pluginProps | dictionary | No | |
randomizeBy | integer | Yes | the number of minutes (plus or minus) Indigo should use to randomize the execution of the schedule. |
remoteDisplay | boolean | Yes | true if remote clients should display the schedule, otherwise false (does not affect the Indigo client UI |
sharedProps | dictionary | No | |
sunDelta | integer | Yes | The number of seconds before (negative) or after (positive) sunrise or sunset when the schedule should be executed (zero if no offset) |
suppressLogging | boolean | Yes | true if Indigo should skip logging the schedule's execution in the event log, otherwise false |
timeType | indigo.kTimeType | Yes | Absolute / Sunrise / Sunset / Countdown depending on the date and time options selected |
upload | boolean | Yes | true if IndigoServer should attempt to upload this schedule to the interface |
Commands (indigo.schedule.*)
Delete
Delete the specified schedule.
| Command Syntax Examples |
|---|
indigo.schedule.delete(123) |
| Parameters | |||
|---|---|---|---|
| Parameter | Required | Type | Description |
| direct parameter | Yes | integer | id or instance of the schedule to delete |
Duplicate
Duplicate the specified schedule regardless of the type. This method returns a copy of the new schedule.
| Command Syntax Examples |
|---|
indigo.schedule.duplicate(123, duplicateName="my duplicate name") |
| Parameters | |||
|---|---|---|---|
| Parameter | Required | Type | Description |
| direct parameter | Yes | integer | id or instance of the schedule to duplicate |
duplicateName | No | string | name for the newly duplicated schedule |
Enable
Enables or disables the specified schedule.
| Command Syntax Examples |
|---|
indigo.schedule.enable(123, value=True, delay=0, duration=0) |
| Parameters | |||
|---|---|---|---|
| Parameter | Required | Type | Description |
| direct parameter | Yes | integer | id or instance of the schedule to enable/disable |
value | Yes | bool | set to True to enable the schedule, False to disable the control |
delay | No | int | the number of seconds to wait before executing the command |
duration | No | int | the number of seconds to wait before reverting the executed command |
Execute
Execute the specified schedule.
| Command Syntax Examples |
|---|
indigo.schedule.execute(123, ignoreConditions=False, schedule_data=None) |
| Parameters | |||
|---|---|---|---|
| Parameter | Required | Type | Description |
| direct parameter | Yes | integer | id or instance of the schedule to execute |
ignoreConditions | No | bool | True will execute the schedule regardless of the conditions set within the schedule, False will honor them |
schedule_data | No | object | an indigo.Dict to be passed to the schedule before it is executed |
A note on schedule_data - Indigo will automatically add a source key to your dictionary to represent where the action execution came from:
- “server” if it's something generated from the server itself (schedule execution, built-in trigger, etc)
- “python” if it's something that comes through IPH that doesn't already have a source attached (scripts, plugins)
- “api-http” if it came from the HTTP API and there wasn't already an included “source”
- “api-websocket” if it came from the websocket API and there wasn't already an included “source”
However, if you include a source key in your schedule_data, we will not overwrite it, we'll just pass through whatever your value is.
For example, if you
my_dict = indigo.Dict() my_dict["foo"] = "bar" indigo.schedule.execute(324976872, schedule_data=my_dict)
The schedule you executed will receive something like this:
{"event-indigo-id": 324976872, "event-type": "Schedule", "foo": "bar", "source": "python", "timestamp": "1970-01-01T09:09:40"}
Get Dependencies
Get the dependencies of the specified schedule. Returns an indigo.Dict object that contains the schedule's dependencies. Will return an empty indigo.Dict object if the schedule has no dependencies.
| Command Syntax Examples |
|---|
indigo.schedule.getDependencies(123) |
| Parameters | |||
|---|---|---|---|
| Parameter | Required | Type | Description |
| direct parameter | Yes | integer | id or instance of the schedule |
Move to Folder
Move the specified schedule to the designated folder.
| Command Syntax Examples |
|---|
indigo.schedule.moveToFolder(123, value=) |
| Parameters | ||||
|---|---|---|---|---|
| Parameter | Required | Type | Description | |
| direct parameter | Yes | integer | id or instance of the schedule | |
| value | Yes | int | string | id or instance of the schedule |
Remove Delayed Actions
Remove any outstanding delayed actions from the specified schedule.
| Command Syntax Examples |
|---|
indigo.schedule.removeDelayedActions(123) |
| Parameters | |||
|---|---|---|---|
| Parameter | Required | Type | Description |
| direct parameter | Yes | integer | id or instance of the schedule |