Visonic Powermax and Powermaster Component

At this point, I think we should audit/validate the Visonic integration configuration. Dave, do you have any better ideas?

David R, can you list the file sizes, the location of the files, and whatever else you can. I remember having artifacts of HTML in my files when I first installed them. At the time, I was naïve enough to pull up the text in a browser and save them to a file.

As he’s running test.py from the pc and the ring back test worked I.e. what was sent was then received, I’m really confused.
Is there a way to run the visonic app and capture what is sent to and received from the panel itself. I can then look at the message structure to see if it’s different to what other panels like mine use. The protocol for a powermax might be different and the panel is ignoring my messages

That make at least two of us.

Funny you should mention that. I’ve bought a few things to make a monitor cable to do just that, but I have yet to put it all together. It would noninvasively sample both lines of traffic and send them to a terminal program on a PC. Unfortunately, I don’t have the spare time right now to pull it all together. Perhaps in the middle of the colder months…

A 3-way passive cable can do it, but only with bipolar RS-232 levels. Since PCs don’t have RS-232 serial ports anymore, one would need another USB-to-serial cable to do the sniffing. For logic levels, active ORing logic is needed to combine the two lines. It would only work for half-duplex communication. Thankfully, that’s what the panel uses.

https://www.lammertbies.nl/comm/cable/rs-232-spy-monitor

There are commercial products that can do it, albeit at a price.

https://www.com-port-monitoring.com/

Edit: A free version of a basic software sniffer is available; the advanced version has a 14-day evaluation period:

https://www.com-port-monitoring.com/downloads.html

Is there anything you can do at the startup of communication to “prime the pump”? Is there the equivalent of a “no-op” message? Another idea is to send several “XON” characters to ensure the panel is not in the “XOFF” state.

https://en.wikipedia.org/wiki/Software_flow_control

So, I set up my bridge.py and com0com so I could use the Visonic PRP App again and the first thing PRP sends is a download command (upload, depending on your view point), there’s no initialise, no nothing :frowning:
The only thing that the PRP seems to be interested in is upload and download commands, there’s no panel status etc etc.

So, David R, can you edit the pyvisonic.py file on your Windows PC and go from this

        self.reset_keep_alive_messages()
        #self.ClearList()
        #self.pmExpectedResponse = []
        self.sendInitCommand()
        if not self.ForceStandardMode:

to this

        self.reset_keep_alive_messages()
        #self.ClearList()
        #self.pmExpectedResponse = []
        #self.sendInitCommand()
        if not self.ForceStandardMode:

All you are doing is putting a “#” at the start of the line. The line should be around line 1077 in the file but I have made a few other minor changes, I’m sure you’ll figure it out.

When you have done this try running test.py from your Windows PC again, same as you did last time. Make sure that you have the RS232 connected to the panel.

Let me know the output of test.py again please

I tried it but as the port is used it wouldn’t connect, it insisted on being the only device attached to the port. I assumed that it would connect to an existing connection and “sniff” the data being transmitted and received. Any help on hwo to use it would be appreciated :slight_smile:

Hmm…that’s what I expected, too. I thought it would intercept the system calls to the comm port service and do man-in-the-middle stuff.

I’ll look for some documentation.

Here is the output:

python3 test.py -usb COM5
0:00:00.000955 < 3389>     INFO   Setting key OverrideCode to value -1
0:00:00.001455 < 3389>     INFO   Setting key ForceStandard to value False
DEBUG:asyncio:Using proactor: IocpProactor
0:00:00.039382 < 1034>     INFO   [Connection] Connected to local Protocol handler and Transport Layer
0:00:00.039382 < 1618>     INFO   [Start_Download] Starting download mode
C:\Users\david\OneDrive\Desktop\Hassio\Visonic\pyvisonic.py:1538: RuntimeWarning: coroutine 'wait_for' was never awaited
  asyncio.wait_for(t, None)
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
0:00:00.054127 < 1592>    DEBUG   [pmSendPdu] Resetting expected response counter, it got to 0   Response list before 0  after 1
C:\Users\david\OneDrive\Desktop\Hassio\Visonic\pyvisonic.py:1598: RuntimeWarning: coroutine 'wait_for' was never awaited
  asyncio.wait_for(t, None)
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
0:00:00.062185 < 1529>    DEBUG   [pmSendPdu] Sending Command (Start Download Mode)    raw data 0d 24 00 00 56 50 00 00 00 00 00 00 35 0a    waiting for message response ['0X3C']
0:00:00.083727 < 1278>    DEBUG   [data receiver] received data: 0d 02 fd
0:00:00.098675 < 1278>    DEBUG   [data receiver] received data: 0a 0d 08 f7 0a
0:00:00.099625 < 2344>    DEBUG   [handle_msgtype02] Ack Received  data =
0:00:00.107930 < 2372>     INFO   [handle_msgtype08] Access Denied  len 0 data
0:00:00.109886 < 2376>    DEBUG   [handle_msgtype08]                last command 24 00 00 56 50 00 00 00 00 00 00
0:00:00.119738 < 2386>    DEBUG   [handle_msgtype08] Got an Access Denied and we have sent a Download command to the Panel, so try to Enroll
0:00:00.125859 < 1618>     INFO   [Start_Download] Starting download mode
0:00:00.135700 < 1592>    DEBUG   [pmSendPdu] Resetting expected response counter, it got to 1   Response list before 0  after 1
0:00:00.194538 < 1529>    DEBUG   [pmSendPdu] Sending Command (Auto-Enroll of the PowerMax/Master)    raw data 0d ab 0a 00 00 56 50 00 00 00 00 00 43 60 0a    waiting for message response ['0X2']
0:00:02.594449 < 1278>    DEBUG   [data receiver] received data: 0d 08 f7 0a
0:00:02.595901 < 2372>     INFO   [handle_msgtype08] Access Denied  len 0 data
0:00:02.600897 < 2376>    DEBUG   [handle_msgtype08]                last command ab 0a 00 00 56 50 00 00 00 00 00 43
0:00:03.055218 < 1592>    DEBUG   [pmSendPdu] Resetting expected response counter, it got to 3   Response list before 0  after 1
0:00:03.056415 < 1529>    DEBUG   [pmSendPdu] Sending Command (Start Download Mode)    raw data 0d 24 00 00 56 50 00 00 00 00 00 00 35 0a    waiting for message response ['0X3C']
0:00:05.090569 < 1278>    DEBUG   [data receiver] received data: 0d 08
0:00:05.104341 < 1278>    DEBUG   [data receiver] received data: f7 0a
0:00:05.105631 < 2372>     INFO   [handle_msgtype08] Access Denied  len 0 data
0:00:05.107484 < 2376>    DEBUG   [handle_msgtype08]                last command 24 00 00 56 50 00 00 00 00 00 00
0:00:05.119841 < 2386>    DEBUG   [handle_msgtype08] Got an Access Denied and we have sent a Download command to the Panel, so try to Enroll
0:00:05.125863 < 1769>     INFO   [SendMsg_ENROLL] Warning: Trying to re enroll but not triggering download
0:00:05.128815 < 1592>    DEBUG   [pmSendPdu] Resetting expected response counter, it got to 2   Response list before 0  after 1
0:00:05.137588 < 1529>    DEBUG   [pmSendPdu] Sending Command (Auto-Enroll of the PowerMax/Master)    raw data 0d ab 0a 00 00 df fd 00 00 00 00 00 43 29 0a    waiting for message response ['0X2']
0:00:07.600128 < 1278>    DEBUG   [data receiver] received data: 0d 08 f7 0a
0:00:07.602081 < 2372>     INFO   [handle_msgtype08] Access Denied  len 0 data
0:00:07.607952 < 2376>    DEBUG   [handle_msgtype08]                last command ab 0a 00 00 df fd 00 00 00 00 00 43
0:00:10.094697 < 1278>    DEBUG   [data receiver] received data: 0d 08 f7 0a
0:00:10.096253 < 2372>     INFO   [handle_msgtype08] Access Denied  len 0 data
0:00:10.102032 < 2376>    DEBUG   [handle_msgtype08]                last command ab 0a 00 00 df fd 00 00 00 00 00 43
0:00:12.604544 < 1278>    DEBUG   [data receiver] received data: 0d 08 f7 0a
0:00:12.606329 < 2372>     INFO   [handle_msgtype08] Access Denied  len 0 data
0:00:12.612312 < 2376>    DEBUG   [handle_msgtype08]                last command ab 0a 00 00 df fd 00 00 00 00 00 43
0:00:15.101003 < 1278>    DEBUG   [data receiver] received data: 0d 08 f7 0a
0:00:15.102800 < 2372>     INFO   [handle_msgtype08] Access Denied  len 0 data
0:00:15.109781 < 2376>    DEBUG   [handle_msgtype08]                last command ab 0a 00 00 df fd 00 00 00 00 00 43
0:00:17.611604 < 1278>    DEBUG   [data receiver] received data: 0d 08 f7 0a
0:00:17.612606 < 2372>     INFO   [handle_msgtype08] Access Denied  len 0 data
0:00:17.618542 < 2376>    DEBUG   [handle_msgtype08]                last command ab 0a 00 00 df fd 00 00 00 00 00 43
0:00:20.106589 < 1278>    DEBUG   [data receiver] received data: 0d 08 f7 0a
0:00:20.108376 < 2372>     INFO   [handle_msgtype08] Access Denied  len 0 data
0:00:20.115355 < 2376>    DEBUG   [handle_msgtype08]                last command ab 0a 00 00 df fd 00 00 00 00 00 43
0:00:22.616880 < 1278>    DEBUG   [data receiver] received data: 0d 08 f7 0a
0:00:22.617842 < 2372>     INFO   [handle_msgtype08] Access Denied  len 0 data
0:00:22.621829 < 2376>    DEBUG   [handle_msgtype08]                last command ab 0a 00 00 df fd 00 00 00 00 00 43
0:00:25.111395 < 1278>    DEBUG   [data receiver] received data: 0d 08 f7 0a
0:00:25.111806 < 2372>     INFO   [handle_msgtype08] Access Denied  len 0 data
0:00:25.113803 < 2376>    DEBUG   [handle_msgtype08]                last command ab 0a 00 00 df fd 00 00 00 00 00 43
0:00:30.055228 < 1592>    DEBUG   [pmSendPdu] Resetting expected response counter, it got to 5   Response list before 0  after 1
0:00:30.056710 < 1529>    DEBUG   [pmSendPdu] Sending Command (I'm Alive Message To Panel)    raw data 0d ab 03 00 00 00 00 00 00 00 00 00 43 0e 0a    waiting for message response ['0X2']
0:02:11.054674 < 1576>     INFO   [SendCommand] Re-Sending last message  I'm Alive Message To Panel
0:02:11.055935 < 1604>    DEBUG   [ClearList] Setting queue empty
C:\Users\david\OneDrive\Desktop\Hassio\Visonic\pyvisonic.py:1580: RuntimeWarning: coroutine 'wait_for' was never awaited
  asyncio.wait_for(t, None)
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
ERROR:asyncio:Task exception was never retrieved
future: <Task finished name='Task-144' coro=<ProtocolBase.SendCommandAsync() done, defined at C:\Users\david\OneDrive\Desktop\Hassio\Visonic\pyvisonic.py:1542> exception=AttributeError("'NoneType' object has no attribute 'triedResendingMessage'")>
Traceback (most recent call last):
  File "C:\Users\david\OneDrive\Desktop\Hassio\Visonic\pyvisonic.py", line 1581, in SendCommandAsync
    self.pmLastSentMessage.triedResendingMessage = True
AttributeError: 'NoneType' object has no attribute 'triedResendingMessage'
ERROR:asyncio:Task exception was never retrieved
future: <Task finished name='Task-145' coro=<ProtocolBase.pmSendPdu() done, defined at C:\Users\david\OneDrive\Desktop\Hassio\Visonic\pyvisonic.py:1474> exception=AttributeError("'NoneType' object has no attribute 'command'")>
Traceback (most recent call last):
  File "C:\Users\david\OneDrive\Desktop\Hassio\Visonic\pyvisonic.py", line 1485, in pmSendPdu
    command = instruction.command
AttributeError: 'NoneType' object has no attribute 'command'
0:02:12.056102 < 1592>    DEBUG   [pmSendPdu] Resetting expected response counter, it got to 102   Response list before 0  after 1
0:02:12.057138 < 1529>    DEBUG   [pmSendPdu] Sending Command (I'm Alive Message To Panel)    raw data 0d ab 03 00 00 00 00 00 00 00 00 00 43 0e 0a    waiting for message response ['0X2']
0:03:53.056132 < 1576>     INFO   [SendCommand] Re-Sending last message  I'm Alive Message To Panel
0:06:51.611626 < 1604>    DEBUG   [ClearList] Setting queue empty
ERROR:asyncio:Task exception was never retrieved
future: <Task finished name='Task-249' coro=<ProtocolBase.SendCommandAsync() done, defined at C:\Users\david\OneDrive\Desktop\Hassio\Visonic\pyvisonic.py:1542> exception=AttributeError("'NoneType' object has no attribute 'triedResendingMessage'")>
Traceback (most recent call last):
  File "C:\Users\david\OneDrive\Desktop\Hassio\Visonic\pyvisonic.py", line 1581, in SendCommandAsync
    self.pmLastSentMessage.triedResendingMessage = True
AttributeError: 'NoneType' object has no attribute 'triedResendingMessage'
ERROR:asyncio:Task exception was never retrieved
future: <Task finished name='Task-250' coro=<ProtocolBase.pmSendPdu() done, defined at C:\Users\david\OneDrive\Desktop\Hassio\Visonic\pyvisonic.py:1474> exception=AttributeError("'NoneType' object has no attribute 'command'")>
Traceback (most recent call last):
  File "C:\Users\david\OneDrive\Desktop\Hassio\Visonic\pyvisonic.py", line 1485, in pmSendPdu
    command = instruction.command
AttributeError: 'NoneType' object has no attribute 'command'
0:06:51.678332 < 1592>    DEBUG   [pmSendPdu] Resetting expected response counter, it got to 102   Response list before 0  after 1
0:06:51.693045 < 1529>    DEBUG   [pmSendPdu] Sending Command (I'm Alive Message To Panel)    raw data 0d ab 03 00 00 00 00 00 00 00 00 00 43 0e 0a    waiting for message response ['0X2']
0:07:02.648833 < 1158>     INFO   [Controller] Trigger Panel Download Attempt
0:07:07.318465 < 1618>     INFO   [Start_Download] Starting download mode
0:07:07.331428 < 1592>    DEBUG   [pmSendPdu] Resetting expected response counter, it got to 11   Response list before 0  after 1
0:07:07.334421 < 1529>    DEBUG   [pmSendPdu] Sending Command (Start Download Mode)    raw data 0d 24 00 00 df fd 00 00 00 00 00 00 fd 0a    waiting for message response ['0X3C']
0:07:07.352372 < 1278>    DEBUG   [data receiver] received data: 0d
0:07:07.369112 < 1278>    DEBUG   [data receiver] received data: 02 fd 0a 0d 08 f7 0a
0:07:07.369326 < 2344>    DEBUG   [handle_msgtype02] Ack Received  data =
0:07:07.369326 < 2372>     INFO   [handle_msgtype08] Access Denied  len 0 data
0:07:07.378370 < 2376>    DEBUG   [handle_msgtype08]                last command 24 00 00 df fd 00 00 00 00 00 00
0:07:07.378370 < 2386>    DEBUG   [handle_msgtype08] Got an Access Denied and we have sent a Download command to the Panel, so try to Enroll
0:07:07.385284 < 1767>  WARNING   [SendMsg_ENROLL] Warning: Trying to re enroll, already tried DFFD and still not successful
0:07:09.863837 < 1278>    DEBUG   [data receiver] received data: 0d 08 f7 0a
0:07:09.865631 < 2372>     INFO   [handle_msgtype08] Access Denied  len 0 data
0:07:09.872661 < 2376>    DEBUG   [handle_msgtype08]                last command 24 00 00 df fd 00 00 00 00 00 00
0:07:09.878979 < 2386>    DEBUG   [handle_msgtype08] Got an Access Denied and we have sent a Download command to the Panel, so try to Enroll
0:07:09.880992 < 1767>  WARNING   [SendMsg_ENROLL] Warning: Trying to re enroll, already tried DFFD and still not successful
0:07:12.374861 < 1278>    DEBUG   [data receiver] received data: 0d 08 f7 0a
0:07:12.376104 < 2372>     INFO   [handle_msgtype08] Access Denied  len 0 data
0:07:12.382217 < 2376>    DEBUG   [handle_msgtype08]                last command 24 00 00 df fd 00 00 00 00 00 00
0:07:12.389758 < 2386>    DEBUG   [handle_msgtype08] Got an Access Denied and we have sent a Download command to the Panel, so try to Enroll
0:07:12.395644 < 1767>  WARNING   [SendMsg_ENROLL] Warning: Trying to re enroll, already tried DFFD and still not successful
0:07:14.870143 < 1278>    DEBUG   [data receiver] received data: 0d 08 f7 0a
0:07:14.871530 < 2372>     INFO   [handle_msgtype08] Access Denied  len 0 data
0:07:14.873580 < 2376>    DEBUG   [handle_msgtype08]                last command 24 00 00 df fd 00 00 00 00 00 00
0:07:14.876743 < 2386>    DEBUG   [handle_msgtype08] Got an Access Denied and we have sent a Download command to the Panel, so try to Enroll
0:07:14.884558 < 1767>  WARNING   [SendMsg_ENROLL] Warning: Trying to re enroll, already tried DFFD and still not successful
0:07:17.363611 < 1278>    DEBUG   [data receiver] received data: 0d 08
0:07:17.380267 < 1278>    DEBUG   [data receiver] received data: f7 0a
0:07:17.380880 < 2372>     INFO   [handle_msgtype08] Access Denied  len 0 data
0:07:17.382833 < 2376>    DEBUG   [handle_msgtype08]                last command 24 00 00 df fd 00 00 00 00 00 00
0:07:17.384821 < 2386>    DEBUG   [handle_msgtype08] Got an Access Denied and we have sent a Download command to the Panel, so try to Enroll
0:07:17.387820 < 1767>  WARNING   [SendMsg_ENROLL] Warning: Trying to re enroll, already tried DFFD and still not successful
0:07:19.874928 < 1278>    DEBUG   [data receiver] received data: 0d 08 f7 0a
0:07:19.876631 < 2372>     INFO   [handle_msgtype08] Access Denied  len 0 data
0:07:19.881906 < 2376>    DEBUG   [handle_msgtype08]                last command 24 00 00 df fd 00 00 00 00 00 00
0:07:19.884377 < 2386>    DEBUG   [handle_msgtype08] Got an Access Denied and we have sent a Download command to the Panel, so try to Enroll
0:07:19.891881 < 1767>  WARNING   [SendMsg_ENROLL] Warning: Trying to re enroll, already tried DFFD and still not successful

This is what it says on the website:

Serial Port Monitor can sniff data transmitted over a serial port even when it is already used by another application. You can connect to any of the COM ports available in your system and capture its data in real time. This will help you identify problems that may appear during serial communication and prevent them.

There’s no documentation, but there is a support page.

https://www.eltima.com/company/contacts/

The company is a bit sketchy, since their address is in the Caribbean on the island of Nevis, but their hours are listed as Central European Time. There’s a US telephone number with a Washington state area code. I called and it answered with a recorded message.

So, I went looking for another product and found this one:

https://www.commfront.com/collections/advanced-serial-protocol-analyzer

The free version has some basic capability, which I think is all we’ll need.

Thanks for that, it told me what I need to know. The comms with the panel seems to be working, my test.py program is just a front end for the normal HA Component to run it without needing HA. It is sending and receiving data to/from the panel.

When you see “[pmSendPdu] Sending Command” I send data to the panel.
When you see “[data receiver] received data:” I have received data from the panel.

When you commented out the line I asked you to, my code goes straight in to downloading the EPROM data. It tries to grab the EPROM data but the panel is refusing the connection, that is what all the “Access Denied” messages mean. I first of all try “56 50” as the download code and when that fails try “DF FD”. They both fail.
I’m wondering if the panel is too old. How old is the panel? It ignores the normal Exit, Initialise and Stop messages (which is what you commented out). It would be good to know what the Visonic PRP app sends to the panel to get it to download but what I normally send doesn’t work with your panel. Maybe the COM sniffer may be useful after all if you can get it working, just to record the comms between the Visonic APP and the Panel.

I need to have a think about it a bit more but at least we know that there is communication happening now and it isn’t a hardware/wiring problem. I’m still confused but now in a different way :slight_smile:

Baby steps, but progress nonetheless.

Yes, my panel is very old, It is (I think) the very first Visonic Powermax:


When I connect to the panel with the PRP I have to put the Download code to login and connect with the panel, shouldn’t test.py send that code?

Here is the troublesome Child:

Is the code not 5650, this is the standard download code for visonic panels.

Have you tried putting the download code into configuration.yaml? In the template, it’s commented out.

No, the code in my panel was 0000 and I changed it to 1111 two weeks ago to be able to use the PRP, I’m sorry, I didn’t know the standard download code was 5650, I’ve just changed it to 5650 and ran the test.py again, here is the output:

python3 test.py -usb COM5
0:00:00 < 3389>     INFO   Setting key OverrideCode to value -1
0:00:00.001172 < 3389>     INFO   Setting key ForceStandard to value False
DEBUG:asyncio:Using proactor: IocpProactor
0:00:00.036412 < 1034>     INFO   [Connection] Connected to local Protocol handler and Transport Layer
0:00:00.036412 < 1618>     INFO   [Start_Download] Starting download mode
C:\Users\david\OneDrive\Desktop\Hassio\Visonic\pyvisonic.py:1538: RuntimeWarning: coroutine 'wait_for' was never awaited
  asyncio.wait_for(t, None)
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
0:00:00.051145 < 1592>    DEBUG   [pmSendPdu] Resetting expected response counter, it got to 0   Response list before 0  after 1
C:\Users\david\OneDrive\Desktop\Hassio\Visonic\pyvisonic.py:1598: RuntimeWarning: coroutine 'wait_for' was never awaited
  asyncio.wait_for(t, None)
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
0:00:00.059721 < 1529>    DEBUG   [pmSendPdu] Sending Command (Start Download Mode)    raw data 0d 24 00 00 56 50 00 00 00 00 00 00 35 0a    waiting for message response ['0X3C']
0:00:00.080546 < 1278>    DEBUG   [data receiver] received data: 0d 02 fd 0a
0:00:00.081454 < 2344>    DEBUG   [handle_msgtype02] Ack Received  data =
0:00:00.096503 < 1278>    DEBUG   [data receiver] received data: 0d 22 fd 0a 01 16 15 00 0d 00 00 00 9c 0a
0:00:00.102645 < 1334>  WARNING   [data receiver] Warning : Construction of incoming packet unknown - Message Type 0X22
0:00:00.104954 < 1455>     INFO   [validatePDU] Not valid packet, CRC failed, may be ongoing and not final 0A
0:00:00.111914 < 1398>    DEBUG   [data receiver] Building PDU: Length is now 4 bytes (apparently PDU not complete)    0d 22 fd 0a     checksum calcs dd
0:00:00.123294 < 1354>  WARNING   [data receiver] Unhandled message 0x22
0:00:00.125321 < 1418>    DEBUG   [Sending ack] PowerlinkMode=False    Is PM Ack Reqd=False    This is an Ack for message=0X0
C:\Users\david\OneDrive\Desktop\Hassio\Visonic\pyvisonic.py:1431: RuntimeWarning: coroutine 'wait_for' was never awaited
  asyncio.wait_for(t, None)
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
0:00:00.189838 < 1529>    DEBUG   [pmSendPdu] Sending Command (Ack)    raw data 0d 02 fd 0a    waiting for message response ['0X3C']
0:00:19.244243 < 1278>    DEBUG   [data receiver] received data: 0d 06 f9 0a
0:00:19.245595 < 2357>     INFO   [handle_msgtype06] Timeout Received  data
0:00:19.252014 < 1529>    DEBUG   [pmSendPdu] Sending Command (Stop)    raw data 0d 0b f4 0a    waiting for message response []
0:00:19.258885 < 1531>    DEBUG   [pmSendPdu]          Command has a wait time after transmission 1.5
0:00:19.274482 < 1278>    DEBUG   [data receiver] received data: 0d 02 fd 0a 0d 08 f7 0a
0:00:19.279517 < 2344>    DEBUG   [handle_msgtype02] Ack Received  data =
0:00:19.290589 < 2372>     INFO   [handle_msgtype08] Access Denied  len 0 data
0:00:19.303554 < 2376>    DEBUG   [handle_msgtype08]                last command 0b
0:00:20.767327 < 1529>    DEBUG   [pmSendPdu] Sending Command (Exit)    raw data 0d 0f f0 0a    waiting for message response []
0:00:20.768274 < 1531>    DEBUG   [pmSendPdu]          Command has a wait time after transmission 1.5
0:00:20.778475 < 1278>    DEBUG   [data receiver] received data: 0d 02 fd 0a
0:00:20.783239 < 2344>    DEBUG   [handle_msgtype02] Ack Received  data =
0:00:22.683269 < 1278>    DEBUG   [data receiver] received data: 00
0:00:22.699171 < 1278>    DEBUG   [data receiver] received data: 58 08 08 42 00 58 08 08 42
0:00:22.714180 < 1278>    DEBUG   [data receiver] received data: 00
0:00:45.049245 < 1592>    DEBUG   [pmSendPdu] Resetting expected response counter, it got to 25   Response list before 0  after 1
0:00:45.050293 < 1529>    DEBUG   [pmSendPdu] Sending Command (I'm Alive Message To Panel)    raw data 0d ab 03 00 00 00 00 00 00 00 00 00 43 0e 0a    waiting for message response ['0X2']
0:02:26.050691 < 1576>     INFO   [SendCommand] Re-Sending last message  I'm Alive Message To Panel
0:02:26.051634 < 1604>    DEBUG   [ClearList] Setting queue empty
C:\Users\david\OneDrive\Desktop\Hassio\Visonic\pyvisonic.py:1580: RuntimeWarning: coroutine 'wait_for' was never awaited
  asyncio.wait_for(t, None)
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
ERROR:asyncio:Task exception was never retrieved
future: <Task finished name='Task-158' coro=<ProtocolBase.SendCommandAsync() done, defined at C:\Users\david\OneDrive\Desktop\Hassio\Visonic\pyvisonic.py:1542> exception=AttributeError("'NoneType' object has no attribute 'triedResendingMessage'")>
Traceback (most recent call last):
  File "C:\Users\david\OneDrive\Desktop\Hassio\Visonic\pyvisonic.py", line 1581, in SendCommandAsync
    self.pmLastSentMessage.triedResendingMessage = True
AttributeError: 'NoneType' object has no attribute 'triedResendingMessage'
ERROR:asyncio:Task exception was never retrieved
future: <Task finished name='Task-159' coro=<ProtocolBase.pmSendPdu() done, defined at C:\Users\david\OneDrive\Desktop\Hassio\Visonic\pyvisonic.py:1474> exception=AttributeError("'NoneType' object has no attribute 'command'")>
Traceback (most recent call last):
  File "C:\Users\david\OneDrive\Desktop\Hassio\Visonic\pyvisonic.py", line 1485, in pmSendPdu
    command = instruction.command
AttributeError: 'NoneType' object has no attribute 'command'
0:02:27.050932 < 1592>    DEBUG   [pmSendPdu] Resetting expected response counter, it got to 102   Response list before 0  after 1
0:02:27.052787 < 1529>    DEBUG   [pmSendPdu] Sending Command (I'm Alive Message To Panel)    raw data 0d ab 03 00 00 00 00 00 00 00 00 00 43 0e 0a    waiting for message response ['0X2']
0:04:08.050439 < 1576>     INFO   [SendCommand] Re-Sending last message  I'm Alive Message To Panel
0:04:08.050439 < 1604>    DEBUG   [ClearList] Setting queue empty
ERROR:asyncio:Task exception was never retrieved
future: <Task finished name='Task-263' coro=<ProtocolBase.SendCommandAsync() done, defined at C:\Users\david\OneDrive\Desktop\Hassio\Visonic\pyvisonic.py:1542> exception=AttributeError("'NoneType' object has no attribute 'triedResendingMessage'")>
Traceback (most recent call last):
  File "C:\Users\david\OneDrive\Desktop\Hassio\Visonic\pyvisonic.py", line 1581, in SendCommandAsync
    self.pmLastSentMessage.triedResendingMessage = True
AttributeError: 'NoneType' object has no attribute 'triedResendingMessage'
ERROR:asyncio:Task exception was never retrieved
future: <Task finished name='Task-264' coro=<ProtocolBase.pmSendPdu() done, defined at C:\Users\david\OneDrive\Desktop\Hassio\Visonic\pyvisonic.py:1474> exception=AttributeError("'NoneType' object has no attribute 'command'")>
Traceback (most recent call last):
  File "C:\Users\david\OneDrive\Desktop\Hassio\Visonic\pyvisonic.py", line 1485, in pmSendPdu
    command = instruction.command
AttributeError: 'NoneType' object has no attribute 'command'
0:04:09.050370 < 1592>    DEBUG   [pmSendPdu] Resetting expected response counter, it got to 102   Response list before 0  after 1
0:04:09.052083 < 1529>    DEBUG   [pmSendPdu] Sending Command (I'm Alive Message To Panel)    raw data 0d ab 03 00 00 00 00 00 00 00 00 00 43 0e 0a    waiting for message response ['0X2']
0:04:19.049606 < 1158>     INFO   [Controller] Trigger Panel Download Attempt
0:04:19.050444 < 1618>     INFO   [Start_Download] Starting download mode
0:04:19.057425 < 1592>    DEBUG   [pmSendPdu] Resetting expected response counter, it got to 10   Response list before 0  after 1
0:04:19.065551 < 1529>    DEBUG   [pmSendPdu] Sending Command (Start Download Mode)    raw data 0d 24 00 00 56 50 00 00 00 00 00 00 35 0a    waiting for message response ['0X3C']
0:07:20.049069 < 1142>  WARNING   [Controller] ********************** Download Timer has Expired, Download has taken too long *********************
0:07:20.049069 < 1143>  WARNING   [Controller] ************************************* Going to standard mode ***************************************
0:07:20.053058 < 1265>     INFO   [Standard Mode] Entering Standard Mode
0:07:20.063031 < 1604>    DEBUG   [ClearList] Setting queue empty
WARNING:__main__:Visonic attempt to add device with type <class 'int'>  device is 7
0:07:20.073999 < 1592>    DEBUG   [pmSendPdu] Resetting expected response counter, it got to 181   Response list before 0  after 1
0:07:20.076994 < 1529>    DEBUG   [pmSendPdu] Sending Command (Exit)    raw data 0d 0f f0 0a    waiting for message response ['0X2']
0:07:20.076994 < 1531>    DEBUG   [pmSendPdu]          Command has a wait time after transmission 1.5
0:07:21.580689 < 1529>    DEBUG   [pmSendPdu] Sending Command (Stop)    raw data 0d 0b f4 0a    waiting for message response ['0X2']
0:07:21.581682 < 1531>    DEBUG   [pmSendPdu]          Command has a wait time after transmission 1.5
0:07:23.080963 < 1529>    DEBUG   [pmSendPdu] Sending Command (Initializing PowerMax/Master PowerLink Connection)    raw data 0d ab 0a 00 01 00 00 00 00 00 00 00 43 06 0a    waiting for message response ['0X2']
0:07:23.081958 < 1531>    DEBUG   [pmSendPdu]          Command has a wait time after transmission 8.0
0:07:30.048804 < 1208>    DEBUG   [Controller] ****************************** Response Timer Expired ********************************
0:07:30.049812 < 1604>    DEBUG   [ClearList] Setting queue empty
0:07:30.060772 < 1592>    DEBUG   [pmSendPdu] Resetting expected response counter, it got to 0   Response list before 0  after 2
0:07:31.079530 < 1529>    DEBUG   [pmSendPdu] Sending Command (Getting Status)    raw data 0d a2 00 00 00 00 00 00 00 00 00 00 43 1a 0a    waiting for message response ['0XA5', '0X2']
0:07:40.048677 < 1208>    DEBUG   [Controller] ****************************** Response Timer Expired ********************************
0:07:40.049939 < 1604>    DEBUG   [ClearList] Setting queue empty
0:07:40.060441 < 1592>    DEBUG   [pmSendPdu] Resetting expected response counter, it got to 0   Response list before 0  after 2
0:07:40.062433 < 1529>    DEBUG   [pmSendPdu] Sending Command (Getting Status)    raw data 0d a2 00 00 00 00 00 00 00 00 00 00 43 1a 0a    waiting for message response ['0XA5', '0X2']
0:07:50.048874 < 1208>    DEBUG   [Controller] ****************************** Response Timer Expired ********************************
0:07:50.049977 < 1604>    DEBUG   [ClearList] Setting queue empty
0:07:50.056404 < 1592>    DEBUG   [pmSendPdu] Resetting expected response counter, it got to 0   Response list before 0  after 2
0:07:50.059413 < 1529>    DEBUG   [pmSendPdu] Sending Command (Getting Status)    raw data 0d a2 00 00 00 00 00 00 00 00 00 00 43 1a 0a    waiting for message response ['0XA5', '0X2']
0:08:00.048657 < 1208>    DEBUG   [Controller] ****************************** Response Timer Expired ********************************
0:08:00.049441 < 1604>    DEBUG   [ClearList] Setting queue empty
0:08:00.057424 < 1592>    DEBUG   [pmSendPdu] Resetting expected response counter, it got to 0   Response list before 0  after 2
0:08:00.059415 < 1529>    DEBUG   [pmSendPdu] Sending Command (Getting Status)    raw data 0d a2 00 00 00 00 00 00 00 00 00 00 43 1a 0a    waiting for message response ['0XA5', '0X2']

Yes I uncommented that line and put my download code in it

I’m guessing you tried the Visonic integration and it didn’t work. What will be your next experiment? Will you be trying the COMM port sniffer with the PRP software? Is there an option in the PRP software to update the firmware in the panel?

I did not find any Firmware update option in the PRP, App, don’t know if that is possible.
If you and Dave think that’s an option I will do the COM Port Sniffing, just tell me how.

Yes, I tried with no success.

I just looked at the features Commfront’s free software; it won’t allow the captured data to be saved to a file unless you buy the full product. However, I think this software might do the job.

https://www.windmill.co.uk/serial.html

The feature set includes “See all bytes sent and received, even non-printing characters like carriage returns.” I hope it has the ability to save it to a file.

There is some setup information on the webpage, but you’ll probably need to spend some time learning the features. You’d have to install the program, configure the communication parameters (baud rate, etc), identify the COMM port the PMP software is using, and then configure the sniffer to the same port. If all is working, you should see serial activity.

The goal is to capture some communication from the the PRP software and post it for Dave. The hope is to capture at least the EPROM download, perhaps more. I think Dave needs at least that much information.

If you can’t make any headway, let me know and I’ll see if I can get a working configuration here.