I was able to fix the timestamp issue, thanks for finding that. I’ve never had a checksum error that causes that section of code to run.
I’d still like to see the a log of the interaction between your panel and the software to see how it compares to the specification document from DSC. Can you tell me which panel and serial interface you’re using? I’ve got a Power864 with an IT-100 at 9600 baud, which is really the only thing this has ever been tested with.
I attached a log of what mine does when starting up if you want to compare it.
It starts the serial read/write processes immediately, then waits for HA to connect. When that happens, it starts up the network read/write processes and message handlers. After doing the initial connection and login stuff, HA will send a status request message (001 91) that causes the panel to start dumping out its software version followed by all the partition and zone status messages.
I’m running a PC1864 with an IT-100 at 115200 baud rate, and here’s the output with the checksum verification still commented out (note that I am still running your initial commit, because I couldn’t get any later ones to run for some reason): -
pi@DSC-BRIDGE:~ $ ~/evl-emu/evl-emu.py --debug --hex
Process: 538
Starting serialRead (546)
Starting serialWrite (547)
Starting msghandler_dsc (548)
Starting msghandler_evl (550)
---------- Panel Initialization Start ----------
[21:32:03] DSC Out < 30:30:30:39:30:0D:0A 00090
[21:32:03] DSC In > 30:37:3A:33:31:3A:30:30:20:35:30:30:30:30:30:32:35:0D:0A 07:31:00 50000025
---------- Panel Initialization End ----------
EVL listening on 0.0.0.0:4025
Starting networkReadTest (557)
Test listening on 0.0.0.0:4026
[21:32:11] DSC In > 30:37:3A:33:32:3A:30:30:20:35:35:30:30:37:33:32:31:31:30:36:31:39:39:38:0D:0A 07:32:00 550073211061998
[21:32:11] DSC In > 30:37:3A:33:32:3A:30:30:20:39:30:31:30:30:30:33:32:20:20:44:61:74:65:20:20:20:20:20:54:69:6D:65:20:4E:4F:56:20:30:36:2F:31:39:20:20:37:3A:33:32:61:32:35:0D:0A 07:32:00 90100032 Date Time NOV 06/19 7:32a25
Client connected: ('192.168.1.74', 39434)
Starting networkRead (559)
Starting networkWrite (560)
[21:32:32] EVL Out < 35:30:35:33:43:44:0D:0A 5053CD
[21:32:32] EVL In > 30:30:35:70:61:73:73:34:43:0D:0A 005pass4C
[21:32:32] EVL Out < 35:30:35:31:43:42:0D:0A 5051CB
[21:32:32] EVL In > 30:31:30:30:37:33:32:31:31:30:36:31:39:38:46:0D:0A 01007321106198F
[21:32:32] EVL In > 30:30:31:39:31:0D:0A 00191
[21:32:32] DSC Out < 30:31:30:30:37:33:32:31:31:30:36:31:39:38:46:0D:0A 01007321106198F
[21:32:32] DSC Out < 30:30:31:39:31:0D:0A 00191
[21:32:32] DSC In > 30:37:3A:33:32:3A:30:30:20:35:30:30:30:31:30:32:36:0D:0A 07:32:00 50001026
[21:32:32] DSC In > 30:37:3A:33:32:3A:30:30:20:35:30:30:30:30:31:32:36:0D:0A 07:32:00 50000126
[21:32:32] EVL Out < 30:37:3A:33:32:3A:30:30:20:35:30:30:30:31:30:45:36:0D:0A 07:32:00 500010E6
[21:32:32] EVL Out < 30:37:3A:33:32:3A:30:30:20:35:30:30:30:30:31:45:36:0D:0A 07:32:00 500001E6
[21:32:32] DSC In > 30:37:3A:33:32:3A:30:30:20:39:30:38:30:31:30:32:30:31:43:35:0D:0A 07:32:00 908010201C5
[21:32:32] EVL Out < 30:37:3A:33:32:3A:30:30:20:39:30:38:30:31:30:32:30:31:38:35:0D:0A 07:32:00 90801020185
[21:32:32] DSC In > 30:37:3A:33:32:3A:30:30:20:38:39:37:41:38:0D:0A 07:32:00 897A8
[21:32:32] EVL Out < 30:37:3A:33:32:3A:30:30:20:38:39:37:36:38:0D:0A 07:32:00 89768
[21:32:33] DSC In > 30:37:3A:33:32:3A:30:30:20:36:35:30:31:43:43:0D:0A 07:32:00 6501CC
[21:32:33] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:35:30:31:38:43:0D:0A 07:32:00 65018C
[21:32:33] DSC In > 30:37:3A:33:32:3A:30:30:20:36:37:33:32:44:32:0D:0A 07:32:00 6732D2
[21:32:33] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:37:33:32:39:32:0D:0A 07:32:00 673292
[21:32:33] DSC In > 30:37:3A:33:32:3A:30:30:20:36:37:33:33:44:33:0D:0A 07:32:00 6733D3
[21:32:33] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:37:33:33:39:33:0D:0A 07:32:00 673393
[21:32:33] DSC In > 30:37:3A:33:32:3A:30:30:20:36:37:33:34:44:34:0D:0A 07:32:00 6734D4
[21:32:33] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:37:33:34:39:34:0D:0A 07:32:00 673494
[21:32:33] DSC In > 30:37:3A:33:32:3A:30:30:20:36:37:33:35:44:35:0D:0A 07:32:00 6735D5
[21:32:33] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:37:33:35:39:35:0D:0A 07:32:00 673595
[21:32:33] DSC In > 30:37:3A:33:32:3A:30:30:20:36:37:33:36:44:36:0D:0A 07:32:00 6736D6
[21:32:33] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:37:33:36:39:36:0D:0A 07:32:00 673696
[21:32:33] DSC In > 30:37:3A:33:32:3A:30:30:20:36:37:33:37:44:37:0D:0A 07:32:00 6737D7
[21:32:33] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:37:33:37:39:37:0D:0A 07:32:00 673797
[21:32:33] DSC In > 30:37:3A:33:32:3A:30:30:20:36:37:33:38:44:38:0D:0A 07:32:00 6738D8
[21:32:33] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:37:33:38:39:38:0D:0A 07:32:00 673898
[21:32:33] DSC In > 30:37:3A:33:32:3A:30:30:20:38:34:31:31:43:45:0D:0A 07:32:00 8411CE
[21:32:33] EVL Out < 30:37:3A:33:32:3A:30:30:20:38:34:31:31:38:45:0D:0A 07:32:00 84118E
[21:32:33] DSC In > 30:37:3A:33:32:3A:30:30:20:38:34:31:32:43:46:0D:0A 07:32:00 8412CF
[21:32:33] EVL Out < 30:37:3A:33:32:3A:30:30:20:38:34:31:32:38:46:0D:0A 07:32:00 84128F
[21:32:33] DSC In > 30:37:3A:33:32:3A:30:30:20:38:34:31:33:44:30:0D:0A 07:32:00 8413D0
[21:32:33] EVL Out < 30:37:3A:33:32:3A:30:30:20:38:34:31:33:39:30:0D:0A 07:32:00 841390
[21:32:33] DSC In > 30:37:3A:33:32:3A:30:30:20:38:34:31:34:44:31:0D:0A 07:32:00 8414D1
[21:32:33] EVL Out < 30:37:3A:33:32:3A:30:30:20:38:34:31:34:39:31:0D:0A 07:32:00 841491
[21:32:33] DSC In > 30:37:3A:33:32:3A:30:30:20:38:34:31:35:44:32:0D:0A 07:32:00 8415D2
[21:32:33] EVL Out < 30:37:3A:33:32:3A:30:30:20:38:34:31:35:39:32:0D:0A 07:32:00 841592
[21:32:33] DSC In > 30:37:3A:33:32:3A:30:30:20:38:34:31:36:44:33:0D:0A 07:32:00 8416D3
[21:32:33] EVL Out < 30:37:3A:33:32:3A:30:30:20:38:34:31:36:39:33:0D:0A 07:32:00 841693
[21:32:33] DSC In > 30:37:3A:33:32:3A:30:30:20:38:34:31:37:44:34:0D:0A 07:32:00 8417D4
[21:32:33] EVL Out < 30:37:3A:33:32:3A:30:30:20:38:34:31:37:39:34:0D:0A 07:32:00 841794
[21:32:33] DSC In > 30:37:3A:33:32:3A:30:30:20:38:34:31:38:44:35:0D:0A 07:32:00 8418D5
[21:32:33] EVL Out < 30:37:3A:33:32:3A:30:30:20:38:34:31:38:39:35:0D:0A 07:32:00 841895
[21:32:33] DSC In > 30:37:3A:33:32:3A:30:30:20:39:30:33:31:31:46:45:0D:0A 07:32:00 90311FE
[21:32:33] EVL Out < 30:37:3A:33:32:3A:30:30:20:39:30:33:31:31:42:45:0D:0A 07:32:00 90311BE
[21:32:33] DSC In > 30:37:3A:33:32:3A:30:30:20:39:30:33:32:30:46:45:0D:0A 07:32:00 90320FE
[21:32:33] EVL Out < 30:37:3A:33:32:3A:30:30:20:39:30:33:32:30:42:45:0D:0A 07:32:00 90320BE
[21:32:33] DSC In > 30:37:3A:33:32:3A:30:30:20:39:30:33:33:30:46:46:0D:0A 07:32:00 90330FF
[21:32:33] EVL Out < 30:37:3A:33:32:3A:30:30:20:39:30:33:33:30:42:46:0D:0A 07:32:00 90330BF
[21:32:33] DSC In > 30:37:3A:33:32:3A:30:30:20:39:30:33:34:30:30:30:0D:0A 07:32:00 9034000
[21:32:33] EVL Out < 30:37:3A:33:32:3A:30:30:20:39:30:33:34:30:43:30:0D:0A 07:32:00 90340C0
[21:32:33] DSC In > 30:37:3A:33:32:3A:30:30:20:39:30:33:35:30:30:31:0D:0A 07:32:00 9035001
[21:32:33] EVL Out < 30:37:3A:33:32:3A:30:30:20:39:30:33:35:30:43:31:0D:0A 07:32:00 90350C1
[21:32:33] DSC In > 30:37:3A:33:32:3A:30:30:20:39:30:33:36:30:30:32:0D:0A 07:32:00 9036002
[21:32:33] EVL Out < 30:37:3A:33:32:3A:30:30:20:39:30:33:36:30:43:32:0D:0A 07:32:00 90360C2
[21:32:33] DSC In > 30:37:3A:33:32:3A:30:30:20:39:30:33:37:30:30:33:0D:0A 07:32:00 9037003
[21:32:33] EVL Out < 30:37:3A:33:32:3A:30:30:20:39:30:33:37:30:43:33:0D:0A 07:32:00 90370C3
[21:32:33] DSC In > 30:37:3A:33:32:3A:30:30:20:39:30:33:38:31:30:35:0D:0A 07:32:00 9038105
[21:32:33] EVL Out < 30:37:3A:33:32:3A:30:30:20:39:30:33:38:31:43:35:0D:0A 07:32:00 90381C5
[21:32:33] DSC In > 30:37:3A:33:32:3A:30:30:20:39:30:33:39:30:30:35:0D:0A 07:32:00 9039005
[21:32:33] EVL Out < 30:37:3A:33:32:3A:30:30:20:39:30:33:39:30:43:35:0D:0A 07:32:00 90390C5
[21:32:33] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:30:31:32:38:0D:0A 07:32:00 61000128
[21:32:33] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:30:31:45:38:0D:0A 07:32:00 610001E8
[21:32:33] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:30:32:32:39:0D:0A 07:32:00 61000229
[21:32:33] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:30:32:45:39:0D:0A 07:32:00 610002E9
[21:32:33] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:30:33:32:41:0D:0A 07:32:00 6100032A
[21:32:33] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:30:33:45:41:0D:0A 07:32:00 610003EA
[21:32:33] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:30:34:32:42:0D:0A 07:32:00 6100042B
[21:32:33] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:30:34:45:42:0D:0A 07:32:00 610004EB
[21:32:33] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:30:35:32:43:0D:0A 07:32:00 6100052C
[21:32:33] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:30:35:45:43:0D:0A 07:32:00 610005EC
[21:32:33] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:30:36:32:44:0D:0A 07:32:00 6100062D
[21:32:33] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:30:36:45:44:0D:0A 07:32:00 610006ED
[21:32:33] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:30:37:32:45:0D:0A 07:32:00 6100072E
[21:32:33] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:30:37:45:45:0D:0A 07:32:00 610007EE
[21:32:33] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:30:38:32:46:0D:0A 07:32:00 6100082F
[21:32:33] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:30:38:45:46:0D:0A 07:32:00 610008EF
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:30:39:33:30:0D:0A 07:32:00 61000930
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:30:39:46:30:0D:0A 07:32:00 610009F0
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:31:30:32:38:0D:0A 07:32:00 61001028
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:31:30:45:38:0D:0A 07:32:00 610010E8
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:31:31:32:39:0D:0A 07:32:00 61001129
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:31:31:45:39:0D:0A 07:32:00 610011E9
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:31:32:32:41:0D:0A 07:32:00 6100122A
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:31:32:45:41:0D:0A 07:32:00 610012EA
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:31:33:32:42:0D:0A 07:32:00 6100132B
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:31:33:45:42:0D:0A 07:32:00 610013EB
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:31:34:32:43:0D:0A 07:32:00 6100142C
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:31:34:45:43:0D:0A 07:32:00 610014EC
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:31:35:32:44:0D:0A 07:32:00 6100152D
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:31:35:45:44:0D:0A 07:32:00 610015ED
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:31:36:32:45:0D:0A 07:32:00 6100162E
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:31:36:45:45:0D:0A 07:32:00 610016EE
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:31:37:32:46:0D:0A 07:32:00 6100172F
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:31:37:45:46:0D:0A 07:32:00 610017EF
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:31:38:33:30:0D:0A 07:32:00 61001830
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:31:38:46:30:0D:0A 07:32:00 610018F0
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:31:39:33:31:0D:0A 07:32:00 61001931
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:31:39:46:31:0D:0A 07:32:00 610019F1
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:32:30:32:39:0D:0A 07:32:00 61002029
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:32:30:45:39:0D:0A 07:32:00 610020E9
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:32:31:32:41:0D:0A 07:32:00 6100212A
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:32:31:45:41:0D:0A 07:32:00 610021EA
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:32:32:32:42:0D:0A 07:32:00 6100222B
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:32:32:45:42:0D:0A 07:32:00 610022EB
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:32:33:32:43:0D:0A 07:32:00 6100232C
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:32:33:45:43:0D:0A 07:32:00 610023EC
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:32:34:32:44:0D:0A 07:32:00 6100242D
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:32:34:45:44:0D:0A 07:32:00 610024ED
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:32:35:32:45:0D:0A 07:32:00 6100252E
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:32:35:45:45:0D:0A 07:32:00 610025EE
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:32:36:32:46:0D:0A 07:32:00 6100262F
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:32:36:45:46:0D:0A 07:32:00 610026EF
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:32:37:33:30:0D:0A 07:32:00 61002730
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:32:37:46:30:0D:0A 07:32:00 610027F0
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:32:38:33:31:0D:0A 07:32:00 61002831
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:32:38:46:31:0D:0A 07:32:00 610028F1
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:32:39:33:32:0D:0A 07:32:00 61002932
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:32:39:46:32:0D:0A 07:32:00 610029F2
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:33:30:32:41:0D:0A 07:32:00 6100302A
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:33:30:45:41:0D:0A 07:32:00 610030EA
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:33:31:32:42:0D:0A 07:32:00 6100312B
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:33:31:45:42:0D:0A 07:32:00 610031EB
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:33:32:32:43:0D:0A 07:32:00 6100322C
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:33:32:45:43:0D:0A 07:32:00 610032EC
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:33:33:32:44:0D:0A 07:32:00 6100332D
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:33:33:45:44:0D:0A 07:32:00 610033ED
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:33:34:32:45:0D:0A 07:32:00 6100342E
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:33:34:45:45:0D:0A 07:32:00 610034EE
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:33:35:32:46:0D:0A 07:32:00 6100352F
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:33:35:45:46:0D:0A 07:32:00 610035EF
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:33:36:33:30:0D:0A 07:32:00 61003630
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:33:36:46:30:0D:0A 07:32:00 610036F0
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:33:37:33:31:0D:0A 07:32:00 61003731
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:33:37:46:31:0D:0A 07:32:00 610037F1
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:33:38:33:32:0D:0A 07:32:00 61003832
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:33:38:46:32:0D:0A 07:32:00 610038F2
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:33:39:33:33:0D:0A 07:32:00 61003933
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:33:39:46:33:0D:0A 07:32:00 610039F3
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:34:30:32:42:0D:0A 07:32:00 6100402B
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:34:30:45:42:0D:0A 07:32:00 610040EB
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:34:31:32:43:0D:0A 07:32:00 6100412C
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:34:31:45:43:0D:0A 07:32:00 610041EC
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:34:32:32:44:0D:0A 07:32:00 6100422D
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:34:32:45:44:0D:0A 07:32:00 610042ED
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:34:33:32:45:0D:0A 07:32:00 6100432E
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:34:33:45:45:0D:0A 07:32:00 610043EE
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:34:34:32:46:0D:0A 07:32:00 6100442F
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:34:34:45:46:0D:0A 07:32:00 610044EF
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:34:35:33:30:0D:0A 07:32:00 61004530
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:34:35:46:30:0D:0A 07:32:00 610045F0
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:34:36:33:31:0D:0A 07:32:00 61004631
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:34:36:46:31:0D:0A 07:32:00 610046F1
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:34:37:33:32:0D:0A 07:32:00 61004732
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:34:37:46:32:0D:0A 07:32:00 610047F2
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:34:38:33:33:0D:0A 07:32:00 61004833
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:34:38:46:33:0D:0A 07:32:00 610048F3
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:34:39:33:34:0D:0A 07:32:00 61004934
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:34:39:46:34:0D:0A 07:32:00 610049F4
[21:32:34] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:35:30:32:43:0D:0A 07:32:00 6100502C
[21:32:34] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:35:30:45:43:0D:0A 07:32:00 610050EC
[21:32:35] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:35:31:32:44:0D:0A 07:32:00 6100512D
[21:32:35] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:35:31:45:44:0D:0A 07:32:00 610051ED
[21:32:35] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:35:32:32:45:0D:0A 07:32:00 6100522E
[21:32:35] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:35:32:45:45:0D:0A 07:32:00 610052EE
[21:32:35] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:35:33:32:46:0D:0A 07:32:00 6100532F
[21:32:35] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:35:33:45:46:0D:0A 07:32:00 610053EF
[21:32:35] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:35:34:33:30:0D:0A 07:32:00 61005430
[21:32:35] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:35:34:46:30:0D:0A 07:32:00 610054F0
[21:32:35] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:35:35:33:31:0D:0A 07:32:00 61005531
[21:32:35] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:35:35:46:31:0D:0A 07:32:00 610055F1
[21:32:35] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:35:36:33:32:0D:0A 07:32:00 61005632
[21:32:35] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:35:36:46:32:0D:0A 07:32:00 610056F2
[21:32:35] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:35:37:33:33:0D:0A 07:32:00 61005733
[21:32:35] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:35:37:46:33:0D:0A 07:32:00 610057F3
[21:32:35] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:35:38:33:34:0D:0A 07:32:00 61005834
[21:32:35] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:35:38:46:34:0D:0A 07:32:00 610058F4
[21:32:35] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:35:39:33:35:0D:0A 07:32:00 61005935
[21:32:35] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:35:39:46:35:0D:0A 07:32:00 610059F5
[21:32:35] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:36:30:32:44:0D:0A 07:32:00 6100602D
[21:32:35] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:36:30:45:44:0D:0A 07:32:00 610060ED
[21:32:35] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:36:31:32:45:0D:0A 07:32:00 6100612E
[21:32:35] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:36:31:45:45:0D:0A 07:32:00 610061EE
[21:32:35] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:36:32:32:46:0D:0A 07:32:00 6100622F
[21:32:35] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:36:32:45:46:0D:0A 07:32:00 610062EF
[21:32:35] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:36:33:33:30:0D:0A 07:32:00 61006330
[21:32:35] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:36:33:46:30:0D:0A 07:32:00 610063F0
[21:32:35] DSC In > 30:37:3A:33:32:3A:30:30:20:36:31:30:30:36:34:33:31:0D:0A 07:32:00 61006431
[21:32:35] EVL Out < 30:37:3A:33:32:3A:30:30:20:36:31:30:30:36:34:46:31:0D:0A 07:32:00 610064F1
[21:32:58] EVL In > 30:30:30:39:30:0D:0A 00090
[21:32:58] DSC Out < 30:30:30:39:30:0D:0A 00090
[21:32:58] DSC In > 30:37:3A:33:32:3A:30:30:20:35:30:30:30:30:30:32:35:0D:0A 07:32:00 50000025
[21:32:58] EVL Out < 30:37:3A:33:32:3A:30:30:20:35:30:30:30:30:30:45:35:0D:0A 07:32:00 500000E5
OK, my bad on the latest version… It does work, I just didn’t realise it didn’t output to screen and because the logs still had the checksum errors, I incorrectly assumed it wasn’t working.
So, the latest version with the checksum verification commented out has output the following log: -
Now we’re getting somewhere. Your panel is putting timestamps in front of all the messages and my code has no idea what to make of that. It’s an option that can be set on the panel, the default is to not do it, but obviously I can’t assume that’s always the case. I think I can fix that by having it send an explicit timestamp disable message on startup, I’ll give that a try later tonight.
By doing it that way, the event information coming from the panel into the Pi are accessible over the network via an IP/Port number. which I currently have being read by my Vera Home Automation controller.
To consider moving it over to HA, any ideas what could be done to your code, to support such a connection type ?
Having an issue getting the emulator to run. Getting a fault:
Jun 19 18:06:41 server evl-emu.py[14242]: File "/home/user/evl-emu/evl-emu.py", line 847, in <module>
Jun 19 18:06:41 server evl-emu.py[14242]: ser.close()
Jun 19 18:06:41 server evl-emu.py[14242]: AttributeError: 'NoneType' object has no attribute 'close'
Jun 19 18:06:41 server systemd[1]: evl-emu.service: Main process exited, code=exited, status=1/FAILURE
Jun 19 18:06:41 server systemd[1]: evl-emu.service: Failed with result 'exit-code'.
Fixed it. The script was running under python2, so had to change the service file to explicitly state python3, and the user wasn’t a member of the right groups to access the serial port.
I’ve recently managed to get @SolidElectronic’s emulator working, with help from @cbschuld’s procedure, and am so thrilled! Thank you both.
Twice a year the time needs to be reset on the alarm system for the change for Daylight Saving. I would love to have Home Assistant automate that task.
Any insights on how to employ the COMMAND_SET_TIME_DATE protocol to accomplish that?
Is anyone having issues resetting a partition alarm when using the @SolidElectronics emulator? I have had multiple experiences where if an alarm is triggered, the keypad sensor for that partition maintains the “alarm: true” attribute indefinitely, and the alarm_control_panel remains ‘triggered’ indefinitely. This continues even when the alarm condition has been disarmed, the zone trigger that set off the alarm has cleared, and the real wall panel shows no issues. I feel there most be something with the code, but I don’t know if it is within the emulator or the Envisalink integration.
The only way I am able to ‘reset’ is to manually modify the values within the Developer Tools.
Hi Nelson
I’m not sure what to make of that error. Did you install pySerial and change /dev/it100 to match your serial device? You could try running from the command line with the --debug option to get some more detailed information about what’s happening and try to pinpoint the problem.
Not sure if you are reading this, but I recently same across the same issue are you. I have a Openhab instance where I still want to access the DSC via Ser2Net.
The newer version of ser2net supports multiple connections (not sure about the older version). To use @SolidElectronics 's code, you can socat a virtual serial port, then point the emulator to that port. I haven’t hook it up to HA yet (still building it out), but from the debug log, it seems to be working.
00:22:19 - -------------------- STARTUP --------------------
00:22:19 - Startup Process: 2435
00:22:19 - EVL waiting for connection on 0.0.0.0:4025
00:22:19 - Starting serialRead (2445)
00:22:19 - Starting serialWrite (2446)
00:22:23 - DSC In > 500000
00:22:48 - DSC In > 90100032 Date Time MAY 29/23 12:23a
00:23:28 - DSC In > 500000
00:23:48 - DSC In > 90100032 Date Time MAY 29/23 12:24a
00:24:33 - DSC In > 500000
00:24:48 - DSC In > 90100032 Date Time MAY 29/23 12:25a
00:25:38 - DSC In > 500000
00:25:48 - DSC In > 90100032 Date Time MAY 29/23 12:26a
00:26:43 - DSC In > 500000
00:26:48 - DSC In > 90100032 Date Time MAY 29/23 12:27a
00:27:48 - DSC In > 90100032 Date Time MAY 29/23 12:28a