These things are often generic, and not 'elegant'
eg google finds this option
https://denkovi.com/Documents/USB-Relay-16Channels-v3/UserManual.pdfand also this
https://www.sainsmart.com/products/16-channel-9-36v-usb-relay-moduleSeems to use a variant of intel hex ASCII packets, (choice of 36) and somewhat inefficient at 15 chars incl checksum, with relay ID and 0x00 or 0xff for off / on.
and even closer may be this - has same STC MCU, and similar/same PCB design (similar intel hex ascii strings as above )
https://www.aliexpress.us/item/1005001666658945.htmlStatus query 3A 46 45 30 31 30 30 30 30 30 30 31 30 46 31 0D 0A
State return value 3A 46 45 30 31 30 30 32 30 30 30 30 30 46 46 0D 0A
1st way open 3A 46 45 30 35 30 30 30 30 46 46 30 30 46 45 0D 0A
Pass 1 3A 46 45 30 35 30 30 30 30 30 30 30 30 30 46 44 0D 0A
2nd road open 3A 46 45 30 35 30 30 30 31 46 46 30 30 46 44 0D 0A
Pass 2 3A 46 45 30 35 30 30 30 31 30 30 30 30 46 43 0D 0A
No. 3 open 3A 46 45 30 35 30 30 30 32 46 46 30 30 46 43 0D 0A
The third pass 3A 46 45 30 35 30 30 30 32 30 30 30 30 46 42 0D 0A
4th road open 3A 46 45 30 35 30 30 30 33 46 46 30 30 46 42 0D 0A
4th pass 3A 46 45 30 35 30 30 30 33 30 30 30 30 46 41 0D 0A
Open No. 5 3A 46 45 30 35 30 30 30 34 46 46 30 30 46 41 0D 0A
5th pass 3A 46 45 30 35 30 30 30 34 30 30 30 30 46 39 0D 0A
No. 6 open 3A 46 45 30 35 30 30 30 35 46 46 30 30 46 39 0D 0A
The 6th pass 3A 46 45 30 35 30 30 30 35 30 30 30 30 46 38 0D 0A
No. 7 open 3A 46 45 30 35 30 30 30 36 46 46 30 30 46 38 0D 0A
Pass 7 3A 46 45 30 35 30 30 30 36 30 30 30 30 46 37 0D 0A
No. 8 open 3A 46 45 30 35 30 30 30 37 46 46 30 30 46 37 0D 0A
8th pass 3A 46 45 30 35 30 30 30 37 30 30 30 30 46 36 0D 0A
No. 9 open 3A 46 45 30 35 30 30 30 38 46 46 30 30 46 36 0D 0A
The 9th pass 3A 46 45 30 35 30 30 30 38 30 30 30 30 46 35 0D 0A
No. 10 open 3A 46 45 30 35 30 30 30 39 46 46 30 30 46 35 0D 0A
Pass 10 3A 46 45 30 35 30 30 30 39 30 30 30 30 46 34 0D 0A
11th road open 3A 46 45 30 35 30 30 30 41 46 46 30 30 46 34 0D 0A
Pass 11 3A 46 45 30 35 30 30 30 41 30 30 30 30 46 33 0D 0A
No. 12 open 3A 46 45 30 35 30 30 30 42 46 46 30 30 46 33 0D 0A
Pass 12 3A 46 45 30 35 30 30 30 42 30 30 30 30 46 32 0D 0A
13th road open 3A 46 45 30 35 30 30 30 43 46 46 30 30 46 32 0D 0A
Pass 13 3A 46 45 30 35 30 30 30 43 30 30 30 30 46 31 0D 0A
Open No. 14 3A 46 45 30 35 30 30 30 44 46 46 30 30 46 31 0D 0A
Pass 14 3A 46 45 30 35 30 30 30 44 30 30 30 30 46 30 0D 0A
15th road open 3A 46 45 30 35 30 30 30 45 46 46 30 30 46 30 0D 0A
Pass 15 3A 46 45 30 35 30 30 30 45 30 30 30 30 46 46 0D 0A
16th road open 3A 46 45 30 35 30 30 30 46 46 46 30 30 46 46 0D 0A
Pass 16 3A 46 45 30 35 30 30 30 46 30 30 30 30 46 45 0D 0A
Fully open 3A 46 45 30 46 30 30 30 30 30 30 31 30 30 32 46 46 46 45 33 0D 0A
Full close 3A 46 45 30 46 30 30 30 30 30 30 30 31 30 30 32 30 30 30 30 45 31 0D 0A
The tables do not quite line up, maybe they have typos ?
If I merge those two docs I get this
Status query 3A 46 45 30 31 30 30 30 30 30 30 31 30 46 31 0D 0A
State return value 3A 46 45 30 31 30 30 32 30 30 30 30 30 46 46 0D 0A
1st way open 3A 46 45 30 35 30 30 30 30 46 46 30 30 46 45 0D 0A
Pass 1 3A 46 45 30 35 30 30 30 30 30 30 30 30 46 44 0D 0A
2nd road open 3A 46 45 30 35 30 30 30 31 46 46 30 30 46 44 0D 0A
Pass 2 3A 46 45 30 35 30 30 30 31 30 30 30 30 46 43 0D 0A
No. 3 open 3A 46 45 30 35 30 30 30 32 46 46 30 30 46 43 0D 0A
The third pass 3A 46 45 30 35 30 30 30 32 30 30 30 30 46 42 0D 0A
4th road open 3A 46 45 30 35 30 30 30 33 46 46 30 30 46 42 0D 0A
4th pass 3A 46 45 30 35 30 30 30 33 30 30 30 30 46 41 0D 0A
Open No. 5 3A 46 45 30 35 30 30 30 34 46 46 30 30 46 41 0D 0A
5th pass 3A 46 45 30 35 30 30 30 34 30 30 30 30 46 39 0D 0A
No. 6 open 3A 46 45 30 35 30 30 30 35 46 46 30 30 46 39 0D 0A
The 6th pass 3A 46 45 30 35 30 30 30 35 30 30 30 30 46 38 0D 0A
No. 7 open 3A 46 45 30 35 30 30 30 36 46 46 30 30 46 38 0D 0A
Pass 7 3A 46 45 30 35 30 30 30 36 30 30 30 30 46 37 0D 0A
No. 8 open 3A 46 45 30 35 30 30 30 37 46 46 30 30 46 37 0D 0A
8th pass 3A 46 45 30 35 30 30 30 37 30 30 30 30 46 36 0D 0A
No. 9 open 3A 46 45 30 35 30 30 30 38 46 46 30 30 46 36 0D 0A
The 9th pass 3A 46 45 30 35 30 30 30 38 30 30 30 30 46 35 0D 0A
No. 10 open 3A 46 45 30 35 30 30 30 39 46 46 30 30 46 35 0D 0A
Pass 10 3A 46 45 30 35 30 30 30 39 30 30 30 30 46 34 0D 0A
11th road open 3A 46 45 30 35 30 30 30 41 46 46 30 30 46 34 0D 0A
Pass 11 3A 46 45 30 35 30 30 30 41 30 30 30 30 46 33 0D 0A
No. 12 open 3A 46 45 30 35 30 30 30 42 46 46 30 30 46 33 0D 0A
Pass 12 3A 46 45 30 35 30 30 30 42 30 30 30 30 46 32 0D 0A
13th road open 3A 46 45 30 35 30 30 30 43 46 46 30 30 46 32 0D 0A
Pass 13 3A 46 45 30 35 30 30 30 43 30 30 30 30 46 31 0D 0A
Open No. 14 3A 46 45 30 35 30 30 30 44 46 46 30 30 46 31 0D 0A
Pass 14 3A 46 45 30 35 30 30 30 44 30 30 30 30 46 30 0D 0A
15th road open 3A 46 45 30 35 30 30 30 45 46 46 30 30 46 30 0D 0A
Pass 15 3A 46 45 30 35 30 30 30 45 30 30 30 30 46 46 0D 0A
16th road open 3A 46 45 30 35 30 30 30 46 46 46 30 30 46 46 0D 0A
Pass 16 3A 46 45 30 35 30 30 30 46 30 30 30 30 46 45 0D 0A
Fully open 3A 46 45 30 46 30 30 30 30 30 30 31 30 30 32 46 46 46 46 45 33 0D 0A
Full close 3A 46 45 30 46 30 30 30 30 30 30 31 30 30 32 30 30 30 30 45 31 0D 0A
:FE0F0000001002FFFFE3\r\n
:FE0F00000010020000E1\r\n