EnvisaLink TPI Proxy
Posted: Fri Sep 22, 2023 11:38 am
Hi all,
I've had an EnvisaLink 4 installed on my Honeywell panel for about a year now. I'm using the EnvisaLink Homebridge plugin to bring my alarm into HomeKit and it's been working great! The only thing that recently became somewhat of an issue for me (more like an inconvenience really) is the fact that the TPI port can only take one connection at a time. I'm pretty sure that this is not a big deal for most but I've seen a few of you in this forum ask about it before, so I figured I'd share here that I just put out a Node.js library (that can be integrated into other apps, plugins, etc.) and a Docker image (to launch a standalone app) that works as a proxy to the TPI port, allowing multiple concurrent connections.
It's a somewhat dumb proxy in the sense that it doesn't really care for what's being sent/received. It will connect to EnvisaLink, authenticate itself, and then for every client that connects to it, it will replicate the authentication flow and from there on it simply forwards all traffic between the EnvisaLink and the clients connected to the proxy. The only thing it knows about the protocol is the authentication flow, everything else will be blindly forwarded. (different than what NodeAlarmProxy does, where it actually parses the messages).
Here's where you can find the code if you're interested:
https://github.com/barros001/envisalink-proxy
https://github.com/barros001/envisalink ... link-proxy
And here's a Docker image that launches a proxy:
https://hub.docker.com/r/barros001/envisalink-proxy
I just put this together rather quickly and haven't extensively tested it yet (although my Homebridge plugin has been connected to it for over 24 hours now without a problem), but given it's a pretty simple proxy, I don't see much going wrong here. Hope this can be helpful to someone. One thing to note is that it only supports the Honeywell version of the protocol as I do not have a DSC panel to test out.
On a related note, the reason this became an issue for me is that I'm working on a mobile app (iOS only for now) that acts as a virtual keypad for your alarm panel, using the EnvisaLink TPI protocol. It basically replicates an alphanumeric keypad, with the keys, two alphanumeric lines, and an ARMED and READY indicator. I only have two old fixed display keypads and had a really hard time programming my system but instead of purchasing an alphanumeric keypad, I thought I'd just try something new and I wrote this little app. It's not launched yet but if anyone wants to take it for a test, please let me know and I'll be glad to add you as a beta tester. As with the proxy, it only supports Honeywell panels for the time being.
Feel free to reach out if you have any questions or if you'd like to give the app a try. Thanks for your time!
I've had an EnvisaLink 4 installed on my Honeywell panel for about a year now. I'm using the EnvisaLink Homebridge plugin to bring my alarm into HomeKit and it's been working great! The only thing that recently became somewhat of an issue for me (more like an inconvenience really) is the fact that the TPI port can only take one connection at a time. I'm pretty sure that this is not a big deal for most but I've seen a few of you in this forum ask about it before, so I figured I'd share here that I just put out a Node.js library (that can be integrated into other apps, plugins, etc.) and a Docker image (to launch a standalone app) that works as a proxy to the TPI port, allowing multiple concurrent connections.
It's a somewhat dumb proxy in the sense that it doesn't really care for what's being sent/received. It will connect to EnvisaLink, authenticate itself, and then for every client that connects to it, it will replicate the authentication flow and from there on it simply forwards all traffic between the EnvisaLink and the clients connected to the proxy. The only thing it knows about the protocol is the authentication flow, everything else will be blindly forwarded. (different than what NodeAlarmProxy does, where it actually parses the messages).
Here's where you can find the code if you're interested:
https://github.com/barros001/envisalink-proxy
https://github.com/barros001/envisalink ... link-proxy
And here's a Docker image that launches a proxy:
https://hub.docker.com/r/barros001/envisalink-proxy
I just put this together rather quickly and haven't extensively tested it yet (although my Homebridge plugin has been connected to it for over 24 hours now without a problem), but given it's a pretty simple proxy, I don't see much going wrong here. Hope this can be helpful to someone. One thing to note is that it only supports the Honeywell version of the protocol as I do not have a DSC panel to test out.
On a related note, the reason this became an issue for me is that I'm working on a mobile app (iOS only for now) that acts as a virtual keypad for your alarm panel, using the EnvisaLink TPI protocol. It basically replicates an alphanumeric keypad, with the keys, two alphanumeric lines, and an ARMED and READY indicator. I only have two old fixed display keypads and had a really hard time programming my system but instead of purchasing an alphanumeric keypad, I thought I'd just try something new and I wrote this little app. It's not launched yet but if anyone wants to take it for a test, please let me know and I'll be glad to add you as a beta tester. As with the proxy, it only supports Honeywell panels for the time being.
Feel free to reach out if you have any questions or if you'd like to give the app a try. Thanks for your time!