Hi Konstantin
Would really love to see some added functionality as well as some fixes to the binding. |I fully understand your reluctance, but hope to either get your buy-in or your assistance?
Not sure if you are aware of the following dissector for Wireshark (only works with 3.4.x)?
This is a WIP that has stalled, however still provides useful information.
As long as you capture the full TCP stream from Babyware etc the traffic is all decrypted and seemingly ready for passing to the Paradox by the binding?
So for example, here is a capture of the BYPASS Zone command on Zone 1:
The acknowledgement:

The UNBYPASS:
and acknowledgement:
And just for completeness since you already implemented these, DISARM and ARM Partition 3:


Which seems to tie up with what the binding does?
2022-12-28 07:47:59.477 [DEBUG] [nhab.binding.paradoxalarm.internal.model.Partition] - Submitting command=DISARM for partition=[Entity [id=3, label=Ceiling]]
2022-12-28 07:47:59.477 [TRACE] [ding.paradoxalarm.internal.communication.SyncQueue] - Adding to queue request=Request [packet=ParadoxIPPacket [[REDACT] 01EEEEEEEEEEEEEE 400F000000000060 000000000000AF], timestamp=0, type=PARTITION_COMMAND]
2022-12-28 07:47:59.477 [TRACE] [xalarm.internal.communication.AbstractCommunicator] - Sending packet with request=Request [packet=ParadoxIPPacket [[REDACT] 01EEEEEEEEEEEEEE 400F000000000060 000000000000AF], timestamp=0, type=PARTITION_COMMAND]
2022-12-28 07:47:59.477 [TRACE] [hab.binding.paradoxalarm.internal.util.ParadoxUtil] - Packet payload size: 15
2022-12-28 07:47:59.477 [TRACE] [hab.binding.paradoxalarm.internal.util.ParadoxUtil] - Tx Packet: [REDACT] 01EEEEEEEEEEEEEE 400F000000000060 000000000000AF


2022-12-28 07:48:07.936 [DEBUG] [nhab.binding.paradoxalarm.internal.model.Partition] - Submitting command=ARM for partition=[Entity [id=3, label=Ceiling]]
2022-12-28 07:48:07.936 [TRACE] [ding.paradoxalarm.internal.communication.SyncQueue] - Adding to queue request=Request [packet=ParadoxIPPacket [[REDACT] 01EEEEEEEEEEEEEE 400F000000000020 0000000000006F], timestamp=0, type=PARTITION_COMMAND]
2022-12-28 07:48:07.936 [TRACE] [xalarm.internal.communication.AbstractCommunicator] - Sending packet with request=Request [packet=ParadoxIPPacket [[REDACT] 01EEEEEEEEEEEEEE 400F000000000020 0000000000006F], timestamp=0, type=PARTITION_COMMAND]
2022-12-28 07:48:07.936 [TRACE] [hab.binding.paradoxalarm.internal.util.ParadoxUtil] - Packet payload size: 15
2022-12-28 07:48:07.936 [TRACE] [hab.binding.paradoxalarm.internal.util.ParadoxUtil] - Tx Packet: [REDACT] 01EEEEEEEEEEEEEE 400F000000000020 0000000000006F
I am hoping that the dissector would make your task easier as in theory the payload etc would already be there?
Failing that would you be able to point me to the data used for the decoded packets you used in development? It seems that all the dropbox links etc are no longer valid? Maybe you could share an example of the ARM/DISARM command so that I can try see how it compares to what the dissector provides?
Maybe I could then try and make the additions myself (not a coder so this may well not work), or try and entice someone with a bounty?
The regarding the Partition and Zone labels - Should the channels be populated? Or are you saying that the label is only used to create the THING? (Was not sure based on your response above?)

Thanks so much
Mark