Two new pages distilled from HAI's official OmniPro II Installation Manual 3-2 + Product Specifications datasheet (Quadomated mirror). reference/hardware-specs.md Capacity ceilings (176 zones, 511 units, 8 areas, 64 thermostats, 128 buttons, 1500 programs, 99 codes, 128 messages, etc.), digital communicator + network features, electrical specs with the per-output current caps and the 24-hour battery-standby derating numbers, physical dimensions, environmental ranges, listings, languages, and part-number lookup. The numbers here are the source of every cap in clsCapOMNI_PRO_II.cs and the upper bounds for the protocol's range fields, so anyone debugging "why does my panel NAK at index N" should start here. explanation/zone-unit-numbering.md Appendix C of the install manual, transcribed and explained: how the panel maps physical hardware to its 1-176 zone and 1-511 unit address spaces. Documents the four overlapping families that share the unit number line -- X-10 (1-256, by house code), ALC bus (parallel address space within those slots), physical outputs (257-392), and panel flags (393-511) -- which is why the working panel reports units at index 257+ (sprinkler outputs on the first 17A00 expansion enclosure) and 393+ (named flags) even though only a dozen lights are wired up. Closes a real debugging mystery from Phase 2/3 of the v1+UDP work: OmniClientV1's long-form RequestUnitStatus path (BE u16 start/end) exists specifically to address units > 255, which only happens because of this firmware-fixed address layout. astro.config.mjs Slot both new pages into the existing Reference and Explanation sidebar groups.
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%