Skip to content

Schedules

A controller holds up to 20 schedules, each switching one equipment slot on between a start and end time on selected days. Times are minutes since midnight in the controller’s local time zone. Days are seven booleans starting with Monday.

GET…/scheduleInfo

{
"status": "SUCCESS",
"data": {
"scheduleInfo": {
"schedules": [
{
"schedule_num": 3,
"schedule_id": 3,
"schedule_name": "Morning filter",
"schedule_state": true,
"aux_slot": 1,
"slot_num": 1,
"aux_type_code": 31,
"start_time": 480,
"end_time": 960,
"week_days": [true, true, true, true, true, false, false],
"pump_speed": 60,
"turn_over": 2,
"pump_type": "VSD"
}
]
}
}
}
Field Meaning
schedule_num Schedule slot on the controller, 1 to 20. schedule_id is the same value
schedule_state Enabled
aux_slot Equipment slot the schedule drives. slot_num is the same value
aux_type_code Type of that equipment
start_time, end_time Minutes since midnight
week_days Monday to Sunday
pump_speed Percent, main-pump schedules only
turn_over Number of pool turnovers the schedule aims for, main-pump schedules only

The order of the list is not guaranteed; sort by schedule_num. This read requires the API’s controller link to be up and returns 503 otherwise, even when a cached copy exists.

POST…/changeScheduleStatus

{ "schedule_id": 3, "schedule_state": false }

POST…/createSchedule

{
"aux_slot": 1,
"start_time": 480,
"end_time": 960,
"day_of_week": [true, true, true, true, true, false, false],
"schedule_name": "Morning filter",
"pump_speed": 60,
"pool_volume": 0
}
Field Meaning
aux_slot Equipment slot to drive
day_of_week Exactly seven booleans, Monday first
pump_speed Percent; only meaningful for the main pump
pool_volume Litres, used for turnover calculation on the main pump; 0 to ignore

In the current release pump_speed and pool_volume are forwarded to the controller only when aux_slot is 31; for a main pump on its normal slot they are dropped. To set the speed of a pump schedule, use the v2 schedule action.

The controller assigns the schedule number and does not return it. Read scheduleInfo afterwards and find the entry by schedule_name.

POST…/updateSchedule

Same body as create plus schedule_num. Send the complete schedule; every field is replaced.

{
"schedule_num": 3,
"aux_slot": 1,
"start_time": 420,
"end_time": 960,
"day_of_week": [true, true, true, true, true, true, true],
"schedule_name": "Morning filter",
"pump_speed": 60,
"pool_volume": 0
}

POST…/deleteSchedule

{ "schedule_num": 3 }

Every write waits up to 3 seconds, returns 200 with data.message holding the controller’s acknowledgement, and clears the cached schedule list. Failures are 500 with messages such as failed to create schedule: timeout waiting for response, 429 with messages such as failed to create schedule: device busy: … when the controller is busy, or 503 when the controller link is down.