-
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
Thermostat API
SharedSchedule Attributes
UPDATED
SharedSchedule attributes allow you to set shared schedules for thermostats. Attribute names are not case-sensitive, while attribute values are case-sensitive.
Predefined system-managed attributes for SharedSchedule objects, used for essential functions like temperature control, system status, and scheduling. They follow a fixed structure and cannot be renamed or redefined by users.
Reserved Attributes
User Defined Attributes
Custom attributes that users can create, set, and retrieve for SharedSchedule objects. Any attribute name that is not reserved is treated as user-defined. These attributes are created by assigning a value via a SET request and can be accessed using GET requests. There is no restriction on the number of user-defined attributes, allowing flexibility for custom data storage and retrieval.
User-defined attributes can also be used as selection criteria. For example, if a user wants to manage a specific group of thermostats via the API, they could define an attribute named “managed” and SET its value to “yes” for the thermostats in that group. Then, by including “managed:yes;” in their selection criteria, they can filter and control only those thermostats within the designated group.
Important Considerations:
Getting Schedules: To avoid conflicts between the Pelican web-app and your external application, getting SharedSchedules is not currently supported. It is recommended to first delete the SharedSchedule by name, then create it with the correct scheduleRepeat, and then push your set times with successive API calls. This pattern is shown in the examples below.
Selection Attributes: The selection attributes for the SharedSchedule API are the name, dayOfWeek, and setTime attributes.
scheduleRepeat: The scheduleRepeat attribute is a global schedule attribute. As such, it will be applied to the entire schedule regardless of the selection criteria other than the schedule name.
Available SharedSchedule Attributes
Name | Values | Settable | Description |
---|---|---|---|
name | String | Yes | The configured name of the thermostat. |
scheduleRepeat | String | Yes | The schedule repeat. For “Daily” only the “Sunday” dayOfWeek will be used. For “Weekday” the “Sunday” schedule will be used on weekends and the “Monday” schedule will be used for weekdays. For “Weekly” all days of the week are used. |
dayOfWeek | Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Vacation | Yes | The day of the week for this schedule set time. |
setTime | Integer | Yes | The indexed set time for this schedule entry between 1 and 12 |
startTime | String | Yes | The time of day (hh:mm format) for this schedule entry |
system | Auto, Heat, Cool, Off | Yes | The system mode. |
heatSetting | Integer | Yes | The heat setting. |
coolSetting | Integer | Yes | The cool setting. |
fan | Auto, On | Yes | The fan setting. |
keypad | On, Off | Yes | The keypad setting. |
delete | None | Yes | Delete the specified schedule entry. |
deleteAll | None | Yes | Delete the schedule for the entire day. |
scheduleDelete | None | Yes | The entire schedule will be deleted. |
Code Examples
SET
Delete the SharedSchedule named "Hallways"
curl -Ls "https://demo.officeclimatecontrol.net/api.cgi?username=pelicandemosite@gmail.com&password=pelican&request=set&object=SharedSchedule&selection=name:Hallways;&value=scheduleDelete;"
#!/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(
'pelicandemosite@gmail.com', # username
'pelican', # password
'demo.officeclimatecontrol.net' # website
);
# Define the selection and values as hashes
my $selection = { 'name' => 'Hallways' };
my $values = {
'scheduleDelete' => '',
};
# Call setAttributes to update the SharedSchedule
my $result = $cc->setAttributes('SharedSchedule', $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://demo.officeclimatecontrol.net/api.cgi?username=pelicandemosite@gmail.com&password=pelican&request=set&object=SharedSchedule&selection=name:Hallways;&value=scheduleDelete;"
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://demo.officeclimatecontrol.net/api.cgi?username=pelicandemosite@gmail.com&password=pelican&request=set&object=SharedSchedule&selection=name:Hallways;&value=scheduleDelete;';
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
Updated 1 schedules.
SET
Create a new SharedSchedule named "Hallways" that repeats daily
curl -Ls "https://demo.officeclimatecontrol.net/api.cgi?username=pelicandemosite@gmail.com&password=pelican&request=set&object=SharedSchedule&selection=name:Hallways;&value=scheduleRepeat: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(
'pelicandemosite@gmail.com', # username
'pelican', # password
'demo.officeclimatecontrol.net' # website
);
# Define the selection and values as hashes
my $selection = { 'name' => 'Hallways' };
my $values = {
'scheduleRepeat' => 'Daily',
};
# Call setAttributes to update the SharedSchedule
my $result = $cc->setAttributes('SharedSchedule', $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://demo.officeclimatecontrol.net/api.cgi?username=pelicandemosite@gmail.com&password=pelican&request=set&object=SharedSchedule&selection=name:Hallways;&value=scheduleRepeat: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://demo.officeclimatecontrol.net/api.cgi?username=pelicandemosite@gmail.com&password=pelican&request=set&object=SharedSchedule&selection=name:Hallways;&value=scheduleRepeat: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
1
Updated 1 schedules.
SET
Set the first set time on Sunday. Since the scheduleRepeat is set to "Daily" the only day we need to set is Sunday on the schedule. See the scheduleRepeat attribute description above. Most schedules will have more than one setTime (up to 12) so increase the value for successive API calls
curl -Ls "https://demo.officeclimatecontrol.net/api.cgi?username=pelicandemosite@gmail.com&password=pelican&request=set&object=SharedSchedule&selection=name:Hallways;dayOfWeek:Sunday;setTime:1&value=startTime:06:00;system:Auto;heatSetting:65;coolSetting:85;fan:Auto;keypad:On"
#!/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(
'pelicandemosite@gmail.com', # username
'pelican', # password
'demo.officeclimatecontrol.net' # website
);
# Define the selection and values as hashes
my $selection = {
'name' => 'Hallways',
'dayOfWeek' => 'Sunday',
'setTime' => '1',
};
my $values = {
'startTime' => '06:00',
'system' => 'Auto',
'heatSetting' => '65',
'coolSetting' => '85',
'fan' => 'Auto',
'keypad' => 'On',
'scheduleRepeat' => 'Daily',
};
# Call setAttributes to update the SharedSchedule
my $result = $cc->setAttributes('SharedSchedule', $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://demo.officeclimatecontrol.net/api.cgi?username=pelicandemosite@gmail.com&password=pelican&request=set&object=SharedSchedule&selection=name:Hallways;dayOfWeek:Sunday;setTime:1&value=startTime:06:00;system:Auto;heatSetting:65;coolSetting:85;fan:Auto;keypad:On"
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://demo.officeclimatecontrol.net/api.cgi?username=pelicandemosite@gmail.com&password=pelican&request=set&object=SharedSchedule&selection=name:Hallways;dayOfWeek:Sunday;setTime:1&value=startTime:06:00;system:Auto;heatSetting:65;coolSetting:85;fan:Auto;keypad:On';
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
Updated 1 schedules.
SET
Set the SharedSchedule named "Hallways" on the thermostat named "Lobby"
curl -Ls "https://demo.officeclimatecontrol.net/api.cgi?username=pelicandemosite@gmail.com&password=pelican&request=set&object=Thermostat&selection=name:Lobby;&value=scheduleName:Hallways;"
#!/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(
'pelicandemosite@gmail.com', # username
'pelican', # password
'demo.officeclimatecontrol.net' # website
);
# Define the selection and values as hashes
my $selection = { 'name' => 'Lobby' };
my $values = {
'scheduleName' => 'Hallways'
};
# Call setAttributes to update the Thermostat
my $result = $cc->setAttributes('Thermostat', $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://demo.officeclimatecontrol.net/api.cgi?username=pelicandemosite@gmail.com&password=pelican&request=set&object=Thermostat&selection=name:Lobby;&value=scheduleName:Hallways"
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://demo.officeclimatecontrol.net/api.cgi?username=pelicandemosite@gmail.com&password=pelican&request=set&object=Thermostat&selection=name:Lobby;&value=scheduleName:Hallways';
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
Updated 1 thermostats.
...