Visonic Powermax and Powermaster Integration

This is a mistake, as its TTL RS232 you need a common ground signal connected.

@davesmeghead Thank you. I added the ground wire (as instructed) changed the baud rate to 38400 as I’m on version 19.xx on the panel, re-loaded everything and bobs your uncle entities appear representing the sensors and the alarm panel!

If I might I’ve got a couple of suggestions.
The Wiki might benefit from an added sentence in the area under the Wemos example hardware. In the section marked ‘Serial’, change the sentence to;
“Connect the RX and TX pins from the Wemos to the TX and RX pins of the alarm panel connector PC/IP or PRG/PPA. Remember, TX to RX and RX to TX. Ensure that a common ground connection is made between the Wemos board and the IP port.”

Also I used your Esphome yaml definition and I’ve got a couple of suggestions for that.

I added a further variable to your secrets file;
esphome_encrypt: fgRjIJ3I/Flsjw83632bnfkd-0w2dfmbgvsjsw1uHUY=

where the key text you need to change to provide your own encryption key.

Then in the esphome file for the wemos, I’ve updated to the following;

substitutions:
  plug_name: "visonicinterface"

esphome:
  name: ${plug_name}
  platform: ESP8266
  board: d1_mini
  
external_components:
  - source: github://oxan/esphome-stream-server

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  reboot_timeout: 1800s               # ESPHome website says that it can have problems with this
  power_save_mode: none
  
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "${plug_name} Hotspot"
    password: !secret wifi_password
    ap_timeout: 600s
    manual_ip:
      static_ip: !secret network_ip
      gateway: !secret network_gateway
      subnet: !secret network_mask

  manual_ip:
    static_ip: !secret network_ip
    gateway: !secret network_gateway
    subnet: !secret network_mask

captive_portal:

# Disable logging
logger:
  level: DEBUG
  baud_rate: 0   # disables logging to the serial UART (as we are using it for other things)

time:
  - platform: homeassistant
    id: homeassistant_time

# Enable Home Assistant API
api:
  password: !secret device_password
  encryption:
    key: !secret esphome_encrypt
  services:
    - service: trigger_siren1
      then:
        - switch.turn_on: relay1
        - switch.turn_on: relay3
        - delay: 5s
        - switch.turn_off: relay1
        - switch.turn_off: relay3
    - service: trigger_siren2
      then:
        - switch.turn_on: relay2
        - switch.turn_on: relay4
        - delay: 5s
        - switch.turn_off: relay2
        - switch.turn_off: relay4
    - service: blink
      then:
        - switch.turn_on: blinky
        - delay: 5s
        - switch.turn_off: blinky

ota:
  password: !secret device_password

# Text sensors with general information
text_sensor:
  - platform: version
    name: "${plug_name} Version"
  - platform: wifi_info
    ip_address:
      name: "${plug_name} IP"
    ssid:
      name: "${plug_name} SSID"
    bssid:
      name: "${plug_name} BSSID"

button:
  # Switch to restart the plug
  - platform: restart
    name: "${plug_name} Restart"

sensor:
  - platform: wifi_signal
    name: "${plug_name} WiFi Signal"
    update_interval: 60s

switch:
  - platform: gpio
    name: "visonic_interface_relay_trigger1"
    pin:
       number: 12
       inverted: True
       mode: OUTPUT_OPEN_DRAIN
    id: relay1
  - platform: gpio
    name: "visonic_interface_relay_trigger2"
    pin:
       number: 13
       inverted: True
       mode: OUTPUT_OPEN_DRAIN
    id: relay2
  - platform: gpio
    name: "visonic_interface_relay_trigger3"
    pin:
       number: 4
       mode: OUTPUT_OPEN_DRAIN
    id: relay3
  - platform: gpio
    name: "visonic_interface_relay_trigger4"
    pin:
       number: 14
       mode: OUTPUT_OPEN_DRAIN
    id: relay4
  - platform: gpio
    name: "visonic_interface_on_board_led"
    pin:
       number: D4
       inverted: True
       mode: OUTPUT
    id: blinky

uart:
  id: uart_bus_visonic
  baud_rate: !secret panel_baud_rate
  tx_pin: 1
  rx_pin: 3
  stop_bits: 1
  data_bits: 8
  parity: NONE

stream_server:
  id: my_stream
  uart_id: uart_bus_visonic
  port: !secret network_port

This adds a couple of useful entities including IP address and wifi signal strength for the wemos and also a restart button. It also adds encryption to the communication between the Wemos and HA since you’re communicating over wifi.

When the integration started working for me it has created a bunch of entities in HA for each of the sensors, the majority of the sensor type are correctly identified except;

  • Wireless Magnetic Contact Transmitter MC-303V 0-103795
  • SMD-429 PG2 Smoke & Heat Detector (868-1:025) 0-500326

It has also created a bunch of other entities which I’m not sure I understand why, they are;

Once again very much appreciate both the integration and the help you’ve provided in getting this working for me.

FYI: Even with traditional RS-232, there needs to be a path to a common reference point so each transmit signal stays within the operating range of the receiver.

https://en.wikipedia.org/wiki/RS-232#Voltage_levels

That’s good news, I’m pleased you got it working.

Thank’s for the suggestions, I’ll give it a go myself first

I need to know the device IDs for these to be able to add them. In the sensor attributes there should be an “Unknown_XX” where XX is the device number.

You have X10 devices registered in your panel. Either delete them from your panel settings or exclude them in the set up of the Integration in HA.

Yep, absolutely correct my bad :slight_smile:

The contact sensor is of type 44 and the smoke/heat detector is of type 30.
Hope that helps.

I saw the hint about enabling PGM and setting that to the * on the keyfob to trigger things. Great idea!
In the powermaster 30 panel, the pulse settings dont include toggle, just 2s, 4s etc.
I noticed the PGM switch in the integration in HA never turns off no matter what (unless you do something like enter panel settings and then exit them)

Is that by design/known, or some glitch?
I can turn it off at the end of any automatons I trigger from it turning on, but thought worth asking if thats expected behaviour

Lots of news in this post covering many different subjects…

New Integration Version
I’ve just released a version to Github and made it a HACS release, in it I’ve:

  • Added the 2 new PowerMaster sensors (44 and 30)
  • Changed the way the checksum on the messages is calculated (after working with the Powerlink module and PM30 panel in my test setup).

ESPHome and Wemos D1 R2
I’ve also updated the Wemos D1 R2 operation on the wiki to take the proposals from @Isablend in to account for use with ESPHome. The only thing I couldn’t get working was the encryption for the connection, it kept giving me an HA notification to keep re-entering the encryption key. I’ll look at this when I get a bit more time.

Zigbee
I’ve been experimenting with Zigbee and bought 2 XBee boards. I can run the various XBee examples and also transfer serial data back and forth between them when they are connected to 2 ESP32 boards.
i.e. ESP32 Board → Serial Wires Tx/Rx → XBee Board → Zigbee wireless → XBee Board → Serial Wires Tx/Rx → ESP32 Board
This was a dedicated connection using a unique PAN ID for those that know what I’m talking about :slight_smile:
I can do this in both directions using test code on both the ESP32 boards using Arduino. I’m getting old so I sent “Hello World” and a wrap around counter in both directions. Some of you will know what that means.
I then also managed to get the 2 XBee’s to join an Alexa Zigbee Controller. But then I couldn’t get them to communicate (although I could receive all the various packets going to my 2 Zigbee lights that I have).
I know all this because I also bought a Zigbee sniffer and so I can see all the Zigbee data flying through the air.
My goal is (maybe was) to support Xbee connection in the panel and connect that to Zigbee2MQTT to transfer the serial data to the integration and thereby add another way of communicating. I say “maybe was” above as my next step is to look at the zigbee2MQTT and how to integrate the serial transfer of data … and it looks complicated and daunting.

Powerlink and PM30
Some of you know that I bought a very cheap Powerlink module from Ebay and have it in my PM30 test panel. So I cut the tx and rx wires between the panel and the powerlink and connected them to an ESP32. So on the ESP32 I have:

  • A serial connection to the panel
  • A serial connection to the Powerlink
  • A wifi connection that gives me a connection to my Integration in HA.

I use an ESP32 module as it has multiple UART (RS232) ports.

Data from the:

  • Panel gets sent to both the Powerlink and HA.
  • Powerlink gets sent to the panel.
  • HA Integration gets sent to the panel.

I ensure that the data to the panel from both sources are proper messages and are not corrupted.

The only problem (limitation) that I have is that I have to have the HA Integration in “Force Standard” mode. The panel does not like getting doubled up powerlink commands and acknowledges. What this does mean is that there is a way to use a powerlink module in combination with this integration as long as it’s in “Force Standard” Mode. If anyone out there knows what I mean by all of this and wants to have a go then get in touch (and I’ll pass you the ESP32 code for the Arduino) but it is not something that I’m going to activly support.

I’ll now take a look at some of the other issues… :grin:

A new release to Github 0.8.2.4. This is also a HACS release.
After following the HA instruction here to add the integration_type to the manifest file, this causes hassfest and the integration to fail. I have reported this in the development forums here.
This update simply removes the integration_type entry from the manifest file.

I upgraded trough hacs yesterday, and my intergration fails now, although I could not see this in my events. I just noticed all sensors being unavailable…I guess this is because of the hassfest issue? Is there an Easy way to fall back to another version? I can see the panel state btw…

I uploaded a release that removes the integration_type line from the manifest. Try updating through HACS again, it should be version 0.8.2.4. If you already have this version then capture and show me a log file please so I can take a proper look.

Ok, nevermind. This was not it. Apparently it is not a good idea to upgrade the integration when the panel is armed :slight_smile: I did the upgrade while on vacation, since this never goes wrong normally. But when the panel is armed, the integration does not load properly. Its okay now after disarming and reloading.

OK, i’m just pleased that you got it sorted, i’ve never tried this before so i’m going to give it a go :slight_smile:

I’ve just bought a house with an ADT branded Visonic Powermax Express alarm with one MC-302 V PG2 W contact sensor and a number of PIR which I haven’t looked at yet to see which model (but I assume they are “Next PIR” (?))

I thought the easiest method - with limited experience - would be to use a UART, so I purchased a USB to TTL cable from Amazon which contains a prolific PL2303TA chip. I’ve connected it up to my panel using the information in this post

I can’t tell whether it has been picked up successfully by my Ubuntu server.

The output of lsusb is:
Bus 003 Device 006: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port

sudo dmesg | grep tty gives:
[2378231.263324] usb 3-1: pl2303 converter now attached to ttyUSB1

stty -F /dev/ttyUSB1 -a gives:

speed 9600 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke -flusho -extproc

I’ve installed the custom component in homeassistant but am consistently getting unable to connect errors:
Failed to connect into Visonic Alarm. Check Settings.

I enabled the logging and these are the entries related to the Visonic component:

2022-10-31 22:38:57.552 DEBUG (MainThread) [custom_components.visonic.pyvisonic] Initialising Protocol - Protocol Version 1.0.17.2
2022-10-31 22:38:57.554 DEBUG (MainThread) [custom_components.visonic.client] Initialising Client - Version 0.8.2.4
2022-10-31 22:38:57.556 INFO (MainThread) [custom_components.visonic] Starting Visonic Component
2022-10-31 22:38:57.563 DEBUG (MainThread) [custom_components.visonic] ************* create connection here **************
2022-10-31 22:38:57.563 INFO (MainThread) [custom_components.visonic] Starting Visonic with entry id=b1ce0a97f1e367fae206696e3ca73d01 configured panels=1
2022-10-31 22:38:57.563 DEBUG (MainThread) [custom_components.visonic] Panel Ident set up: panelident = 1   next auto panelident = 2
2022-10-31 22:38:57.563 DEBUG (MainThread) [custom_components.visonic.client] Exclude sensor list = []     Exclude x10 list = []
2022-10-31 22:38:57.563 DEBUG (MainThread) [custom_components.visonic] Setting client ID for entry id b1ce0a97f1e367fae206696e3ca73d01
2022-10-31 22:38:57.570 DEBUG (MainThread) [custom_components.visonic.client] ........... attempting connection
2022-10-31 22:38:57.570 DEBUG (MainThread) [custom_components.visonic.client] Visonic Connection Device Type is usb {<PyConfiguration.DownloadCode: 0>: '5650', <PyConfiguration.ForceStandard: 9>: True, <PyConfiguration.ForceAutoEnroll: 1>: True, <PyConfiguration.AutoSyncTime: 2>: True, <PyConfiguration.PluginLanguage: 3>: 'EN', <PyConfiguration.MotionOffDelay: 4>: 120.0, <PyConfiguration.SirenTriggerList: 5>: ['intruder'], <PyConfiguration.B0_Enable: 6>: False, <PyConfiguration.B0_Min_Interval_Time: 7>: 5, <PyConfiguration.B0_Max_Wait_Time: 8>: 30}
2022-10-31 22:38:57.572 DEBUG (MainThread) [custom_components.visonic.pyvisonic] Setting USB Options
2022-10-31 22:39:00.404 DEBUG (MainThread) [custom_components.visonic.pyvisonic] Waiting for Protocol Handler to Start
2022-10-31 22:39:01.442 DEBUG (MainThread) [custom_components.visonic.pyvisonic] Waiting for Protocol Handler to Start
2022-10-31 22:39:02.701 DEBUG (MainThread) [custom_components.visonic.pyvisonic] Waiting for Protocol Handler to Start
2022-10-31 22:39:03.703 DEBUG (MainThread) [custom_components.visonic.pyvisonic] Waiting for Protocol Handler to Start
2022-10-31 22:39:04.704 WARNING (MainThread) [custom_components.visonic.client] Failed to connect into Visonic Alarm. Check Settings.
2022-10-31 22:39:04.705 DEBUG (MainThread) [custom_components.visonic.client]           ........... Closing down Current Task

I’ve got a number of “Troubles” with the panel which I’m struggling to solve and do not want to have to get an engineer to fix. I’m hoping to either get the panel integrated in home assistant or bin the whole system.

Annoyingly, I don’t have the installer code and I’ve tried all the default codes I can find. The last thing to try is a power cycle so see what that clears, but it’s late and my wife & child wouldn’t thank me if I trip the system at 11pm!

Any help you can give me would be much appreciated! If it helps I can reel off some of the trouble codes. I was wondering if I need to clear all of these before the panel will integrate?

Hello,

It was running smoothly since last year (and the last summer-winter change) and last week-end I lost the connection again because of the summer-winter time change.
I am using an “old” version 0.7.0.1 (because everything was running correctly, I haven’t upgraded in a while).

Here are the logs:

2022-10-30 02:06:13.944 DEBUG (MainThread) [custom_components.visonic.client] No Code Required as powerlink or std plus ********
2022-10-30 02:06:43.945 DEBUG (MainThread) [custom_components.visonic.client] No Code Required as powerlink or std plus ********
2022-10-30 02:07:01.735 DEBUG (MainThread) [custom_components.visonic.pyvisonic] [Controller] ****************************** WatchDog Timer Expired ********************************
2022-10-30 02:07:01.736 DEBUG (MainThread) [custom_components.visonic.pyvisonic] [Controller]               ******************* Trigger Restore Status *******************
2022-10-30 02:07:01.736 DEBUG (MainThread) [custom_components.visonic.client] Visonic update event 9 {'condition': 9}
2022-10-30 02:07:01.736 DEBUG (MainThread) [custom_components.visonic.pyvisonic] [_clearList] Setting queue empty
2022-10-30 02:07:01.737 DEBUG (MainThread) [custom_components.visonic.pyvisonic] [Controller]               Watchdog counter array, current=2
2022-10-30 02:07:01.737 DEBUG (MainThread) [custom_components.visonic.pyvisonic] [Controller]                       [86160, 86280, 86400, 0, 0, 0, 0, 0, 0, 0]
2022-10-30 02:07:01.772 DEBUG (MainThread) [custom_components.visonic.client] No Code Required as powerlink or std plus ********
2022-10-30 02:07:13.946 DEBUG (MainThread) [custom_components.visonic.client] No Code Required as powerlink or std plus ********
2022-10-30 02:07:43.947 DEBUG (MainThread) [custom_components.visonic.client] No Code Required as powerlink or std plus ********
2022-10-30 02:08:13.947 DEBUG (MainThread) [custom_components.visonic.client] No Code Required as powerlink or std plus ********
2022-10-30 02:08:43.949 DEBUG (MainThread) [custom_components.visonic.client] No Code Required as powerlink or std plus ********
2022-10-30 02:09:01.913 DEBUG (MainThread) [custom_components.visonic.pyvisonic] [Controller] ****************************** WatchDog Timer Expired ********************************
2022-10-30 02:09:01.913 DEBUG (MainThread) [custom_components.visonic.pyvisonic] [Controller]               ******************* Trigger Restore Status *******************
2022-10-30 02:09:01.916 DEBUG (MainThread) [custom_components.visonic.client] Visonic update event 9 {'condition': 9}
2022-10-30 02:09:01.916 DEBUG (MainThread) [custom_components.visonic.pyvisonic] [_clearList] Setting queue empty
2022-10-30 02:09:01.917 DEBUG (MainThread) [custom_components.visonic.pyvisonic] [Controller]               Watchdog counter array, current=3
2022-10-30 02:09:01.917 DEBUG (MainThread) [custom_components.visonic.pyvisonic] [Controller]                       [86040, 86160, 86280, 86400, 0, 0, 0, 0, 0, 0]
2022-10-30 02:09:01.952 DEBUG (MainThread) [custom_components.visonic.client] No Code Required as powerlink or std plus ********
2022-10-30 02:09:13.950 DEBUG (MainThread) [custom_components.visonic.client] No Code Required as powerlink or std plus ********
2022-10-30 02:09:43.952 DEBUG (MainThread) [custom_components.visonic.client] No Code Required as powerlink or std plus ********
2022-10-30 02:10:13.953 DEBUG (MainThread) [custom_components.visonic.client] No Code Required as powerlink or std plus ********
2022-10-30 02:10:40.055 ERROR (MainThread) [custom_components.visonic.pyvisonic] [Controller] Visonic Plugin has suspended all operations, there is a problem with the communication with the panel (i.e. data has not been received from the panel in 600 seconds)
2022-10-30 02:10:40.059 DEBUG (MainThread) [custom_components.visonic.client] Visonic update event 10 {'condition': 10}
2022-10-30 02:10:40.097 DEBUG (MainThread) [custom_components.visonic.client] No Code Required as code set in config

2022-10-30 02:59:14.077 DEBUG (MainThread) [custom_components.visonic.client] No Code Required as code set in config
2022-10-30 02:59:34.896 DEBUG (MainThread) [custom_components.visonic.pyvisonic] [sendPdu] Sending Command (Ack Long)    raw data 0d 02 43 ba 0a    waiting for message response []
2022-10-30 02:59:35.046 DEBUG (MainThread) [custom_components.visonic.pyvisonic] [sendPdu] Sending Command (Ack Long)    raw data 0d 02 43 ba 0a    waiting for message response []
2022-10-30 02:59:35.198 DEBUG (MainThread) [custom_components.visonic.pyvisonic] [sendPdu] Sending Command (Ack Long)    raw data 0d 02 43 ba 0a    waiting for message response []
2022-10-30 02:59:35.350 DEBUG (MainThread) [custom_components.visonic.pyvisonic] [sendPdu] Sending Command (Ack Long)    raw data 0d 02 43 ba 0a    waiting for message response []
2022-10-30 02:59:35.502 DEBUG (MainThread) [custom_components.visonic.pyvisonic] [sendPdu] Sending Command (Ack Long)    raw data 0d 02 43 ba 0a    waiting for message response []
2022-10-30 02:59:35.653 DEBUG (MainThread) [custom_components.visonic.pyvisonic] [sendPdu] Sending Command (Ack Long)    raw data 0d 02 43 ba 0a    waiting for message response []
2022-10-30 02:59:35.804 DEBUG (MainThread) [custom_components.visonic.pyvisonic] [sendPdu] Sending Command (Ack Long)    raw data 0d 02 43 ba 0a    waiting for message response []
2022-10-30 02:59:35.956 DEBUG (MainThread) [custom_components.visonic.pyvisonic] [sendPdu] Sending Command (Ack Long)    raw data 0d 02 43 ba 0a    waiting for message response []
2022-10-30 02:59:36.107 DEBUG (MainThread) [custom_components.visonic.pyvisonic] [sendPdu] Sending Command (Ack Long)    raw data 0d 02 43 ba 0a    waiting for message response []
2022-10-30 02:59:36.258 DEBUG (MainThread) [custom_components.visonic.pyvisonic] [sendPdu] Sending Command (Ack Long)    raw data 0d 02 43 ba 0a    waiting for message response []
2022-10-30 02:59:36.410 DEBUG (MainThread) [custom_components.visonic.pyvisonic] [sendPdu] Sending Command (Ack Long)    raw data 0d 02 43 ba 0a    waiting for message response []
2022-10-30 02:59:36.561 DEBUG (MainThread) [custom_components.visonic.pyvisonic] [sendPdu] Sending Command (Get Bypass Status)    raw data 0d a2 00 00 20 00 00 00 00 00 00 00 43 f9 0a    waiting for message response []
2022-10-30 02:59:36.562 DEBUG (MainThread) [custom_components.visonic.pyvisonic] [sendPdu] Resetting expected response counter, it got to 97   Response list length before 0  after 1
2022-10-30 02:59:36.562 DEBUG (MainThread) [custom_components.visonic.pyvisonic] [sendPdu] Suspended all operations, not sending PDU

Perhaps this issue was already solved with 0.8.2.4 ?
I’ll have to wait for next year to be sure.

I can help with that if we can connect and download the EPROM from the panel.

Lets check wiring first. I assume that you have only connected 3 of the 4 wires on that cable i.e. Gnd, Rx and Tx. Do not connect the 5v cable. Have you crossed Rx and Tx? e.g. the white TXD of the cable to Rx on the black panel connector and the green RXD connector to the Tx on the black panel connector.

This is where I need to know how clever you are with computers, forgive me for being blunt. I assume that as you’re using Linux you can do the following. Forget about HomeAssistant for now. Download my integration as a zip file from Github and unzip it. Go in to the examples subdirectory and follow the guide on the wiki here. Check the version of python on your system

python3 --version

This should be at least Python 3.9.X I think
Then I suggest that you type:

pip3 install -r requirements.txt
python3 complete_example.py -usb /dev/ttyUSB1

Remember to click in the bottom box of the aconsole and type “c” return.

Let me know how you get on with this and get back to me here if you have questions… :slight_smile:

EDIT: The only other thing that it might be is that the cable you’ve bought is 5v and the TTL levels of the panel are 3.75. You may need a level shifter.

This has been resolved, I can’t remember in which release. The Integration now uses 2 time sources. UTC time for all time calculations and time offsets. Local time to provide dates and times for when sensors are triggered etc. So the fact that it uses UTC time means that its OK, in fact mine worked across the time change last weekend.

I removed the red cable (5V) that I’d erroneously added, double checked that the TX and RX were in the right pins (they were).

I ran the python script - my computer skills are enough to debug this, but I’m lacking in figuring out interfacing issues like this.

The output of the script does not look promising…

python3 complete_example.py -usb /dev/ttyUSB1
Starting
General Exception
Goodbye cruel world

If you think it is my cable that is an issue, would you mind recommending something more appropriate to use? I have no experience with ESP32, Wemos etc so I’m more baffled there. The USB approached seemed the most straightforward as I’ve been able to relocate the alarm box into my office right next to my server.

I’ve tried to follow the wiki as best as possible. I have a Raspberry Pi W going spare if you think this might be more appropriate, but I couldn’t get my inexperienced head around what to do with the Wemos D1 for example.

On a side note I cleared all the troubles on the panel so it’s not that preventing it coming in to HA.

If complete_example exits with a general exception then chances are you’re using the wrong linux device. The problem I have is that I’ve never used it on linux, only windows. When you look in /dev does the device exist.

If you have a windows 10/11 PC then plug the USB cable in. Go to device manager and it should appear as a device in “Ports (COM & LPT)”, note down the COM number e.g.COM5

Install python3, install the library requirements (as per my previous post) and run complete_example like this from a Powershell window

python3 .\complete_example.py -usb \\.COM5\

To test it, one thing to try is my “loopback” test here on the wiki. Disconnect all cables from your panel and connect Rx to Tx on the USB cable you have. Run complete_example in the same way that you are, in the output log (in the Powershell window) you should see

[handle_msgtype0F] LOOPBACK TEST SUCCESS, Counter is 2

Where the counter value increments about every 5 seconds.

Thanks for the help. I don’t have access to a Windows PC where I can try this - only my locked down work laptop. After some digging on Ubuntu it’s just not picking up the device even though the drivers are installed.

I think the cable is the issue. I’m returning it and trying something that looks more suitable with 3.3V as standard. I’ll see how that goes and report back.

Just one question though - you said about reversing TX and RX - is it TX on the USB to TX on the alarm, or should it be TX on the USB to RX on the panel?

Connect Gnd to Gnd. Tx on the cable to Rx on the panel connector and Rx on the cable to Tx on the panel. If you are not using power from the panel to power the interface gadget then do not connect the Vcc (i.e. 5 volts / 3.3 volts). If you want to try the loopback test then ignore the panel and Tx to Rx on the cable itself.