Pyronix Cloud for Home Assistant
Status: pre-alpha. The protocol was worked out from the Android app (see PROTOCOL.md). Read-only sessions (handshake, login, state dump, pushed updates) have been tested against a real Euro 46. The library and integration are tested offline against a fake panel; arming and disarming have not been tested on a real panel yet. Do not rely on this to protect your property.
An unofficial Home Assistant custom integration for Pyronix intruder alarm panels (Enforcer, Euro 46). It uses the same Pyronix Cloud relay as the official HomeControl2.0 app.
Not affiliated with or endorsed by Pyronix or Hikvision.
How it works
The panel has no local API that the app uses. Everything goes through the Pyronix Cloud:
Home Assistant ──WSS──▶ wss://app.pyronixcloud.com ──(panel uplink)──▶ Panel
└────────── end-to-end session: ECDH P-256 + AES-128-CFB ──────────┘
- Cloud relay. An XML-like handshake identifies the panel and opens a relay.
- Encrypted panel session. Binary frames are protected with keys derived from an ECDH exchange and the panel's app password.
- Application layer. The client sends one-byte opcodes (arm, disarm, omit, outputs, log). The panel replies with JSON documents (panel, areas, inputs, outputs, user, faults, log).
The full specification is in PROTOCOL.md.
Features (first version)
| HA platform | What it shows |
|---|---|
alarm_control_panel |
One entity per panel on level-set panels: level A → away, B → night, C → custom bypass. State comes from the panel's area status codes. Arming uses force-omit, as the app does. Area-set panels get one entity per area. |
binary_sensor |
One per input (zone): open/closed. |
sensor |
Diagnostic: connection state and fault count. |
| Diagnostics | Download with all credentials and identifiers redacted. |
Connection modes (Settings → Devices & services → Pyronix Cloud → Configure):
- On demand (default). Every few minutes (default 2) and for each arm or disarm, Home Assistant opens a short session, reads the panel state, says goodbye and disconnects. The panel allows one remote session at a time, so the HomeControl2 app is blocked only for those few seconds.
- Persistent ("live updates"). Keeps one session open for instant input and area changes, and reconnects with back-off. While it is connected, the HomeControl2 app cannot log in.
Planned: output switches, input omit, the event log and PIR-camera photos.
Installation
- In HACS, add this repository as a custom repository (category Integration) and install
Pyronix Cloud. HACS installs the
pyronix-cloudlibrary from PyPI. - Restart Home Assistant (2026.2 or later).
- Add the Pyronix Cloud integration and enter the details below.
What you need
The same details HomeControl2 uses. Each one is listed with its label in the app:
- Device name (
AppUser). This is a free-text name for the client, shown in the app under Settings > User Name. It defaults to the phone model and is not your e-mail. - System ID (
PanelId, 8 characters). You entered it when you added the panel, and the app shows it as "Panel ID:". - App password (
PanelPwd). The login screen asks for this. Your installer set it, and it is not your keypad code. - User code (
UserCode). The login screen asks for this too. It is your keypad code. - An active Pyronix Cloud subscription for the panel
Repository layout
PROTOCOL.md Reverse-engineered protocol specification
probe/ Stand-alone read-only protocol test script (step 1)
src/pyronix_cloud/ Async client library, no HA dependency (published as pyronix-cloud)
src/pyronix_cloud/testing/ Fake cloud relay + panel for offline tests and dev instances
custom_components/pyronix_cloud/ Home Assistant integration
tests/ Library tests; tests/integration/ holds the HA tests
apk/, decompiled/ Local-only reverse-engineering inputs (gitignored, never committed)
Roadmap
Probe: done; read-only live sessions answered most of PROTOCOL.md §13.Libraryandintegration: first version done, tested offline.- Confirm a real set/unset sequence on a live panel (§13 Q12), then outputs, omit and the log.
- Publish
pyronix-cloudto PyPI, list in HACS, submit brand images; later, HA core.
Developing against the fake panel
uv run python -m pyronix_cloud.testing --port 8765
This serves a fake cloud relay and panel on ws://127.0.0.1:8765 and prints its test
credentials. In the config flow, open Advanced and set the cloud relay URL to it.
Trying the probe
cp .env.example .env # then fill in your panel details
# see probe/README.md for install and run instructions
.env is gitignored. Never commit credentials, captures or logs that contain them.
Contributing / development
See AGENTS.md for conventions, safety rules and the development workflow. These apply to human and AI contributors alike.
Licence
- The
pyronix_cloudlibrary, the probe and the documentation are licensed under the GNU LGPL v3.0 or later, which builds on the GNU GPL v3.0. - The Home Assistant integration (
custom_components/) is licensed under the Apache License 2.0.
Per-file licensing follows the REUSE specification (see REUSE.toml).
Legal
This project is for interoperability with hardware you own. The APK and decompiled sources are used locally for analysis and are never redistributed.
Metadata
Release files for pyronix-cloud 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| pyronix_cloud-0.1.0.tar.gz | 126.8 kB | With provenance | Details for pyronix_cloud-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| pyronix_cloud-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for pyronix_cloud-0.1.0-py3-none-any.whl |
Total release size: 210.0 kB
Release files / pyronix_cloud-0.1.0.tar.gz
| Download URL | pyronix_cloud-0.1.0.tar.gz |
|---|---|
| Size | 126.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
02810e1b8ac078e29056d800536e5e516125246f1ec9177385f96580968bbbf3
|
|
BLAKE2b-256 checksum How to use checksums |
c7c58fd25f46367fd16975125f6685c314f56cb0c2816b5be3bed2e0d2da4cf9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 5, 2026.
Transparency logRelease files / pyronix_cloud-0.1.0-py3-none-any.whl
| Download URL | pyronix_cloud-0.1.0-py3-none-any.whl |
|---|---|
| Size | 83.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
428c5b29ff0b7dc49dd43c9d50e42cc300a8b7508e422b61578693b809d6dfee
|
|
BLAKE2b-256 checksum How to use checksums |
13f28de98423c3c25135f3fefbf34d8795632a8fc07b057a63ae4224d8e566ca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 5, 2026.
Transparency logSecurity for pyronix-cloud 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for pyronix_cloud-0.1.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 5, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.