Skip to content

Codebase Mapping

nberardi edited this page Jul 18, 2026 · 6 revisions

Codebase Mapping (scrypted-aprilaire)

How this repository implements the protocol.

Architecture

Scrypted DeviceProvider (AprilairePlugin)
 ├── AprilaireThermostat / Humidifier / Dehumidifier / OutdoorThermometer
 └── AprilaireClient + AprilaireSocket
 └── FunctionalDomain*.ts (binary codecs)

Source map

Concern Location
TCP, CRC, enums, temp codec, frame parse src/AprilaireClient.ts
NACK object src/BasePayloadResponse.ts (NackResponse)
Control src/FunctionalDomainControl.ts
Scheduling src/FunctionalDomainScheduling.ts
Sensors src/FunctionalDomainSensors.ts
Status / COS / Sync src/FunctionalDomainStatus.ts
Setup (partial) src/FunctionalDomainSetup.ts
Alerts (parse) src/FunctionalDomainAlerts.ts
Identification src/FunctionalDomainIdentification.ts
Lockout / Messaging / Display stubs
Multi-stat ODT & hold broadcast src/AprilairePlugin.ts
Protocol unit tests tests/ (npm test)

Implementation status vs guide

Area Status
Frame, CRC, actions Done
Temperature encode/decode Done
Control 2.1, 2.3, 2.4, 2.7 Done (product)
Control 2.5–2.6 Fresh air / air clean Parse only
Control 2.2 Increment Missing
Scheduling hold / heat blast / away codecs Done; hold UX partial
Schedule settings / day Missing
Sensors 5.2 + 5.4 written ODT Done
Sensors 5.1 / 5.3 Partial / missing
Status COS write + Sync + status/IAQ/error Done (product depth varies)
NACK parse Done; auto-retry queue missing
Setup scale + partial installer Partial
Date/time Missing
Alerts Parse; weak product surface
Identification Done (name attr 0x05)
Lockout / messaging / display Missing

Ports

Guide / series Port
Default Wi‑Fi port 8000
Some 6000-series (field) 7000

Clone this wiki locally