-
Pelican Connect
-
- Tips for Evaluating Notifications in the Pelican System
- Thermostat Notification Configurations
- Thermostat Unreachable
- Understanding a “Cool Failure” Notification
- Understanding a “Heat Failure” Notification
- Understanding an “Economizer Position Failure” Notification
- Understanding the “Door or Window Has Been Left Open” Notification
- Understanding Low Battery Notifications for Pelican Devices
-
Admin
-
- Can I pay for multiple site subscriptions at once?
- Can I pay for my subscriptions using a purchase order (PO)?
- How do I change my site type (residential, business, hotel)?
- How do I pay for my site’s subscription?
- What does the Standard Subscription provide?
- What is the Subscription Renewal History?
- Why has my subscription expired?
- How do I view my LTE Gateway Subscription Receipt?
- How do I change my LTE Subscription Email Address?
- How Can I Cancel My LTE Gateway Subscription?
-
Comfort Control
-
- How do I adjust a room temperature?
- How do I turn off all thermostats for an emergency?
- How do I turn ON-OFF cooling?
- How do I turn ON-OFF heating?
- How do I turn ON-OFF the Fan? - not done
- What does Cool Running mean?
- What does Economizer Active mean?
- What does Fan Running mean?
- What does Heat Running mean?
- What does Space Satisfied mean?
- What does Waiting mean?
- Why did cooling start on its own? - not done
- Why did heating start on its own? - not done
-
- Directions on maintaining proper ventilation rates: COVID-19
- What is Outside Ventilation in a schedule?
- Does Pelican adjust an outside damper based on fan speed?
- How do I adjust the CO2 level to generate additional ventilation?
- How do I commission a PEARL for proper ventilation?
- How do I turn off ventilation for all thermostats on a poor outdoor air day?
- What are CO2 Levels?
- What do different CO2 levels indicate ?
- Does Pelican detect CO2 levels as a life safety system?
- How do I adjust my CO2 ventilation configuration?
- What is the Outside Ventilation setting?
-
-
Schedules
- Can I schedule a thermostat to a set points beyond its allowable heat or cool range? - not done
- Can I schedule when Fan Circulation Minutes is active?
- What is unoccupied setback in a thermostat schedule?
- How to set set fan to auto during unoccupied setback periods?
- How do I set an a single thermostat's schedule?
- What is Outside Ventilation in a schedule?
- What are the schedule Repeat options?
- What is optimum start?
- Why did cooling start on its own? - not done
- Why did heating start on its own? - not done
-
- How do I create an event schedule for a single thermostat?
- How do I delete an event scheduled for a single thermostat?
- How do I create an event schedule for multiple thermostats?
- How do I edit a multiple thermostat event scheduled?
- How do I delete a multiple thermostat event scheduled?
- How do I edit an event scheduled for a single thermostat?
-
- How do I create shared schedules? - not done
- How do I edit a shared schedule?
- How do I create unoccupied set point override periods?
- How do I rename a shared schedule?
- How do I copy an existing shared schedule?
- How do I delete an existing shared schedule?
- How do I create an event schedule for multiple thermostats?
- How do I edit a multiple thermostat event scheduled?
- How do I delete a multiple thermostat event scheduled?
-
Thermostat
-
- Can a Pelican thermostat control a floating actuator?
- Can a Pelican thermostat control a two-position actuator?
- Can a Pelican thermostat control a multiple fan speeds?
- Can I "lock-out" compressors based on an outdoor temperature?
- Can I disable or lock a thermostat’s Fan Button?
- Can I disable the thermostat’s internal temperature sensor?
- How do I hide a thermostat on the app?
- How does Pelican assist with freeze prevention?
- How do I control a dual fuel Heat Pump?
- How many Cool Stages do I select for a thermostat?
- How many Fan Stages do I select for a thermostat?
- How many Heat Stages do I select for a thermostat?
- What do I set Heat Needs Fan to?
- What is CO2 Ventilation?
- What is Compressor Lockout?
- What is Cool Range?
- What is Fan Circulation Minutes?
- What is Heat Range?
- What is the difference between Auxiliary and Emergency Heat?
- What should I set a thermostat’s Reversing Valve to?
- What should I set a thermostat’s System Type to?
- What should I set Anticipation Degrees to?
- What should I set Cycles Per Hour to?
- When should I use the thermostat Calibration Degrees?
- What should I set a thermostat’s Zone Controller configuration to?
- What should I set Fan Purge Cycle to?
- What should I set Damper Type to?
- What should I set Reheat Type to?
- What should I set Notification Settings to?
- How to hide a section within an article.
- How can I Delete a Thermostat from a site?
- How do I delete a Wired Temperature Sensor or PEARL Economizer Controller?
- How can I Replace a Thermostat?
- Show all articles ( 18 ) Collapse Articles
-
-
Networking
-
- How do I install a Pelican cellular gateway?
- How do I replace a Pelican Cellular gateway with a Pelican Ethernet gateway?
- Can I set a Pelican gateway for a static IP address?
- Do I need a Public IP address for a Pelican gateway?
- Does a Pelican gateway use a DHCP or static IP address?
- Does a Pelican gateway use Inbound firewall ports?
- How do I change a Pelican gateway from static back to DHCP?
- How do I install a Pelican Ethernet gateway?
-
PEARL
-
Zone Coordinator
-
- Why won’t my zone controller connect?
- What do the lights on the zone controller indicate? - not done
- What does the light on a zone controller's antenna indicate? - not done
- Why is a zone controller unreachable? - not done
- What do the zone controller lights indicate? - not done
- What do the zone controller's antenna lights indicate? - not done
- Zone Controller Dehumidify Sequences
-
- What do the lights on the zone controller indicate? - not done
- TS Thermostat Symbols
- What do the zone controller's antenna lights indicate? - not done
- What do the zone controller lights indicate? - not done
- What does the light on a zone controller's antenna indicate? - not done
- TC Thermostat Symbols
-
- How does Pelican control a parallel fan powered box during a heating cycle?
- How does Pelican control a series fan powered box during a heating cycle?
- How does Pelican control a zone box during a heating cycle?
- How does Pelican control a parallel fan powered box during a cooling cycle?
- How does Pelican control a series fan powered box during a cooling cycle?
- How does Pelican control a zone box during a cooling cycle?
- How does Pelican control a parallel fan powered box during a ventilation cycle?
- How does Pelican control a series fan powered box during a ventilation cycle?
- How does Pelican control a zone box during a ventilation cycle?
-
-
Power Control
- Articles coming soon
-
Sensors
-
OpenAPI
Categories:
OpenAPI
Power Control Module API
PowerSchedule Attributes
UPDATED
The PowerSchedule attributes enable you to add, modify, delete, and retrieve one-time or recurring run-time schedules for Pelican’s Power Control Modules (PM5 Series). This functionality allows for precise control over connected electrical equipment, optimizing energy usage and operational efficiency.
Key Features:
Advanced Scheduling: Supports both one-time and recurring schedules to accommodate various operational requirements.
Unlimited Schedules: No restriction on the number of schedules that can be added.
External Tracking: Schedules added through the API are tracked as “External” schedules.
Important Considerations:
-
Overlapping Schedules: Any overlapping schedules are automatically merged to prevent conflicts.
-
Day Boundaries: Schedules cannot cross day boundaries. For schedules that need to extend beyond midnight, multiple schedules should be created.
-
Editable Attribute: The
editable
attribute determines whether a schedule can be modified through the Pelican App:-
Yes
: The schedule can be edited or deleted by users via the Schedule Dashboard. -
No
(default): The schedule is viewable but cannot be modified or deleted through the App.
-
PowerSchedule - Object Attributes
Attribute names are not case-sensitive; attribute values are case-sensitive.
Name | Values | Settable | Description |
---|---|---|---|
name | String | No | The configured name of the power module output. |
serialNo | String | No | The power control module serial number. |
scheduleId | String | Yes | The unique ID of this schedule (See Note 1). |
title | String | Yes | descriptive label for the schedule. |
startDate | String | Yes | The first date the schedule will run in ISO 8601 format. |
endDate | String | Yes | The last date the schedule will run in ISO 8601 format. |
startTime | String | Yes | The time of day ISO 8601 extended local time format. |
endTime | String | Yes | The time of day ISO 8601 extended local time format. |
repeat | String | Yes | The frequency the schedule will run (See Note 2). |
editable | Yes, No | Yes | Whether users can edit the schedule through the Schedule Dashboard. |
origin | Internal, External, All | No | How the schedule was created (See Note 3) |
delete | Yes | Yes | Delete the specified schedule entry. |
- scheduleID is a unique identifier for each schedule.
- The scheduleID can either be system-generated or user-provided.
- If not specified when adding a new schedule, the system will automatically generate a unique scheduleID and return it in the response.
- To modify an existing schedule, include the scheduleID in the request, and the provided attributes will be updated.
- To delete a schedule, specify its scheduleID in the selection and set delete=Yes.
Note 2: Repeat
The repeat attribute determines how frequently a schedule runs.
Valid values:
- None – Runs only once on the specified startDate.
- Daily (Default) – Runs every day from startDate to endDate. If endDate is not specified, it continues indefinitely.
- Weekly (Mo,Tu,We,Th,Fr,Sa,Su) – Runs on specific days of the week.
- Days must be comma-separated and enclosed in parentheses.
- Example: repeat=Weekly(Mo,We,Fr) (schedule runs every Monday, Wednesday, and Friday).
- At least the first two letters of each day must be included.
- Monthly – Runs once per month on the same day as startDate.
- Yearly – Runs once per year on the same day as startDate.
Note 3: Origin
- When used in a GET request as a selection attribute, it filters returned schedules.
- Default value: External (returns only API-created schedules).
- Retrievable in a value list to determine how a schedule was created.
- Only “External” schedules can be created via the API. However, both Internal and External schedules can be modified or deleted through the API.
Code Examples
GET
Get all events for a single Power Module. Including the name of the relay output or a scheduleId will filter the list of results returned to you
curl -L "https://your-site-name.officeclimatecontrol.net/api.cgi?username=USERNAME&password=PASSWORD&request=get&object=PowerSchedule&selection=serialNo:{powerModuleSerialNo};origin:all;&value=name;serialNo;scheduleId;title;startDate;endDate;startTime;endTime;repeat;editable;origin;"
#!/usr/bin/perl -w
use strict;
use ClimateControl;
# You can request a copy of the ClimateControl Perl
# Module from Pelican Tech Support.
# Send an email to support@pelicanwireless.com
# Create a new ClimateControl object
my $cc = ClimateControl->new(
'USERNAME', # username
'PASSWORD', # password
'your-site-name.officeclimatecontrol.net' # website
);
# Define the selection and attributes to retrieve
my $selection = { 'serialNo' => '{powerModuleSerialNo}', 'origin' => 'all' };
my $attrlist = [
'name',
'serialNo',
'scheduleId',
'title',
'startDate',
'endDate',
'startTime',
'endTime',
'repeat',
'editable',
'origin'
];
# Call getAttributes to retrieve the Thermostat data
my $result = $cc->getAttributes('PowerSchedule', $selection, $attrlist);
# Check and display the result
if ($result->{'success'}) {
print "Success: $result->{'message'}\n";
} else {
print "Error: $result->{'message'}\n";
}
import requests
url = "https://your-site-name.officeclimatecontrol.net/api.cgi?username=USERNAME&password=PASSWORD&request=get&object=PowerSchedule&selection=serialNo:{powerModuleSerialNo};origin:all;&value=name;serialNo;scheduleId;title;startDate;endDate;startTime;endTime;repeat;editable;origin;"
response = requests.get(url, verify=False)
if response.status_code == 200:
print("Success:", response.text)
else:
print("Error:", response.status_code)
const https = require('https');
const url = 'https://your-site-name.officeclimatecontrol.net/api.cgi?username=USERNAME&password=PASSWORD&request=get&object=PowerSchedule&selection=serialNo:{powerModuleSerialNo};origin:all;&value=name;serialNo;scheduleId;title;startDate;endDate;startTime;endTime;repeat;editable;origin;';
https.get(url, { rejectUnauthorized: false }, (resp) => {
let data = '';
// Collect data chunks
resp.on('data', (chunk) => {
data += chunk;
});
// Handle the complete response
resp.on('end', () => {
if (resp.statusCode === 200) {
console.log('Success:', data);
} else {
console.log('Error: HTTP', resp.statusCode);
}
});
}).on('error', (err) => {
console.error('Error:', err.message);
});
Response
Boiler1
6A3-D9LN
SCHEDULE-6
2025-07-28
07:00
07:05
Daily
Yes
Internal
Boiler1
6A3-D9LN
SCHEDULE-11
2025-09-15
06:00
06:05
Daily
Yes
Internal
1
Retrieved attributes for 2 schedules.
SET
Create a daily recurring event that begins at 07:00 and ends at 17:00 that will run for 7 days.
curl -L "https://your-site-name.officeclimatecontrol.net/api.cgi?username=USERNAME&password=PASSWORD&request=set&object=PowerSchedule&selection=serialNo:{powerModuleSerialNo};name:{relayName}&value=startDate:2025-09-13;endDate:2025-09-18;startTime:07:00;endTime:17:00;title:{yourTitle};scheduleID:{yourScheduleId};editable:Yes;repeat:Daily"
#!/usr/bin/perl -w
use strict;
use ClimateControl;
# You can request a copy of the ClimateControl Perl
# Module from Pelican Tech Support.
# Send an email to support@pelicanwireless.com
# Create a new ClimateControl object
my $cc = ClimateControl->new(
'USERNAME', # username
'PASSWORD', # password
'your-site-name.officeclimatecontrol.net' # website
);
# Define the selection and values as hashes
my $selection = { 'serialNo' => '{powerModuleSerialNo}', 'name' => '{relayName}' };
my $values = {
'startDate' => '2025-09-13',
'endDate' => '2025-09-18',
'startTime' => '07:00',
'endTime' => '17:00',
'title' => '{yourTitle}',
'scheduleID' => '{yourScheduleId}',
'editable' => 'Yes',
'repeat' => 'Daily'
};
# Call setAttributes to update the Thermostat
my $result = $cc->setAttributes('PowerSchedule', $selection, $values);
# Check and display the result
if ($result->{'success'}) {
print "Success: $result->{'message'}\n";
} else {
print "Error: $result->{'message'}\n";
}
import requests
url = "https://your-site-name.officeclimatecontrol.net/api.cgi?username=USERNAME&password=PASSWORD&request=set&object=PowerSchedule&selection=serialNo:{powerModuleSerialNo};name:{relayName}&value=startDate:2025-09-13;endDate:2025-09-18;startTime:07:00;endTime:17:00;title:{yourTitle};scheduleID:{yourScheduleId};editable:Yes;repeat:Daily"
response = requests.get(url, verify=False)
if response.status_code == 200:
print("Success:", response.text)
else:
print("Error:", response.status_code)
const https = require('https');
const url = 'https://your-site-name.officeclimatecontrol.net/api.cgi?username=USERNAME&password=PASSWORD&request=set&object=PowerSchedule&selection=serialNo:{powerModuleSerialNo};name:{relayName}&value=startDate:2025-09-13;endDate:2025-09-18;startTime:07:00;endTime:17:00;title:{yourTitle};scheduleID:{yourScheduleId};editable:Yes;repeat:Daily'
https.get(url, { rejectUnauthorized: false }, (resp) => {
let data = '';
// Collect data chunks
resp.on('data', (chunk) => {
data += chunk;
});
// Handle the complete response
resp.on('end', () => {
if (resp.statusCode === 200) {
console.log('Success:', data);
} else {
console.log('Error: HTTP', resp.statusCode);
}
});
}).on('error', (err) => {
console.error('Error:', err.message);
});
Response
SCHEDULE-9390-12
1
Updated 1 schedules.
SET
Delete an event. You will need to know the scheduleId in order to delete it
curl -L "https://your-site-name.officeclimatecontrol.net/api.cgi?username=USERNAME&password=PASSWORD&request=set&object=PowerSchedule&selection=scheduleId:{yourScheduleId};&value=delete:Yes;"
#!/usr/bin/perl -w
use strict;
use ClimateControl;
# You can request a copy of the ClimateControl Perl
# Module from Pelican Tech Support.
# Send an email to support@pelicanwireless.com
# Create a new ClimateControl object
my $cc = ClimateControl->new(
'USERNAME', # username
'PASSWORD', # password
'your-site-name.officeclimatecontrol.net' # website
);
# Define the selection and values as hashes
my $selection = { 'scheduleID' => '{yourScheduleId}' };
my $values = {
'delete' => 'Yes'
};
# Call setAttributes to update the Thermostat
my $result = $cc->setAttributes('PowerSchedule', $selection, $values);
# Check and display the result
if ($result->{'success'}) {
print "Success: $result->{'message'}\n";
} else {
print "Error: $result->{'message'}\n";
}
import requests
url = "https://your-site-name.officeclimatecontrol.net/api.cgi?username=USERNAME&password=PASSWORD&request=set&object=PowerSchedule&selection=scheduleId:{yourScheduleId};&value=delete:Yes;"
response = requests.get(url, verify=False)
if response.status_code == 200:
print("Success:", response.text)
else:
print("Error:", response.status_code)
const https = require('https');
const url = 'https://your-site-name.officeclimatecontrol.net/api.cgi?username=USERNAME&password=PASSWORD&request=set&object=PowerSchedule&selection=scheduleId:{yourScheduleId};&value=delete:Yes;'
https.get(url, { rejectUnauthorized: false }, (resp) => {
let data = '';
// Collect data chunks
resp.on('data', (chunk) => {
data += chunk;
});
// Handle the complete response
resp.on('end', () => {
if (resp.statusCode === 200) {
console.log('Success:', data);
} else {
console.log('Error: HTTP', resp.statusCode);
}
});
}).on('error', (err) => {
console.error('Error:', err.message);
});
Response
1
Schedule successfully deleted.