Envisalink (DSC, Honeywell) smart home integration, free and open source

DSC PowerSeries and Honeywell Vista alarms, locally through an Envisalink EVL-3 / EVL-4.
This integration connects a DSC PowerSeries or Honeywell / Ademco Vista alarm panel fitted with an Envisalink EVL-3 or EVL-4 module to Gladys, locally, through the module's TPI interface (TCP port 4025), without the EyezOn cloud. Unofficial, not affiliated with EyezOn, DSC or Honeywell.
Never tested on a real module. This version was written from the EyezOn TPI documentation and the pyenvisalink library, and tested only against a simulated module. Try it first with the panel disarmed, watching the logs, and report what differs in the GitHub issues. Do not rely on it as your only intrusion or fire alert.
What you get
- One device per partition, "Alarm partition N": the mode (disarmed, armed away, armed stay, armed night), alarm in progress and ready to arm. The mode can be set from the dashboard or a scene.
- One device per zone: open / closed (or motion, smoke, water leak depending on the chosen kind), alarm, tamper, fault.
- The panel: Envisalink connected, mains power, low battery, tamper, system trouble, panic alarm.
- Scene triggers: "Envisalink alarm triggered" (with its kind: intrusion or water leak from the kind of the zone in alarm, fire, medical, panic, duress, or "partition in alarm, cause unknown" when the zone is not configured), "Envisalink partition armed" (with the mode, the user number when known, and whether Gladys asked for it), "Envisalink partition disarmed".
- Scene actions: arm, disarm (if allowed), panic alarm (if allowed).
Before you start
- The Envisalink must be on your local network with a fixed address (a DHCP reservation in your router).
- Note the password of the module's local web page ("user" by default). It is not your EyezOn account password.
- One TPI connection at a time: if Home Assistant, another Gladys or another program already uses the module, stop it, or both will keep kicking each other out. Sharing the module between programs needs a relay such as envisalink-proxy.
Configuration
- Address of the Envisalink: its IP (e.g.
192.168.1.40), optionally with the port (192.168.1.40:4025). - TPI port: 4025 unless changed.
- Envisalink password.
- Alarm panel: leave "Automatic" (DSC and Honeywell are recognised from the module's first message).
- Number of partitions: 1 in most homes.
- Zones (optional): the zones to show from the start, with a name and a
kind, separated by commas:
1=Front door, 2=Hall:motion, 5=Kitchen:smoke, 6=Laundry:leak, 10-12. Kinds:opening(default),motion,smoke,leak. A zone the panel reports that is not in the list is added by itself, as an opening. Changing the kind of a zone creates a new feature: add it again from the Discovery tab. - Save, then add the devices from the Discovery tab.
The Test the connection button reconnects at once, asks the panel for its full status (DSC) and shows the mode of each partition.
Safety
- Arming is allowed by default ("Allow arming" option).
- Disarming is off by default. Turn on "Allow disarming" only if your Gladys is well protected: anyone who can control your devices will be able to disarm the alarm.
- Panic alarms from Gladys are off by default.
- User code: DSC 4 or 6 digits, Honeywell 4 digits. Needed to disarm, and to arm a Honeywell panel or a DSC panel without "quick arm". A dedicated code is best. It is never written in the logs, nor is the password. Every command (sent or refused) is logged.
- A DSC panel asking for a code while arming (message 900) only gets it within 20 seconds of a Gladys command, and only for the partition armed.
Beware of false alarms
- Night mode arms without entry delay: opening the door sets the alarm off at once, with no time to type the code. Arm it from a scene only when nobody is due to come in.
- If your panel reports to a monitoring station, an alarm set off by a badly tuned scene, or a panic alarm sent from Gladys, is reported like a real one: warn your monitoring company before testing, or put the panel in test mode.
Modes
| Gladys mode | DSC | Honeywell |
|---|---|---|
| Armed away | command 030 | code + 2 (Away) |
| Armed stay | command 031 | code + 3 (Stay) |
| Armed night | command 032 (no entry delay) | code + 7 (Instant) |
| Disarmed | command 040 + code | code + 1 (Off) |
To go from one armed mode to another, disarm first.
Known limits
- Honeywell: the panel reports zones only through the virtual keypad display and a bitfield that is not always sent. A zone shown "FAULT", "CHECK" or "ALARM" on the keypad goes back to normal when the keypad has not shown it for 45 s, or as soon as the partition is "ready" (except the alarm, cleared by the disarm). An "ALARM" shown by a disarmed keypad (alarm memory) is not an alarm.
- Honeywell, panel armed: the keypad no longer shows the faults. A door left
open while arming therefore shows closed after 45 s, unless the panel
reports it in its zone bitfield (
%01). Do not rely on the opening states of an armed Honeywell panel. - Honeywell: a partition shows armed from the start of the exit delay (the keypad icons light at once), while a DSC panel shows it at the end of the delay. The "Partition armed" trigger therefore fires earlier on Honeywell.
- Honeywell: the panic alarm is experimental: it sends the keypad key A (fire), B (medical) or C (police), whose effect depends on the programming of your panel.
- The state of a zone shows from its first change (or the panel's first full status).
- The Gladys limits (300 states and 300 events per minute) are respected: only values that change are sent (plus a reminder about every 30 minutes); over 240 states a minute, the zones wait for the next minute while the panel and the partitions keep their share; over 120 scene events a minute, they are dropped and logged, except "Envisalink alarm triggered", never dropped and sent again up to 3 times on an error.
Troubleshooting
- "Envisalink unreachable": check the address, that the module answers (its local web page), and that no other program is connected to port 4025.
- "another client may be using the TPI": the connection drops right after the login several times in a row; the integration then waits 5 minutes between two tries. Stop the other program, or use a relay (envisalink-proxy).
- "refused the password": after three refusals the connection stops so as not to lock the module. Fix the password, then save or click "Test the connection".
- The link is checked by a keep-alive every minute; with no answer for 3 minutes, the integration reconnects (5 s, 10 s, 30 s, 1 min, 2 min, then every 5 min).
Configuration settings
These are the settings Envisalink (DSC, Honeywell) asks for in its configuration screen in Gladys.
| Setting | Type | Required | Description |
|---|---|---|---|
| Your Envisalink module | section | No | For DSC PowerSeries and Honeywell / Ademco Vista alarm panels fitted with an Envisalink EVL-3 or EVL-4 module, on your network, without the EyezOn cloud: the state of each partition (disarmed, armed away, stay or night, in alarm, ready), the zones (open or closed, alarm, tamper, fault), the system troubles (mains, battery, tamper), panic alarms, arming from Gladys and scene triggers. The module accepts one local connection (TPI, TCP port 4025) at a time: stop any other software using it (Home Assistant, another Gladys). Unofficial, not affiliated with EyezOn, DSC or Honeywell. |
| Address of the Envisalink | string | Yes | Its IP address or name on your network (give it a fixed address in your router). |
| TPI port | number | No | 4025 unless you changed it. |
| Envisalink password | secret | Yes | The password of the module's local web page ("user" by default), not your EyezOn account. |
| Alarm panel | select | No | Found by itself from the first message of the module. Choose it only when the detection fails. |
| Number of partitions | number | No | Partitions 1 to N become devices in Gladys (1 for most homes). |
| Zones | string | No | Optional: the zones to show from the start, with a name and a kind (opening, motion, smoke, leak), e.g. "1=Front door, 2=Hall:motion, 5=Kitchen:smoke, 10-12". Zones the panel reports are added by themselves as openings. |
| Safety | section | No | Anyone who can control the devices in Gladys (dashboard, scenes, the Gladys app) can use the alarm through this integration. Arming is allowed by default. Disarming and panic alarms are off by default: allow them only if your Gladys is well protected. Every command is written in the integration logs; the user code never is. |
| User code of the alarm | secret | No | The code you type on the keypad (DSC: 4 or 6 digits, Honeywell: 4 digits). Needed to disarm, and to arm a Honeywell panel or a DSC panel without quick arming. A dedicated user code is best: the panel logs it with each command. |
| Allow arming from Gladys | boolean | No | |
| Allow disarming from Gladys | boolean | No | Needs the user code. Disarming also silences an alarm in progress. |
| Allow panic alarms from Gladys | boolean | No | The "Envisalink panic alarm" scene action: fire, medical or police, reported to your monitoring station if you have one (a false alarm can bring a patrol). Experimental on Honeywell: the A / B / C keys depend on the panel programming. |
| Language of the device names | select | No | Used for the names of the devices, features and modes added from now on. |
How to install Envisalink (DSC, Honeywell) in Gladys
- In Gladys, open Integrations: Envisalink (DSC, Honeywell) appears in the catalog, next to the native integrations, with a community badge.
- Click Install. Gladys pulls the Docker image (
ghcr.io/lm1lc3n7/gladys-envisalink:0.1.1), starts it in a sandbox isolated from the core, and generates the integration's interface (devices, discovery and configuration). - Open the Configuration screen of the integration, fill in the settings, and save.
- You can also install it directly from its repository URL: https://github.com/LM1LC3N7/gladys-envisalink.
Envisalink (DSC, Honeywell) requires Gladys >=5.1.0. The catalog inside Gladys refreshes every hour, so a new version becomes available at most one hour after its release.
Not running Gladys yet? It is free and open source: follow the installation guide to get started.
About external integrations
Envisalink (DSC, Honeywell) is an external integration: a community integration packaged as a Docker container and published on GitHub, that Gladys installs in one click and runs in a sandbox isolated from its core. It is published and maintained by LM1LC3N7, not by the Gladys core team.
- Browse all integrations, native and community
- Build and publish your own external integration
- Source code on GitHub — source of this documentation