How-to: install-in-home-assistant — full setup + reauth + troubleshooting
src/content/docs/how-to/install-in-home-assistant.md (~900 w)
Sidebar order 0 so it appears first in the How-to section. Covers:
- Prereqs: HA 2026.1+, panel reachable, ControllerKey
- Backup-first nudge before adding any custom component
- HACS install path (custom repo until upstream publish)
- Manual git+cp path that works on every HA install type
- The 'untested custom integration' WARNING is expected
- Add-via-UI walkthrough with screenshots of integration page +
device page
- Customise: entity rename, areas, dashboards, logbook
- Common errors table (4 toast messages and their fixes)
- 'Loads but no entities' deep-dive (3 ordered causes)
- Reauth flow when ControllerKey rotates
- Cross-links to the other how-tos and entity/service references
- Known gaps: HACS not published yet, omni-pca not on PyPI yet,
live panel validation pending
23 pages now (was 22). Sidebar autogenerates so it appears at the top
of How-to without further config.
This commit is contained in:
parent
4812b56622
commit
d7ee0a3e98
177
src/content/docs/how-to/install-in-home-assistant.md
Normal file
177
src/content/docs/how-to/install-in-home-assistant.md
Normal file
@ -0,0 +1,177 @@
|
||||
---
|
||||
title: Install in Home Assistant
|
||||
description: Drop the omni_pca custom component into a running Home Assistant install — HACS or manual — and connect it to your panel for the first time.
|
||||
sidebar:
|
||||
order: 0
|
||||
---
|
||||
|
||||
Two install paths and one config-flow walkthrough. By the end of this you'll
|
||||
have a single HA device named *Omni Pro II* with one entity per named object
|
||||
on your panel.
|
||||
|
||||
## Before you start
|
||||
|
||||
You need:
|
||||
|
||||
- A Home Assistant install on **2026.1 or newer** (the integration uses
|
||||
modern `EventEntity` and `AlarmControlPanelState` APIs that landed in 2024+).
|
||||
- Your panel reachable on TCP — typically port `4369` from HA to the panel.
|
||||
If you don't know whether the network module is on, see
|
||||
[the troubleshooting section below](#the-integration-loads-but-no-entities-appear).
|
||||
- The 32-character ControllerKey. If you don't have it,
|
||||
[find your panel's ControllerKey](/how-to/find-controller-key/) first.
|
||||
|
||||
Take a Settings → System → Backups snapshot first if you care about your
|
||||
current HA state. The integration is well-tested but it's still a custom
|
||||
component you're adding to a production system.
|
||||
|
||||
## Path A — HACS (when published)
|
||||
|
||||
Once the integration is in the [HACS](https://hacs.xyz/) default repository
|
||||
(not yet — see [Roadmap](#known-gaps)):
|
||||
|
||||
1. **HACS → Integrations → Explore & download repositories**
|
||||
2. Search for *HAI/Leviton Omni Panel*.
|
||||
3. Click **Download**, accept the version, then restart HA.
|
||||
4. Continue at [Add the integration](#add-the-integration-via-the-ui).
|
||||
|
||||
Until HACS publication, use Path B or add the project as a HACS *custom
|
||||
repository*:
|
||||
|
||||
1. **HACS → Integrations → ⋮ → Custom repositories**
|
||||
2. URL: `https://github.com/rsp2k/omni-pca`, category *Integration*.
|
||||
3. Click **Add**, then download as in steps 1–3 above.
|
||||
|
||||
## Path B — manual copy
|
||||
|
||||
Works on any HA install (Container, Supervised, Core, OS):
|
||||
|
||||
```bash
|
||||
cd /path/to/your/homeassistant/config/ # the dir with configuration.yaml
|
||||
mkdir -p custom_components
|
||||
cd custom_components
|
||||
git clone https://github.com/rsp2k/omni-pca tmp-omni
|
||||
cp -r tmp-omni/custom_components/omni_pca .
|
||||
rm -rf tmp-omni
|
||||
```
|
||||
|
||||
Then restart Home Assistant — **Settings → System → Restart Home Assistant**,
|
||||
or `ha core restart` on HA OS.
|
||||
|
||||
After restart, **Settings → System → Logs** should mention loading the
|
||||
custom integration. A WARNING line that reads *"We found a custom
|
||||
integration omni_pca which has not been tested by Home Assistant"* is
|
||||
expected and harmless — every custom component triggers it.
|
||||
|
||||
## Add the integration via the UI
|
||||
|
||||
1. **Settings → Devices & Services → + Add Integration**
|
||||
2. Search for *HAI/Leviton Omni Panel*. (If you used HACS or restarted
|
||||
recently, it should show up under *Brands*.)
|
||||
3. Fill the form:
|
||||
|
||||
| Field | Value |
|
||||
|-------|-------|
|
||||
| **Host** | Panel IP or hostname (e.g. `192.168.1.9`) |
|
||||
| **Port** | `4369` (HAI's reserved port; default) |
|
||||
| **Controller Key** | 32 hex characters from your panel |
|
||||
|
||||
4. Submit. HA opens a TCP connection to the panel, completes the
|
||||
four-step secure-session handshake, sends `RequestSystemInformation`,
|
||||
and creates the entry on the first successful reply. Expect this to
|
||||
take 1–3 seconds.
|
||||
|
||||
If you get an error toast, see [Common errors](#common-errors) below.
|
||||
|
||||
## Verify it loaded
|
||||
|
||||
The integration page (**Settings → Devices & Services →
|
||||
HAI/Leviton Omni Panel**) should report something like
|
||||
*1 device · 38 entities*:
|
||||
|
||||

|
||||
|
||||
Click into the *Omni Pro II* device. You should see Controls, Sensors,
|
||||
Diagnostic sections populated with everything the panel knows about:
|
||||
|
||||

|
||||
|
||||
If the controls grid is empty or shows mostly *unavailable*, jump to
|
||||
[the integration loads but no entities appear](#the-integration-loads-but-no-entities-appear).
|
||||
|
||||
## Customise
|
||||
|
||||
Optional polish:
|
||||
|
||||
- **Entity names**: HA's default entity ID is
|
||||
`<platform>.omni_pro_ii_<panel_object_name>` (slugified). Click an
|
||||
entity → ⚙️ → rename if you want shorter IDs. Friendly names you
|
||||
can change without touching the entity ID.
|
||||
- **Areas**: Drag the device into a HA area (Settings → Areas) so
|
||||
every entity inherits it.
|
||||
- **Dashboards**: Add the *alarm_control_panel* card for arm/disarm,
|
||||
the *climate* card for thermostats, individual *light* cards or
|
||||
*button* tiles. Nothing Omni-specific is required.
|
||||
- **Logbook**: Push events from the panel show up in Logbook
|
||||
automatically because the integration emits them through the *event*
|
||||
entity. Useful for "who armed when" history.
|
||||
|
||||
## Common errors
|
||||
|
||||
| Error toast | What's wrong | Fix |
|
||||
|-------------|--------------|-----|
|
||||
| *Failed to connect* | TCP refused or timed out | See [no entities](#the-integration-loads-but-no-entities-appear). |
|
||||
| *Invalid authentication* | ControllerKey wrong or panel rejected the secure handshake | Double-check the 32 hex chars, no spaces, lowercase or uppercase both fine. Re-extract via [find ControllerKey](/how-to/find-controller-key/). |
|
||||
| *Already configured* | You added the same `host:port` twice | Remove the existing entry first; HA enforces unique-per-host. |
|
||||
| *Unable to install requirement omni-pca==2026.5.10* | HA can't reach PyPI to install the wire-protocol library | Check internet connectivity from HA. If on a restricted network, pre-install the wheel manually (see project README). |
|
||||
|
||||
## The integration loads but no entities appear
|
||||
|
||||
If the device shows *0 entities* or every entity reads *unavailable*,
|
||||
the integration connected and authenticated but the panel hasn't given
|
||||
us anything to discover. Three causes, in order of likelihood:
|
||||
|
||||
1. **The panel has no named objects.** The integration only
|
||||
materialises objects the panel reports a name for. Open PC Access →
|
||||
*Names* and configure names for every zone / unit / area /
|
||||
thermostat / button you want exposed, then reload the integration
|
||||
(**Settings → Devices & Services → ⋮ → Reload**).
|
||||
|
||||
2. **The panel's network module is off** but you're somehow connected
|
||||
anyway (rare; usually you'd get *Failed to connect*). Verify on a
|
||||
wired console: **Setup → Misc → Network → Network Enabled**.
|
||||
|
||||
3. **The panel firmware predates the v2 protocol opcodes** the
|
||||
integration uses. We've tested against firmware 2.12 and newer; if
|
||||
you're on something older, file an issue — we can extend the
|
||||
library to fall back to v1 opcodes.
|
||||
|
||||
## Reauth — what to do when the key changes
|
||||
|
||||
If you regenerate the ControllerKey on the panel, the integration will
|
||||
start failing with `InvalidEncryptionKeyError` on the next refresh. HA
|
||||
catches this as `ConfigEntryAuthFailed` and surfaces a *Reauthenticate*
|
||||
prompt on the integration card. Click it, paste the new key, submit.
|
||||
No restart needed.
|
||||
|
||||
## Where next
|
||||
|
||||
- [Trigger an HA automation on alarm activation](/how-to/automate-on-alarm/)
|
||||
- [Bypass a zone](/how-to/bypass-zone/)
|
||||
- [Show a message on the panel display](/how-to/send-panel-message/)
|
||||
- [HA entities reference](/reference/ha-entities/) — what each entity
|
||||
type exposes
|
||||
- [HA services reference](/reference/ha-services/) — the seven services
|
||||
the integration registers
|
||||
|
||||
## Known gaps
|
||||
|
||||
- The integration is **not yet published in HACS default**. Use the
|
||||
custom-repository workflow above (or path B) until then.
|
||||
- The library `omni-pca` is **not yet on PyPI**. HA's
|
||||
`manifest.json` requires `omni-pca==2026.5.10`; that resolves once
|
||||
publish lands. Until then, install the wheel manually.
|
||||
- Live-panel validation against a real Omni Pro II is in progress.
|
||||
Mock-panel coverage is comprehensive (351 tests), but a real-world
|
||||
bug-bash hasn't happened yet. Report anything weird via GitHub
|
||||
issues with a [diagnostics download](#verify-it-loaded).
|
||||
Loading…
x
Reference in New Issue
Block a user