Ciao Alain,
Thank you very much for your effort! This project is amazing!
I currently have an Ademco Vista 25IT, that so far seems to be the italian version of the Vista 20SEa, with the following list of devices:
- 1 relay 4148 (not sure where and how it is used)
- RF receiver 5881 H
- PIR sensor 998 EX (I think)
- PIR sensor 5890
- 2 keyfobs 5804
- lot of wireless contact + break sensors
I followed the doc you wrote and assembled the ground isolated version of the circuit using a pair of 100kohm + 5.1kohm in parallel to make the 4.7kohm resistors (actually 4.85252 kohm) and a pair of 220ohm + 1kohm in parallel to make the 180 ohm resistor.
Used ESP8266 wemos D1 R2. (pin mapping is the same of your example). (I used the 4N35 optocouplers)
Zones/addresses:
- 3 (pir w/ cable)
- 4 (pir w/ cable)
- 8 (panel tampering)
- 10-26 (contact + break sensors)
- 27 (wireless pir)
- 28-35 (key fobs I think)
I'm not sure about the keypad address, looking at the manual, it seems that it should be at address 31, but I'm really not sure about it.
The address I set on the yaml file is 36.
lrr is set to true. (don't have one)
I made the following changes to the code to make it work with my panel:
// Italian language adaptation in vistaAlarm.h
// hoping it is appreciated, here are the translations...
const char *const FAULT = "APERT";
const char *const BYPAS = "ESCL.";
const char *const ALARM = "ALARM";
const char *const FIRE = "INCEND";
const char *const CHECK = "VERIF";
const char *const CLOSED = "CLOSED"; //not used
const char *const OPEN = "OPEN"; //not used
const char *const ARMED = "INSERIM.";
const char *const HITSTAR = "SPENTO Premi* e ";
const char *const HITSTAR_ALT = "Premere *"; // sometimes it is displayed like this
...
if (strstr(vista.statusFlags.prompt, HITSTAR) || strstr(vista.statusFlags.prompt, HITSTAR_ALT))
vista.write('*');
// Status processing in vista.cpp
I need to discard messages that contain only zeroes otherwise I'm not able to retrieve anything from the panel
void Vista::processStatus(char cbuf[], int *idx)
{
// Before the for loop, discard only 00 packets
bool onlyZeroes = true;
for (int x = 0; x <= 10; x++)
{
if (cbuf[x] != 0)
{
onlyZeroes = false;
break;
}
}
if (onlyZeroes)
return;
...
I plugged it to the bus and it works, I can read the bus and send commands to the panel.
The problem is that sometimes I get a lot of false positives, specially when I bypass a zone. This results in wrong reporting of the panel status (Alarm flag, Armed status, Bypassed zones reset, ...)
After a brief investigation I found out that this is because these messages that are sometimes sent to the panel (not sent together)
[..:..:..][I][CMD:432]: 31 C3 0A 00 00 00 00 00 00 00 00 00 00
or
[..:..:..][I][CMD:432]: B1 0D 6B 00 00 00 00 00 00 00 00 00 00
or (most of the times)
[..:..:..][I][CMD:432]: 0E 00 00 00 00 00 00 00 00 00 00 00 00
Only zeroes example
// Filtered out the "sending state C for sensor XYZ"
[16:07:02][I][CMD:436]: FB 02 20 82 61 00 00 00 00 00 00 00 00
[16:07:02][I][EXT:436]: 00 24 03 D9 00 00 00 00 00 00 00 00 74
[16:07:03][I][CMD:436]: 27 00 1C 18 00 00 00 00 00 00 00 00 00
[16:07:03][I][CMD:436]: 00 00 00 00 00 00 00 00 00 00 00 00 00
[16:07:05][I][CMD:436]: FE 65 72 20 20 00 00 00 00 00 00 00 00
[16:07:05][I][INFO:696]: Prompt: SPENTO ZONE ESC //bypass is on on zone 10 that is not working
[16:07:05][I][INFO:697]: Prompt: Si puo' inser
[16:07:05][I][INFO:698]: Beeps: 0
[16:07:05][D][DEBUG:886]: ac=1,batt status = 0,systemflag=1,lightbat status=0,trouble=0
[16:07:10][D][DEBUG:566]: 30 second time check
[16:07:14][I][CMD:436]: 27 00 1C 18 00 00 00 00 00 00 00 00 00
[16:07:14][I][CMD:436]: 00 00 00 00 00 00 00 00 00 00 00 00 00
[16:07:16][I][CMD:436]: FE 65 72 20 20 00 00 00 00 00 00 00 00
[16:07:16][I][INFO:696]: Prompt: SPENTO ZONE ESC //bypass is on on zone 10 that is not working
[16:07:16][I][INFO:697]: Prompt: Si puo' inser
[16:07:16][I][INFO:698]: Beeps: 0
Some other interesting logs
// Filtered out the "sending state C for sensor XYZ"
[16:10:55][I][CMD:436]: 27 00 1C 18 00 00 00 00 00 00 00 00 00
[16:10:56][I][CMD:436]: 00 00 00 00 00 00 00 00 00 00 00 00 00
[16:10:57][I][CMD:436]: FE 65 72 20 20 00 00 00 00 00 00 00 00
[16:10:57][I][INFO:696]: Prompt: SPENTO ZONE ESC
[16:10:57][I][INFO:697]: Prompt: Si puo' inser
[16:10:57][I][INFO:698]: Beeps: 0
[16:10:57][D][DEBUG:886]: ac=1,batt status = 0,systemflag=1,lightbat status=0,trouble=0
[16:11:06][I][CMD:436]: 27 00 1C 18 00 00 00 00 00 00 00 00 00
[16:11:07][I][CMD:436]: 00 00 00 00 00 00 00 00 00 00 00 00 00
[16:11:08][I][CMD:436]: FE 65 72 20 20 00 00 00 00 00 00 00 00
[16:11:08][I][INFO:696]: Prompt: SPENTO ZONE ESC
[16:11:08][I][INFO:697]: Prompt: Si puo' inser
[16:11:08][I][INFO:698]: Beeps: 0
[16:11:08][D][DEBUG:886]: ac=1,batt status = 0,systemflag=1,lightbat status=0,trouble=0
[16:11:09][D][DEBUG:566]: 30 second time check
[16:11:17][I][CMD:436]: FB 02 25 81 5D 00 00 00 00 00 00 00 00
[16:11:18][I][CMD:436]: 27 00 1C 18 00 00 00 00 00 00 00 00 00
[16:11:18][I][CMD:436]: B1 0D 6B 00 00 00 00 00 00 00 00 00 00
[16:11:18][I][CMD:436]: FB 02 20 82 61 00 00 00 00 00 00 00 00
[16:11:18][I][EXT:436]: 00 24 03 D9 00 00 00 00 00 00 00 00 74
[16:11:20][I][CMD:436]: FE 65 72 20 20 00 00 00 00 00 00 00 00
[16:11:20][I][INFO:696]: Prompt: SPENTO ZONE ESC
[16:11:20][I][INFO:697]: Prompt: Si puo' inser
[16:11:20][I][INFO:698]: Beeps: 5
[16:11:20][D][text_sensor:067]: 'vistaalarm Beeps': Sending state '5'
[16:11:20][D][DEBUG:886]: ac=0,batt status = 0,systemflag=0,lightbat status=0,trouble=0
[16:11:20][D][text_sensor:067]: 'vistaalarm System Status': Sending state 'triggered'
[16:11:20][D][binary_sensor:036]: 'vistaalarm Fire': Sending state ON
[16:11:20][D][binary_sensor:036]: 'vistaalarm Trouble': Sending state ON
[16:11:20][D][binary_sensor:036]: 'vistaalarm AC': Sending state OFF
[16:11:20][D][binary_sensor:036]: 'vistaalarm Bypass': Sending state OFF
[16:11:20][D][binary_sensor:036]: 'vistaalarm Ready': Sending state OFF
[16:11:23][D][text_sensor:067]: 'vistaalarm System Status': Sending state 'triggered'
[16:11:25][D][text_sensor:067]: 'vistaalarm Beeps': Sending state '5'
[16:11:28][I][CMD:436]: FB 02 25 81 5D 00 00 00 00 00 00 00 00
[16:11:28][I][EXT:436]: 00 21 40 9F 00 00 00 00 00 00 00 00 74
[16:11:29][I][CMD:436]: 27 00 1C 18 00 00 00 00 00 00 00 00 00
[16:11:29][I][CMD:436]: 00 00 00 00 00 00 00 00 00 00 00 00 00
[16:11:31][I][CMD:436]: FE 65 72 20 20 00 00 00 00 00 00 00 00
[16:11:31][I][INFO:696]: Prompt: SPENTO ZONE ESC
[16:11:31][I][INFO:697]: Prompt: Si puo' inser
[16:11:31][I][INFO:698]: Beeps: 0
What can I do? Thank you in advance!