Skip to content
acdcnow edited this page Sep 21, 2026 · 7 revisions

Crow / AAP Alarm System — Wiki

Documentation hub for the Home Assistant Crow / AAP IP Module Integration (crowipmodule).

Connects Crow Runner 8/16, Arrowhead Alarm Products (AAP) and compatible alarm panels to Home Assistant through the IP Module (ESIM/TCP), over a purely local TCP connection.


🚦 Pick your release channel

This project has three parallel documentation tracks. Start by finding your version, then follow the matching track.

Channel Version Home Assistant Documentation
🧪 Pre-release 2.1.0-beta.2 2026.9.3+ HA 2026.09 Development Branch
✅ Stable 2.0.0 2025.12 – 2026.8 Former "v1.2.8 and higher" docs — see Archived Documentation
🗄️ Legacy pre-1.2.8 older Archived Documentation

Which one do I want? Running Home Assistant 2026.9.3 or newer → take the pre-release. On 2026.8 or older → stay on stable 2.0.0; the pre-release will not install there.


🧪 Pre-release — HA 2026.09 Development Branch

The current development line lives on branch HA2026_09_dev, released as 2.1.0-beta.2.

Read first → HA 2026.09 Development Branch

Highlights:

  • Targets Home Assistant 2026.9.3, which requires Python 3.14.2+.
  • Removes the deprecated DeviceInfo.via_device (Home Assistant deletes it in 2027.8).
  • Ships its own brand images (brand/), so the integration has a proper icon without needing the brands repository.
  • Moves per-entry state to entry.runtime_data, and adds zone sub-devices linked to the hub.
  • Arms reliably again on panels that wait for the user code, with a new, translated Arm Sequence option (command_then_keypad / command_only).
  • No Python dependency to install — the panel driver is bundled with the integration.

Engineering documentation (canonical, versioned in the repository)

Document Audience Contents
Architectural Design Document Maintainers, reviewers Context, design decisions, runtime view, HA conformance, risks
Software Design Document Implementers Modules, data models, protocol tables, entity contracts
Workflows and Diagrams Everyone Mermaid diagrams of setup, data flow, commands, lifecycle

Links

Installing the pre-release

  1. HACS → Crow/AAP Alarm IP Module → ⋮ → Redownload.
  2. Enable Show beta versions if the pre-release is not listed.
  3. Install 2.1.0-beta.2 and restart Home Assistant.

Manual installs: copy custom_components/crowipmodule/ from the release archive into config/custom_components/.


✅ Stable — 2.0.0 ("v1.2.8 and higher" architecture)

The production release for Home Assistant 2025.12 – 2026.8. It uses the same Monolithic Local Controller model — a direct local TCP implementation with no external Python library — but without the 2026.9 API migration, the extra sensor/button platforms, diagnostics, or brand assets.

The documentation for this generation is preserved unchanged in the archive:


🗄️ Archived documentation

Everything below is kept for historical reference only. It describes releases that are no longer developed.

→ Archived Documentation index

Page Describes
Developer & Technical Reference Guide The original dependency-based implementation (pre-1.2.8)
Technical Design Document Architecture for the pycrowipmodule-based releases
Developer Documentation (v1.2.8+) User guide for the stable 2.0.0 generation
Technical Design Document (v1.2.8+) Design for the stable 2.0.0 generation
Archived Home Landing Page The previous version of this page

⚡ Quick start (any version)

  1. Give the IP Module a static IP address and confirm it responds on TCP port 5002.
  2. Install the integration (HACS or manual) and restart Home Assistant.
  3. Settings → Devices & Services → Add Integration → Crow/AAP Alarm IP Module.
  4. Work through the wizard: connection details → areas → outputs → zones.
  5. Name the zones meaningfully and set each zone's type (window, door, motion, smoke, …) — the type decides the device class and which sub-device the sensor is grouped under.

Entities created

Platform Example Notes
alarm_control_panel alarm_control_panel.house Arm Away, Arm Home (Stay), Disarm, Trigger
binary_sensor binary_sensor.front_door One per zone, with alarm/bypass/tamper attributes
binary_sensor binary_sensor.mains_power Six diagnostic system statuses
sensor sensor.system_status Human-readable summary ("Ready", "ALARM", …)
sensor sensor.house_last_alarm Which zone last alarmed, per area
switch switch.gate Board outputs (momentary toggle)
button button.relay_1 Chime toggle and the two board relays

🛠️ Troubleshooting

Symptom Cause and fix
"Connection Refused" Something else holds the single TCP socket. Older firmware allowed only one client; the integration now retries with exponential backoff (10 s → 60 s).
"Unknown" on startup The panel is still dumping state. The integration re-broadcasts all state ~2 s after connecting.
Entities show Unavailable The TCP connection dropped. Availability is driven by the live connection state by design, so "Unavailable" always means "unknown", never "disarmed".
Status never updates Make sure the IP Module is configured to send ASCII messages.
Arming does nothing The panel is waiting for your user code. Set Arm Sequence to Command, then code + Enter and make sure the area has a code.
Two panels collide Known limitation in the 2.1.x development line: zone/sensor/output/button unique IDs are global, not per config entry. The alarm panel is already entry-scoped.

Enable detailed logging:

logger:
  default: info
  logs:
    custom_components.crowipmodule: debug

🔗 Project links


Crow is a trademark of its respective owner. This is an unofficial, community-maintained integration and is not affiliated with or endorsed by Crow Electronic Engineering or Arrowhead Alarm Products. Brand images in this project use the product name descriptively and reproduce no vendor logo artwork.

Clone this wiki locally