Skip to main content

Pelican Wireless Thermostats

Cloud REST integration for Pelican Wireless commercial thermostats and the broader Pelican site management platform. Targets the per-account subdomain (e.g. acme.officeclimatecontrol.net) and provides per-thermostat setpoint, mode, fan, and schedule control plus temperature, humidity, and equipment status readback.

Pelican is heavily deployed in restaurants, retail chains, schools, and multi-tenant office buildings — anywhere a single back-office user manages dozens to hundreds of zones across many physical sites. The same driver fits both the residential one-site case and the enterprise multi-site case (one device per site).

Prerequisites

  • A Pelican Wireless account with at least one site and at least one Pelican-branded thermostat (TS200H, TS300, TS400, etc.) installed.
  • The account email and login password for a user that has API Access enabled on the Pelican dashboard (Settings → Users → API Access).
  • The site subdomain — the part before .officeclimatecontrol.net on the customer dashboard URL. For example, if the dashboard is at https://acme.officeclimatecontrol.net, the site value is acme.

Setup steps

  1. Sign in to the Pelican customer dashboard and confirm the site subdomain in the browser URL bar.
  2. In Settings → Users, give the API user account API permissions if it does not already have them. The same email and password used in the Pelican mobile app works.
  3. In GEM admin, go to System → Devices → Add Device (Open Devices) and choose the Pelican Wireless Thermostats driver. Fill in:
    • site — the subdomain (e.g. acme)
    • username — the account email
    • password — the account password (encrypted automatically by GEM)
  4. Save and connect the device. Run the get_thermostats command to list all thermostats visible to this account. The Name field of each is the zone address you use below.
  5. For each thermostat you want to control from GEM, create a zone bound to this device:
    • zone.address = the thermostat Name as shown by get_thermostats (exact match, case-sensitive).
    • File it under the Climate subsystem — the zone editor pre-selects Climate for you, because this driver reports a climate subsystem hint that matches the built-in Climate subsystem. (hvac is not one of the stock subsystems, so the editor will not pre-select it; you would have to create that subsystem first and pick it by hand.)

This driver does not create zones for you. On connect it confirms the credentials, then the status loop polls only the zones you have already created and bound to it, reading temperature, humidity, setpoints, mode, fan, schedule, and equipment status every status_interval ms (default 30 s, configurable 5–600 s). Until a zone exists with a matching thermostat Name in zone.address, the device connects but has nowhere to publish state.

Attribute reference

Device attributes

NameTypeRequiredDescription
sitestringyesSubdomain — the part before .officeclimatecontrol.net.
usernamestringyesPelican account email.
passwordstringyesPelican account password. Stored encrypted.
status_intervalintnoPoll interval in ms. Default 30000 (range 5000–600000).

Zone attributes (populated by the status loop)

NameTypeDescription
temperaturefloatCurrent room temperature in °F.
humidityfloatRelative humidity %. Only on thermostats with the optional humidity sensor (-H suffix).
setpointfloatActive setpoint (heat in Heat mode, cool in Cool mode, midpoint in Auto).
heat_setpointfloatConfigured heat setpoint °F.
cool_setpointfloatConfigured cool setpoint °F.
modestringOne of off, heat, cool, auto.
fan_modestringOne of auto, on.
schedulestringActive Pelican schedule name, or Hold while a manual override is in effect.
runningstringEquipment state reported by the thermostat (e.g. Heat1, Cool1, Off).
statestringDerived: off when system mode is Off, else on.

Zone address format

The zone address is the thermostat Name field exactly as it appears in the Pelican dashboard (and as returned by get_thermostats). Names are case-sensitive and must match exactly — including any spaces or punctuation. Renaming a thermostat in the Pelican dashboard will break GEM zone routing until the address is updated.

Commands

CommandArgsNotes
onaddressSets system mode to Auto.
offaddressSets system mode to Off.
set_modeaddress, modemodeoff, heat, cool, auto.
set_fan_modeaddress, fan_modefan_modeauto, on.
set_setpointaddress, levelWrites the cool setpoint when the thermostat is in Cool mode, otherwise the heat setpoint (so Heat, Auto, and Off all write the heat setpoint). Use set_heat_setpoint / set_cool_setpoint to target a specific one regardless of mode.
set_heat_setpointaddress, levelDirect heat setpoint write in °F.
set_cool_setpointaddress, levelDirect cool setpoint write in °F.
hold_scheduleaddressHold current setpoint indefinitely.
resume_scheduleaddressCancel any active hold and resume the schedule.
get_thermostatsList all thermostats on the site.
get_statusaddressFetch current state of a single thermostat.

Known limitations / not yet supported

  • No event push / COV. The driver polls; it does not subscribe to Pelican event streams. Setpoint changes made from the Pelican dashboard or mobile app become visible on the next status interval.
  • No multi-stage equipment control. Pelican exposes per-stage outputs on some thermostats; the driver only reads the aggregate runStatus field.
  • No schedule editing. The driver can hold or resume the active schedule but does not yet expose schedule CRUD operations. The Pelican API supports them; they have not been wired in this driver pass.
  • No site / zone discovery beyond thermostats. Pelican accounts can include other object types (Sensor, Outdoor, Channel) — only Thermostat objects are surfaced today.
  • Fractional setpoints round server-side. The Pelican API rounds setpoints to whole °F; the driver passes the raw value through without client-side rounding.

Troubleshooting

  • pelican xml parse failed on every request — The site URL is probably wrong. Pelican returns an HTML 404 page for unknown subdomains, which fails XML parsing. Re-check the site attribute (no .officeclimatecontrol.net, no scheme, no slashes).
  • Authentication Failed in response messages — Verify the API user account has API Access permission on the Pelican dashboard. The mobile-app password and the dashboard password are the same; if you can sign in to the dashboard manually, the credentials are correct and the missing piece is the API-Access checkbox.
  • get_thermostats returns an empty list — The account has no thermostats, or the API user has been scoped to a subset that excludes them all. Check user permissions on the dashboard.
  • Setpoints written from GEM revert after a few seconds — Pelican's scheduling engine may be re-applying the active schedule. Issue hold_schedule before / after the write, or move the zone's schedule to a custom one that does not actively overwrite holds.
  • TLS errors / cert mismatch — Pelican uses a wildcard *.officeclimatecontrol.net certificate. If the controller has an outdated root store, refresh CA certificates on the host OS.
  • Devices — adding the Pelican controller, secure attributes, and Reload.
  • Zones — creating the per-thermostat zones this driver publishes state onto.
  • Subsystems — the Climate subsystem these zones live under.
  • Commands — running set_mode, set_setpoint, hold_schedule, and the read-only get_thermostats / get_status from the command tester, macros, and triggers.

References