Unknown Event Code Handling with SIA Integration

I am trying to work with and understand https://github.com/eavanvalkenburg/sia which is an SIA interface created by @ eavanvalkenburg

My Alarm is an Eaton Scantronic (Cooper) which I have managed to get as far as connecting and utilising SIA v2 protocol seems to work with the integration

But the integration is not the full SIA set (yet?!) so it kicks back with this message

2020-09-28 21:47:51 DEBUG (MainThread) [pysiaalarm.aio.sia_server] Incoming line: 6B250021"SIA-DCS"0029L0#A01[#A01|Nri2/OS]
2020-09-28 21:47:51 DEBUG (MainThread) [pysiaalarm.base_sia_server] Parsed event: Content: #A01|Nri2/OS], Zone: 2, Code: OS, Message: , Concerns: Zone or point, Type: Opening Keyswitch, Description: Account has been disarmed by keyswitch, Account: A01, Receiver: None, Prefix: L0, Timestamp: None, Length: 0021, Sequence: 0029, CRC: 6B25, Calc CRC: 6B25, Message type: Opening Keyswitch, Encrypted Content: None, Full Message: "SIA-DCS"0029L0#A01[#A01|Nri2/OS]..
2020-09-28 21:47:51 INFO (MainThread) [custom_components.sia.hub] Unhandled event code, will be set as attribute in the heartbeat sensor. Code is: OS, Message: , Full event: Code: OS, Type: Opening Keyswitch,             Description: Account has been disarmed by keyswitch

But when I look at the heartbeat sensor, I can not see that “will be set as attribute”, which I was hoping so I can create a sensor template

That does sound like a bug. To fix the actual problem of keyswitch disarm not being handled by the code, add this line to the REACTIONS array in const.py

"OS": {"type": "alarm", "new_state": "disarmed"},

and since you are using a keyswitch, you will also want the arm code:

"CS": {"type": "alarm", "new_state": "armed_away"},

Thankyou I see you have pushed that in V3.10. I will try and test in due course, but I ran aground with another problem. The panel has cloud access, but to do that it disables ARC locally and the cloud takes over the ARC control.

On the cloud there is no longer SIA V2 which was working, but only various types of SIA v3 which give this message when the cloud “tests” the ARC

2020-09-29 20:44:45 DEBUG (MainThread) [pysiaalarm.aio.sia_server] Incoming line: 1908002B"SIA-DCS"0000L0#3080[#3080|Nti19:44/id1/RP]
2020-09-29 20:44:45 DEBUG (MainThread) [pysiaalarm.base_sia_server] Parsed event: Content: #3080|Nti19:44/id1/RP], Zone: , Code: Nt, Message: i19:44/id1/RP, Concerns: None, Type: None, Description: None, Account: 3080, Receiver: None, Prefix: L0, Timestamp: None, Length: 002B, Sequence: 0000, CRC: 1908, Calc CRC: 1908, Message type: None, Encrypted Content: None, Full Message: "SIA-DCS"0000L0#3080[#3080|Nti19:44/id1/RP]..
2020-09-29 20:44:45 WARNING (MainThread) [pysiaalarm.base_sia_server] Code not found, replying with DUH to account: 3080

Will probably go back to direct, but then I loose cloud, then I loose phone App, then i loose being able to “rearm” following a “alarm+disarm” which due to some ISO spec apparently is not permitted… needs a physical human to type a number in the keypad, no comms way, no ARC way, no hardwire way before it can be re-armed.

The Eaton Secureconnect REST API is apparently NDA, that does not fit with me.

So, that looks like a parsing error in pysiaalarm

Incoming line: 1908002B"SIA-DCS"0000L0#3080[#3080|Nti19:44/id1/RP]

Should parse to

CRC: 1908
Length: 002B
Sequence: 0000
Prefix: L0
Account: 3080
Function: New Event
  Modifier "ti": Timestamp = "19:44"
  Modifier "id": ID = 1
  Event code: RP = Automatic Test

However, the event code is parsed as “Nt”, which of course is wrong, and with a timestamp of “None”

This may cause some problems in the integration since it relies on pysiaalarm parsing and reporting the code correctly.

On my honeywell you need to disarm twice to clear the alarm even from the panel before it will let you arm it, maybe that might work here as well (assuming it accepts a command)

I have created an issue on pysiaalarm


How did you find the relevant details the like:

I have a Scantronic alarm as well and would love to get this working.


Hi, did you solve this?