-
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
ThermostatEvent Attributes
UPDATED
The ThermostatEvent attributes allow you to schedule one-time events that override a thermostat’s standard recurring schedule. This interface enables adding, modifying, or deleting events, as well as retrieving existing pending events. Events added through the API are tracked as “External” events. There are no restrictions on the number of events that can be added. When retrieving events with a get request, only current or pending events will be returned; historical events are not retrievable through the API.
Predefined system-managed attributes for ThermostatEvent 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 ThermostatEvent 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.
Avoid Overlapping Events
Avoid adding overlapping events, as this may produce unexpected results.
Day Boundaries
Events cannot cross day boundaries. For events that need to span multiple days, create separate events for each day.
The "editable" Attribute
ThermostatEvent - Object Attributes
Attribute names are not case-sensitive; attribute values are case-sensitive.
Name | Values | Settable | Description |
---|---|---|---|
name | String | Yes | The configured name of the thermostat. |
serialNo | String | No | The thermostat's serial number. |
eventId | String | Yes | The unique ID of this event (See Note 1 below). |
title | String | Yes | A descriptive label for the event. |
startDate | String | Yes | The date of the event 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. |
system | Auto, Heat, Cool, Off | Yes | The thermostat's system mode during the event. |
heatSetting | Integer | Yes | The thermostat's heat setpoint during the event.. |
coolSetting | Integer | Yes | The thermostat's cool setpoint during the event. |
fan | Auto, On | Yes | The thermostat's fan setting during the event. |
keypad | On, Off | Yes | Thermostat keypad during the event, active or locked. On = Unlocked, Off = Locked. |
outsideVentilation | On, Off | Yes | Whether the thermostat is allowed to use Outside Ventilation |
editable | Yes, No | Yes | Whether a users can the edit the event through the Pelican App's Schedule Dashboard. |
origin | Internal, External, All | No | How the event was created (See Note 2 below) |
delete | Yes | Yes | Delete the specified event entry. |
Note 1 (eventId)
Note 2 (origin)
- Internal: Created through the Pelican App.
- External: Created through the API.
- All: Applicable to both internal and external events.
Code Examples
GET
Get the current Temperature, Humidity, and CO2 Level for a thermostat named "Lobby"
curl -Ls "https://demo.officeclimatecontrol.net/api.cgi?username=pelicandemosite@gmail.com&password=pelican&request=get&object=Thermostat&selection=name:Lobby;&value=temperature;humidity;co2Level"
#!/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 attributes to retrieve
my $selection = { 'name' => 'Lobby' };
my $attrlist = ['temperature', 'humidity', 'co2Level'];
# Call getAttributes to retrieve the Thermostat data
my $result = $cc->getAttributes('Thermostat', $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://demo.officeclimatecontrol.net/api.cgi?username=pelicandemosite@gmail.com&password=pelican&request=get&object=Thermostat&selection=name:Lobby;&value=temperature;humidity;co2Level"
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=get&object=Thermostat&selection=name:Lobby;&value=temperature;humidity;co2Level';
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
71.5
40
1049
...
1
Retrieved attributes for 1 thermostats.
...
SET
Set the Heating and Cooling Ranges for 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=heatMin:50;heatMax:68;coolMin:72;coolMax:85"
#!/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 = {
'heatMin' => '50',
'heatMax' => '68',
'coolMin' => '72',
'coolMax' => '85'
};
# 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=heatMin:50;heatMax:68;coolMin:72;coolMax:85"
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=heatMin:50;heatMax:68;coolMin:72;coolMax:85';
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.
...