Ademco/Honeywell/Vista ESPHome custom component with an esp32/esp8266

Trying really hard to make this work … a while back I mentioned I noticed that when the system is armed, there are no “disconnections”. Recently, something else dawned on me … I started noticing the pattern that when something trips (either a contact sensor is open, or a motion sensor is triggered, etc.) that is when the availability drops.

image

In the screenshot, “status” is the system status of the alarm system. The blue is when it is disarmed as indicated in the screenshot, the white is when it is “unavailable”. That corresponds with all the times the “ready” sensor is not ready.

What triggered me noticing this pattern was that I had left the patio door open to get a nice breeze through the house, but during that whole time the system status was “unavailable” for all those hours.

It would be helpful if you could provide esphome logs to assist in diagnosing the issue. Right now, there is not enough info to identify where your issue resides.

Below is a log from esphome as motion sensor and door contact gets tripped and then restores itself. If there’s anything else specifically you’re looking for let me know.

[21:53:04][I][CMD:620]: 2023-05-25 21:53  F7 02 00 1F 10 08 00 1C 08 02 00 00 2A 
[21:53:04][I][INFO:911]: Display to partition: 01
[21:53:04][I][INFO:938]: Prompt: ****DISARMED**** 
[21:53:04][I][INFO:939]: Prompt:   Ready to Arm  
[21:53:04][I][INFO:940]: Beeps: 0

[21:53:05][D][binary_sensor:036]: 'Rear Motion': Sending state OFF
[21:53:05][D][text_sensor:064]: 'Zone Status': Sending state ''
[21:53:13][I][CMD:620]: 2023-05-25 21:53  F2 12 66 00 00 00 00 63 6C 02 45 6C F5 
[21:53:13][I][CMD:620]: 2023-05-25 21:53  F2 16 66 00 00 00 00 64 63 02 45 43 F5 
[21:53:14][I][CMD:620]: 2023-05-25 21:53  F7 02 00 1F 10 06 00 00 08 02 00 00 46 
[21:53:14][I][INFO:911]: Display to partition: 01
[21:53:14][D][text_sensor:064]: 'Line1': Sending state 'FAULT 06 REAR   '
[21:53:14][D][text_sensor:064]: 'Line2': Sending state 'MOTION          '
[21:53:14][I][INFO:938]: Prompt: FAULT 06 REAR    
[21:53:14][I][INFO:939]: Prompt: MOTION          
[21:53:14][I][INFO:940]: Beeps: 0

[21:53:14][D][binary_sensor:036]: 'Rear Motion': Sending state ON
[21:53:14][D][text_sensor:064]: 'System Status': Sending state 'unavailable'
[21:53:14][D][binary_sensor:036]: 'Ready': Sending state OFF
[21:53:14][D][text_sensor:064]: 'Zone Status': Sending state 'OP:6'
[21:53:17][I][CMD:620]: 2023-05-25 21:53  F2 12 66 00 00 00 00 65 6C 02 45 6C F5 
[21:53:17][D][text_sensor:064]: 'RF Msg': Sending state ''
[21:53:17][I][CMD:620]: 2023-05-25 21:53  F7 02 00 1F 10 03 00 00 08 02 00 00 46 
[21:53:17][I][INFO:911]: Display to partition: 01
[21:53:17][D][text_sensor:064]: 'Line1': Sending state 'FAULT 03 PATIO  '
[21:53:17][D][text_sensor:064]: 'Line2': Sending state 'DOOR            '
[21:53:17][I][INFO:938]: Prompt: FAULT 03 PATIO   
[21:53:17][I][INFO:939]: Prompt: DOOR            
[21:53:17][I][INFO:940]: Beeps: 0

[21:53:17][D][binary_sensor:036]: 'Patio Entry': Sending state ON
[21:53:17][D][text_sensor:064]: 'Zone Status': Sending state 'OP:3,OP:6'
[21:53:19][I][CMD:620]: 2023-05-25 21:53  F2 12 66 00 00 00 00 67 6C 02 45 6C F5 
[21:53:19][I][CMD:620]: 2023-05-25 21:53  F2 16 66 00 00 00 00 60 63 02 45 43 F5 
[21:53:19][I][CMD:620]: 2023-05-25 21:53  F7 02 00 1F 10 03 00 00 08 02 00 00 46 
[21:53:19][I][INFO:911]: Display to partition: 01
[21:53:19][I][INFO:938]: Prompt: FAULT 03 PATIO   
[21:53:19][I][INFO:939]: Prompt: DOOR            
[21:53:19][I][INFO:940]: Beeps: 0

[21:53:23][I][CMD:620]: 2023-05-25 21:53  F7 02 00 1F 10 03 00 00 08 02 00 00 46 
[21:53:23][I][INFO:911]: Display to partition: 01
[21:53:23][I][INFO:938]: Prompt: FAULT 03 PATIO   
[21:53:23][I][INFO:939]: Prompt: DOOR            
[21:53:23][I][INFO:940]: Beeps: 0

[21:53:24][I][CMD:620]: 2023-05-25 21:53  F2 12 66 00 00 00 00 61 6C 02 45 6C F5 
[21:53:24][I][CMD:620]: 2023-05-25 21:53  F2 16 66 00 00 00 00 62 63 02 45 43 F5 
[21:53:24][I][CMD:620]: 2023-05-25 21:53  F7 02 00 1F 10 08 00 1C 08 02 00 00 2A 
[21:53:24][I][INFO:911]: Display to partition: 01
[21:53:24][D][text_sensor:064]: 'Line1': Sending state '****DISARMED****'
[21:53:24][D][text_sensor:064]: 'Line2': Sending state '  Ready to Arm  '
[21:53:24][I][INFO:938]: Prompt: ****DISARMED**** 
[21:53:24][I][INFO:939]: Prompt:   Ready to Arm  
[21:53:24][I][INFO:940]: Beeps: 0

[21:53:24][D][text_sensor:064]: 'System Status': Sending state 'disarmed'
[21:53:24][D][binary_sensor:036]: 'Ready': Sending state ON
[21:53:28][I][CMD:620]: 2023-05-25 21:53  F7 02 00 1F 10 08 00 1C 08 02 00 00 2A 
[21:53:28][I][INFO:911]: Display to partition: 01
[21:53:28][I][INFO:938]: Prompt: ****DISARMED**** 
[21:53:28][I][INFO:939]: Prompt:   Ready to Arm  
[21:53:28][I][INFO:940]: Beeps: 0

[21:53:28][D][text_sensor:064]: 'Lrr Msg': Sending state ''
[21:53:28][D][text_sensor:064]: 'RF Msg': Sending state ''
[21:53:28][I][CMD:620]: 2023-05-25 21:53  FB 02 25 81 5D 00 00 00 00 00 00 00 00 
[21:53:28][I][EXT:620]: 2023-05-25 21:53  00 21 00 DF 00 00 00 00 00 00 00 00 74 
[21:53:29][I][CMD:620]: 2023-05-25 21:53  FB 02 20 60 83 00 00 00 00 00 00 00 00 
[21:53:29][I][EXT:620]: 2023-05-25 21:53  00 24 00 DC 00 00 00 00 00 00 00 00 74 
[21:53:38][I][CMD:620]: 2023-05-25 21:53  F7 02 00 1F 10 08 00 1C 08 02 00 00 2A 
[21:53:38][I][INFO:911]: Display to partition: 01
[21:53:38][I][INFO:938]: Prompt: ****DISARMED**** 
[21:53:38][I][INFO:939]: Prompt:   Ready to Arm  
[21:53:38][I][INFO:940]: Beeps: 0

[21:53:48][I][CMD:620]: 2023-05-25 21:53  F7 02 00 1F 10 08 00 1C 08 02 00 00 2A 
[21:53:48][I][INFO:911]: Display to partition: 01
[21:53:48][D][text_sensor:064]: 'Line1': Sending state '****DISARMED****'
[21:53:48][D][text_sensor:064]: 'Line2': Sending state '  Ready to Arm  '
[21:53:48][D][text_sensor:064]: 'Beeps': Sending state '0'
[21:53:48][I][INFO:938]: Prompt: ****DISARMED**** 
[21:53:48][I][INFO:939]: Prompt:   Ready to Arm  
[21:53:48][I][INFO:940]: Beeps: 0

[21:53:48][D][text_sensor:064]: 'System Status': Sending state 'disarmed'
[21:53:48][D][binary_sensor:036]: 'Rear Motion': Sending state OFF
[21:53:48][D][text_sensor:064]: 'Zone Status': Sending state 'OP:3'
[21:53:48][D][text_sensor:064]: 'RF Msg': Sending state ''

I’d really like to get this integration working. I think I’ve jumped through all the hoops but I don’t seem to get any changes when a zone is opened or closed. Here’s what I’ve done:

  • I have a VISTA 20p and it has the takeover module tied into the keypad bus for xfinity.
  • I removed the takeover module, activated the new keypad in the VISTA, added the takeover back and wired in the esphome node to the keypad bus.
  • I’m running the latest version of esphome.
  • I used the code from the DEV branch of this project
  • I’m using the “Non-isolated simple version (preferred)” wiring option from the DEV branch
  • I’ve also tried the stable release branch to no avail.
    When I open a door, the Prompt in the log will change to show that zone faulted but the sensor never toggles. I can provide any portion of the log you’d like to see but I think this is the relevant bit:
[14:38:22][D][text_sensor:064]: 'alarm8266 Living Room': Sending state 'C'
[14:38:23][D][text_sensor:064]: 'alarm8266 Basement windows': Sending state 'C'
[14:38:24][I][CMD:620]: 2023-05-27 14:38  F7 00 00 FF 00 00 00 1C 08 02 00 00 20 
[14:38:24][I][INFO:912]: Display to partition: 01
[14:38:24][I][INFO:939]: Prompt:     Disarmed     
[14:38:24][I][INFO:940]: Prompt:   Ready To Arm  
[14:38:24][I][INFO:941]: Beeps: 0

[14:38:26][D][text_sensor:064]: 'alarm8266 RF Msg': Sending state ''
[14:38:26][D][text_sensor:064]: 'alarm8266 zone 17': Sending state 'C'
[14:38:26][D][text_sensor:064]: 'alarm8266 Front door': Sending state 'C'
[14:38:28][I][CMD:620]: 2023-05-27 14:38  F7 00 00 FF 00 00 00 1C 08 02 00 00 20 
[14:38:28][I][INFO:912]: Display to partition: 01
[14:38:28][I][INFO:939]: Prompt:     Disarmed     
[14:38:28][I][INFO:940]: Prompt:   Ready To Arm  
[14:38:28][I][INFO:941]: Beeps: 0

[14:38:28][I][CMD:620]: 2023-05-27 14:38  F7 00 00 FF 00 02 00 00 08 02 00 00 20 
[14:38:28][I][INFO:912]: Display to partition: 01
[14:38:28][D][text_sensor:064]: 'alarm8266 Line2': Sending state 'Back Door'
[14:38:28][I][INFO:939]: Prompt:     Disarmed     
[14:38:28][I][INFO:940]: Prompt: Back Door
[14:38:28][I][INFO:941]: Beeps: 0

[14:38:28][D][text_sensor:064]: 'alarm8266 System Status': Sending state 'unavailable'
[14:38:28][D][binary_sensor:036]: 'alarm8266 Ready': Sending state OFF
[14:38:30][I][CMD:620]: 2023-05-27 14:38  FB 02 20 81 62 00 00 00 00 00 00 00 00 
[14:38:30][I][CMD:620]: 2023-05-27 14:38  F7 00 00 FF 00 02 00 00 08 02 00 00 20 
[14:38:30][I][INFO:912]: Display to partition: 01
[14:38:30][I][INFO:939]: Prompt:     Disarmed     
[14:38:30][I][INFO:940]: Prompt: Back Door
[14:38:30][I][INFO:941]: Beeps: 0

[14:38:30][I][CMD:620]: 2023-05-27 14:38  FB 02 20 80 5E 00 00 00 00 00 00 00 77 
[14:38:31][D][text_sensor:064]: 'alarm8266 Line2': Sending state 'Back Door'
[14:38:33][D][text_sensor:064]: 'alarm8266 Back door': Sending state 'C'
[14:38:33][D][text_sensor:064]: 'alarm8266 Empty Zone': Sending state 'C'
[14:38:34][D][text_sensor:064]: 'alarm8266 System Status': Sending state 'unavailable'
[14:38:34][I][CMD:620]: 2023-05-27 14:38  F7 00 00 FF 00 02 00 00 08 02 00 00 20 
[14:38:34][I][INFO:912]: Display to partition: 01
[14:38:34][I][INFO:939]: Prompt:     Disarmed     
[14:38:34][I][INFO:940]: Prompt: Back Door
[14:38:34][I][INFO:941]: Beeps: 0

I’m not sure how to read the F codes but here is another zone changing:

[14:41:10][D][text_sensor:064]: 'z10': Sending state 'C'
[14:41:10][D][text_sensor:064]: 'alarm8266 Beeps': Sending state '0'
[14:41:13][I][CMD:620]: 2023-05-27 14:41  F7 00 00 FF 00 00 00 1C 08 02 00 00 20 
[14:41:14][I][INFO:912]: Display to partition: 01
[14:41:14][I][INFO:939]: Prompt:     Disarmed     
[14:41:14][I][INFO:940]: Prompt:   Ready To Arm  
[14:41:14][I][INFO:941]: Beeps: 0

[14:41:14][D][text_sensor:064]: 'z9': Sending state 'C'
[14:41:14][D][text_sensor:064]: 'alarm8266 Laundry-Dining Room': Sending state 'C'
[14:41:15][D][text_sensor:064]: 'alarm8266 Office-Studio-Master Bath': Sending state 'C'
[14:41:16][I][CMD:620]: 2023-05-27 14:41  F7 00 00 FF 00 01 00 00 08 02 00 00 20 
[14:41:16][I][INFO:912]: Display to partition: 01
[14:41:16][D][text_sensor:064]: 'alarm8266 Line2': Sending state 'Front Door'
[14:41:16][I][INFO:939]: Prompt:     Disarmed     
[14:41:16][I][INFO:940]: Prompt: Front Door
[14:41:16][I][INFO:941]: Beeps: 0

[14:41:16][D][text_sensor:064]: 'alarm8266 System Status': Sending state 'unavailable'
[14:41:16][D][binary_sensor:036]: 'alarm8266 Ready': Sending state OFF
[14:41:17][D][text_sensor:064]: 'alarm8266 Empty Zone': Sending state 'C'
[14:41:18][I][CMD:620]: 2023-05-27 14:41  F7 00 00 FF 00 01 00 00 08 02 00 00 20 
[14:41:18][I][INFO:912]: Display to partition: 01
[14:41:18][I][INFO:939]: Prompt:     Disarmed     
[14:41:18][I][INFO:940]: Prompt: Front Door
[14:41:18][I][INFO:941]: Beeps: 0

[14:41:20][D][text_sensor:064]: 'alarm8266 Line1': Sending state '    Disarmed    '
[14:41:21][I][CMD:620]: 2023-05-27 14:41  F7 00 00 FF 00 01 00 00 08 02 00 00 20 
[14:41:21][I][INFO:912]: Display to partition: 01
[14:41:21][I][INFO:939]: Prompt:     Disarmed     
[14:41:21][I][INFO:940]: Prompt: Front Door
[14:41:21][I][INFO:941]: Beeps: 0

[14:41:22][D][text_sensor:064]: 'alarm8266 Living Room': Sending state 'C'
[14:41:23][I][CMD:620]: 2023-05-27 14:41  FB 02 20 81 62 00 00 00 00 00 00 00 00 
[14:41:23][D][text_sensor:064]: 'alarm8266 Basement windows': Sending state 'C'
[14:41:23][I][CMD:620]: 2023-05-27 14:41  FB 02 20 80 5E 00 00 00 00 00 00 00 77 
[14:41:25][I][CMD:620]: 2023-05-27 14:41  F7 00 00 FF 00 01 00 00 08 02 00 00 20 
[14:41:25][I][INFO:912]: Display to partition: 01
[14:41:25][I][INFO:939]: Prompt:     Disarmed     
[14:41:25][I][INFO:940]: Prompt: Front Door
[14:41:25][I][INFO:941]: Beeps: 0

[14:41:26][D][text_sensor:064]: 'alarm8266 RF Msg': Sending state ''
[14:41:26][D][text_sensor:064]: 'alarm8266 zone 17': Sending state 'C'
[14:41:26][D][text_sensor:064]: 'alarm8266 Front door': Sending state 'C'
[14:41:29][I][CMD:620]: 2023-05-27 14:41  F7 00 00 FF 00 01 00 00 08 02 00 00 20 
[14:41:29][I][INFO:912]: Display to partition: 01
[14:41:29][I][INFO:939]: Prompt:     Disarmed     
[14:41:29][I][INFO:940]: Prompt: Front Door
[14:41:29][I][INFO:941]: Beeps: 0

[14:41:29][D][text_sensor:064]: 'alarm8266 Lrr Msg': Sending state ''
[14:41:29][D][text_sensor:064]: 'alarm8266 RF Msg': Sending state ''
[14:41:29][D][text_sensor:064]: 'alarm8266 RF Msg': Sending state ''
[14:41:32][D][text_sensor:064]: 'alarm8266 Line2': Sending state 'Front Door'
[14:41:33][D][text_sensor:064]: 'alarm8266 Back door': Sending state 'C'
[14:41:33][I][CMD:620]: 2023-05-27 14:41  F7 00 00 FF 00 01 00 00 08 02 00 00 20 
[14:41:35][I][INFO:912]: Display to partition: 01
[14:41:35][I][INFO:939]: Prompt:     Disarmed     
[14:41:35][I][INFO:940]: Prompt: Front Door
[14:41:35][I][INFO:941]: Beeps: 0

Thank you for creating this. Please feel free to teach me to fish.

The problem is the data received from your panel. Very odd. The message should indicate “FAULT xx” where xx is the zone. The firmware needs that info to determine that there is a fault. Unfortunately the vista does not set flags that I could find to indicate a “fault” status so I need to rely on the actual panel message. For some reason yours is only showing “Disarmed”. Heres a sample fo what it should look like:
[09:20:09][I][INFO:939]: Prompt: FAULT 04 AIR
[09:20:09][I][INFO:940]: Prompt: AREA
[09:20:09][I][INFO:941]: Beeps: 0

Yes, “unavailable” status is what is displayed with the system is not ready to be armed. Meaning that that it can’t be armed at that time. That response is used because some panel cards expect that. That’s not a fault.

Isn’t that what the “ready” sensor is for? to show that the system is not ready to be armed …
You mean that the alarm status is meant to go from “disarmed” to “unavailable” when if I’m at home and forgot to close the door just before 8am (e.g. screenshot below)?

Screen Shot 2023-05-28 at 10.12.39

Different state indicators for different purposes. The ready sensor is a binary on or off. The Unavailable is a message status that indicates various system states that is used by certain panel cards. Use whichever one you want. Unavailable is when the system is disarmed but has open zones. If you don’t like that state message change it yourself to whatever you want. in the paneltext.h file

Thanks for the quick reply!
So I’m not getting the FAULT and I’m guessing I’m not going to find a way around that.
What section would I need to go hacking to read the line 2? I’m just trying to use door open to trigger things so I don’t need exact integration.

There’s a way but needs code changes in order to only depend on flags and the zone byte from the f7 cmd. I’ll have a look to see what is needed.

Do you have a link to some documentation on decoding the F7 command? I’d like to understand what the commands are telling me.

Thanks for the info! It’s not that I would like for it to say something else other than ‘unavailable’, but I just didn’t want it to change the status of the alarm system. So I went into the paneltxt.h file and found the variable STATUS_NOT_READY storing the “unavailable” text and did some more digging to comment out in the vistaalarm.h file the cases that refer to the above.

I wouldn’t be surprised if I ran into some weird side effects functionally down the road, but thus far it’s still behaving as intended. It does cause some additional warnings I didn’t have before when compiling to the esp8266 device though. Everything still uploads and has been running for about a day since the modification. Previous warnings mentioned something about a deprecated function (which I just ignored).

Why not take an opposite view. Don’t hack the code. Whereever you wish to display the status, check if the state is unavailable and display “Not Ready”. That way you get what you want without changes or breaking anything.

It’s not a read-out of anything I’m looking to add where text sensors can be adjusted, it’s just the standard alarm control panel.

The alarm card is fine normally as seen above. When anything trips, I get the below.

I don’t expect it to be tailored to my preference so I’m happy to use it as-is provided (and trust me I’m happy that this is available for our use) and tinker with small things.

No documentation. All in my head. Look at vista.h for the bit mask defines and function onDisplay in vista.cpp to see how the f7 packet is handled.

I don’t get why you had to comment out the code. Like was noted above you could have simply changed the text in the paneltext.h. That’s what the file is for. To customize to locale needs. If you wanted to still show "disarmed’ even when not ready, you could have simply changed it to “Disarmed”.

so in decoding this I’m looking at it in decimal as:
0,0,255,0,0,0,28,8,2,0,0,32
I know there is some part at the beginning that masks the panel ID the message is being sent to.
The resultant prompt after this message is Ready to Arm. vista.h shows ready to arm as 0x10 or 16. I don’t see 16 anywhere in this F7 message.
Where does byte 1,2,3 start in this example?
Where is the zone number that is faulted when it does fault?
Sorry to be pestering, I really appreciate all your work on this.

I’ve been happily using this hardware & plugin and just thought to create a panic button, but the ESPHome: vistaalarm_alarm_trigger_panic service doesn’t do anything. I’ve tried user and the master codes. Anyone successfully used this service? Any other way to trigger a panic alarm?
Vista 20p

The panic service hasnt been implemented as yet but instead you can send the following commands via the “alarm_keypress” service. For zone 95 (usually Fire), send command “F”. For zone 96 send command “P”. For zone 99 send command “M”. For zone 92, send command “G”.
For functions keys A to D send “A”, “B”, “C”, “D”

1 Like

That worked PERFECT! Thanks.