Repository navigation
Domain Control
| COS | Yes |
| Access | R/W |
| Data length | 4 bytes |
| Byte | Field | Values |
|---|---|---|
| 0 | Mode | 0 Null, 1 Off, 2 Heat, 3 Cool, 4 Emergency Heat, 5 Auto |
| 1 | Fan | 0 Null/Reserved, 1 On, 2 Auto, 3 Circulate |
| 2 | Heat setpoint | Packed temp byte or Null — see Temperature Encoding |
| 3 | Cool setpoint | Packed temp byte or Null |
COS causes: user change at thermostat; schedule/hold; protocol write; deadband-driven opposing SP change; incremental setpoint.
Notes:
- Setpoints can be written even if current mode would not use them (stored for later use). Exception: on Cool Only or Heat Only installations (installer Control Setup), writes to the unused setpoint are NACKed.
- Off-mode interplay: if the current system mode is Off and the mode byte is sent as Null, the setpoint bytes are ignored. Likewise, if mode Off is written, setpoints in the same packet are ignored.
- Auto deadband resolution (differs from Schedule Day / Hold, which NACK):
- Both setpoints written with a violation → write accepted; active SP used, non-active SP auto-corrected to satisfy deadband, COS sent for the correction.
- One setpoint written with a violation → opposing SP (even if active) auto-corrected, COS sent.
- Writing setpoints while the schedule runs creates a Temporary Event Hold; if a hold is active, it just modifies the active hold's setpoint.
| COS | No (side effects via other COS) |
| Access | W only |
| Data length | 4 bytes |
| Byte | Field | Values |
|---|---|---|
| 0 | Heat | 0 Decrement, 1 Increment, 2 Null |
| 1 | Cool | 0 / 1 / 2 same |
| 2 | Humidifier | 0 / 1 / 2 |
| 3 | Dehumidifier | 0 / 1 / 2 |
Behaves like a thermostat button press (except lockouts). System mode Off + heat/cool increment → NACK. Humidity deadband: changing one side may auto-adjust the other; changing both into violation → NACK. On Cool Only / Heat Only installations, increments to the unused setpoint are NACKed.
| COS | Yes |
| Access | R/W |
| Data length | 1 byte |
| Models | Except 8810 |
| Byte | Field |
|---|---|
| 0 |
0 = Off; 1–39 reserved; 40–90 = %RH; 91–255 reserved |
NACK if dehumidification not installed or value out of range.
| COS | Yes |
| Access | R/W |
| Data length | 1 byte |
| Models | Except 8810 |
| Byte | Field |
|---|---|
| 0 |
0 = Off; 1–7 Auto mode setpoint; 8–9 reserved; 10–50 %RH manual; 51–255 reserved |
Range depends on humidification mode (auto vs manual). ODT uninstall can force auto→manual and change setpoint (COS).
| COS | Yes |
| Access | R/W |
| Data length | 2 bytes |
| Models | Except 8810 |
| Byte | Field | Values |
|---|---|---|
| 0 | Mode (persistent) | 0 Off, 1 Automatic |
| 1 | Event (temporary) | 0 Off/Inactive, 1 reserved, 2 = 3 hour, 3 = 24 hour |
When an event ends, last persistent mode resumes. NACK if not installed / OOR.
| COS | Yes |
| Access | R/W |
| Data length | 2 bytes |
| Byte | Field | Values |
|---|---|---|
| 0 | Mode | 0 Off, 1 Constant Clean, 2 Automatic |
| 1 | Event | 0 Off, 1–2 reserved, 3 = Event Clean 3h, 4 = Allergies 24h |
8810 note: permanent modes may not display; fan mode changes can force air-cleaning COS (On/Off/Auto mapping).
| COS | Yes |
| Access | R |
| Data length | 5 bytes |
| Byte | Field | Values |
|---|---|---|
| 0 | Thermostat modes | 1 Heat; 2 Cool; 3 Heat+Cool; 4 Heat+EmHeat+Cool; 5 Heat+Cool+Auto; 6 Heat+EmHeat+Cool+Auto |
| 1 | Air cleaning | 0 No, 1 Yes |
| 2 | Fresh air vent | 0 No, 1 Yes (except 8810) |
| 3 | Dehumidification | 0 No, 1 Yes (except 8810) |
| 4 | Humidification | 0 None, 1 Auto, 2 Manual (except 8810) |
Use this (not full installer settings) to build UI mode lists and hide unsupported IAQ.
Protocol reference for scrypted-aprilaire · Validate codecs with npm test