The cond / cond2 / pr2 fields are little-endian u16s, not big-endian as the original page documented. Caught by authoring controlled programs in PC Access (running in a Win XP VM) and byte-diffing the resulting .pca. The worked example's expected values are corrected: - pr2 bytes [01, 00] read as 1, not 256 - cond bytes [8d, 09] read as 0x098d (Unit 397 OFF), not 0x8d09 - cond2 bytes [9b, 09] read as 0x099b (Unit 411 OFF), not 0x9b09 Also promote the multi-record ProgType values (WHEN/AT/EVERY/AND/OR/THEN) from "RE-pending" to a documented "Compact vs multi-record form" section. Multi-record form requires firmware >=3.0.0 per clsCapOMNI_PRO_II.cs:290 (Features.Add(MultiLinePrograms, 196608u)); the user's 2.16A panel cannot produce these records, so all entries in its .pca are compact form. A 5-record example block (WHEN + 3 ANDs + THEN), captured by using PC Access's Account Info -> Version Override to spoof firmware 3.0, shows the per-record layout at the discriminator level. The AND record's structured-condition fields (OP / Arg1_* / Arg2_* / CompConst) remain on the RE backlog.
hai-omni-docs
Documentation site for omni-pca — a
reverse-engineered Python library and Home Assistant integration for HAI/Leviton
Omni Pro II home automation panels. Built with Astro + Starlight, organised
around the Diátaxis framework.
Live: https://hai-omni-pro-ii.l.warehack.ing
Local development
make install # one-time
make dev # http://localhost:4321 with hot reload
Production build (smoke test)
make ci # runs `npm run build`, output in ./dist
Deploy via Caddy
The container ships its static dist/ from an inner Caddy on :80; the host's
caddy-docker-proxy terminates TLS and routes the configured DOMAIN to it via
the external caddy network.
cp .env.example .env # adjust COMPOSE_PROJECT / DOMAIN as needed
make build
make up # then tails logs
Layout
src/
content/docs/
index.mdx
start/ # Overview + Quick start
tutorials/ # Diátaxis: learning-oriented
how-to/ # Diátaxis: task-oriented
reference/ # Diátaxis: information-oriented (protocol, file format, API)
explanation/ # Diátaxis: understanding-oriented (quirks, architecture, bugs)
journey.md # Chronological retrospective
changelog.md
styles/theme.css # Slate-blue + amber accent
assets/logo.svg
Source project
- Library + integration: https://git.supported.systems/warehack.ing/omni-pca
Description
Languages
MDX
93.4%
JavaScript
2.7%
CSS
1.5%
Dockerfile
1.3%
Makefile
0.8%
Other
0.3%