Envisalink integration loses connection after sending a command.
The problem
After the envisalink integration sends data to the envisalink 3 board, it frequently loses connection, but not always. This has been happening for at least a year, however lazy me finally decided to look into it when I couldn't disarm the system due to this issue and caused an alarm. This disconnection happens despite the webpage on the board working and stating the TPI Status is online when this happens. I can also constantly ping the envisalink during this issue so do not suspect a network problem.
What version of Home Assistant Core has the issue?
core-2024.10.2
What was the last working version of Home Assistant Core?
No response
What type of installation are you running?
Home Assistant Core
Integration causing the issue
envisalink
Link to integration documentation on our website
https://www.home-assistant.io/integrations/envisalink/
Diagnostics information
No response
Example YAML snippet
envisalink:
host: 192.168.1.42
panel_type: HONEYWELL
user_name: user
password: ####
port: 4025
evl_version: 3
keepalive_interval: 60
zonedump_interval: 30
timeout: 10
panic_type: Police
zones:
1:
name: 'Fire'
type: 'smoke'
2:
name: 'Front Door'
type: 'door'
Anything in the logs that might be useful for us?
2024-10-14 13:05:56.020 DEBUG (MainThread) [pyenvisalink.envisalink_base_client] TX > b'^03,1,#$'
2024-10-14 13:05:56.020 DEBUG (MainThread) [pyenvisalink.envisalink_base_client] TX > b'^03,1,3$'
2024-10-14 13:05:56.022 DEBUG (MainThread) [pyenvisalink.envisalink_base_client] ----------------------------------------
2024-10-14 13:05:56.022 DEBUG (MainThread) [pyenvisalink.envisalink_base_client] RX < %00,01,1C08,08,00,****DISARMED**** Ready to Arm $
2024-10-14 13:05:56.022 DEBUG (MainThread) [pyenvisalink.envisalink_base_client] calling handler: handle_keypad_update for code: %00 with data: 01,1C08,08,00,****DISARMED**** Ready to Arm
2024-10-14 13:05:56.022 DEBUG (MainThread) [pyenvisalink.envisalink_base_client] Invoking callback: callback_keypad_update
2024-10-14 13:05:56.023 DEBUG (MainThread) [pyenvisalink.envisalink_base_client] ----------------------------------------
2024-10-14 13:06:07.773 DEBUG (MainThread) [pyenvisalink.envisalink_base_client] TX > b'^02,$'
2024-10-14 13:06:36.474 DEBUG (MainThread) [pyenvisalink.envisalink_base_client] TX > b'^00,$'
2024-10-14 13:06:37.774 DEBUG (MainThread) [pyenvisalink.envisalink_base_client] TX > b'^02,$'
2024-10-14 13:07:07.785 DEBUG (MainThread) [pyenvisalink.envisalink_base_client] TX > b'^02,$'
2024-10-14 13:07:36.475 DEBUG (MainThread) [pyenvisalink.envisalink_base_client] TX > b'^00,$'
2024-10-14 13:07:37.786 DEBUG (MainThread) [pyenvisalink.envisalink_base_client] TX > b'^02,$'
2024-10-14 13:08:07.791 DEBUG (MainThread) [pyenvisalink.envisalink_base_client] TX > b'^02,$'
2024-10-14 13:08:36.476 DEBUG (MainThread) [pyenvisalink.envisalink_base_client] TX > b'^00,$'
2024-10-14 13:08:37.792 DEBUG (MainThread) [pyenvisalink.envisalink_base_client] TX > b'^02,$'
2024-10-14 13:09:07.794 DEBUG (MainThread) [pyenvisalink.envisalink_base_client] TX > b'^02,$'
2024-10-14 13:09:29.261 ERROR (MainThread) [pyenvisalink.envisalink_base_client] The server closed the connection. Reconnecting...
2024-10-14 13:09:29.262 DEBUG (MainThread) [pyenvisalink.envisalink_base_client] Closing connection with server...
2024-10-14 13:09:59.263 INFO (MainThread) [pyenvisalink.envisalink_base_client] Started to connect to Envisalink... at 192.168.1.42:4025
2024-10-14 13:09:59.265 INFO (MainThread) [pyenvisalink.envisalink_base_client] Connection Successful!
2024-10-14 13:09:59.265 DEBUG (MainThread) [pyenvisalink.envisalink_base_client] ----------------------------------------
2024-10-14 13:09:59.265 DEBUG (MainThread) [pyenvisalink.envisalink_base_client] RX < Login:
2024-10-14 13:09:59.265 DEBUG (MainThread) [pyenvisalink.envisalink_base_client] calling handler: handle_login for code: Login: with data:
2024-10-14 13:09:59.266 DEBUG (MainThread) [pyenvisalink.envisalink_base_client] TX > b'7514'
2024-10-14 13:09:59.266 DEBUG (MainThread) [pyenvisalink.envisalink_base_client] Invoking callback: callback_login
2024-10-14 13:09:59.266 DEBUG (MainThread) [pyenvisalink.envisalink_base_client] ----------------------------------------
2024-10-14 13:09:59.267 DEBUG (MainThread) [pyenvisalink.envisalink_base_client] ----------------------------------------
2024-10-14 13:09:59.267 DEBUG (MainThread) [pyenvisalink.envisalink_base_client] RX < OK
2024-10-14 13:09:59.267 DEBUG (MainThread) [pyenvisalink.envisalink_base_client] calling handler: handle_login_success for code: OK with data:
2024-10-14 13:09:59.267 DEBUG (MainThread) [pyenvisalink.envisalink_base_client] Password accepted, session created
2024-10-14 13:09:59.267 DEBUG (MainThread) [pyenvisalink.envisalink_base_client] Invoking callback: callback_login_success
2024-10-14 13:09:59.267 DEBUG (MainThread) [pyenvisalink.envisalink_base_client] ----------------------------------------
2024-10-14 13:10:02.771 DEBUG (MainThread) [pyenvisalink.envisalink_base_client] ----------------------------------------
2024-10-14 13:10:02.771 DEBUG (MainThread) [pyenvisalink.envisalink_base_client] RX < %00,02,0208,21,00,CHECK 21 XFER SWFAULT $
2024-10-14 13:10:02.771 DEBUG (MainThread) [pyenvisalink.envisalink_base_client] calling handler: handle_keypad_update for code: %00 with data: 02,0208,21,00,CHECK 21 XFER SWFAULT
Additional information
In the log example above I had sent the # 3 keys to arm the system. It seems to happen regardless of using the send keypress service or another service however. After it reconnects a few minutes later it works fine again. Running firmware 01.12.205A on the envisalink, latest for the v3 board.
I've looked into this some more, and finally tried just power cycling the envisalink instead of just rebooting it. So far, that has seemed to fix it. I made a virtual keypad and even did a bunch of new programming on it, sending hundreds of keystrokes, with no problems! I also looked into the TPI and everything this integration does looks to be as it should be. I'm going to go ahead and clsoe this for now. If the problem persists, I'll see if I can fix it and submit a PR.