Jablotron JA-80 series and JA-100 series alarm integration

I got the OEM usb serial cable yesterday and have quickly setup new RPi with Hassio for testing with my JA-80. Arm away was successful :grinning:. When I Disarm back I realised the Alarm state goes to servis mode… In config I was using my master code. The Arm at home didn’t work. Any ideas ?

I apologize :pensive:. Just checked again and its working. Strange thing is that I can arm and disarm without actually entering the code even if I have in config:

alarm_control_panel:

  • platform: jablotron
    serial_port: /dev/hidraw0
    code: xxxx
    code_arm_required: true
    code_disarm_required: true

Yes, this looks sensible

The code uses those parameters to decide if to send the code that is entered in the UI to the alarm system. It does not configure the alarm system. I chose to do it this way as I didn’t really want to store my alarm code in HA which would be needed to validate the code.

The way it works at the moment, If you want a code to be required, you configure your alarm system to require the code and then this component.

Would that work for you?

@Marcel1: Ok, I understand. Things are getting complicated, so let’s make things clear.
As far as I can see, we have two kind of topics going on:

Timeline for alarm state

  1. In post 67 I discovered a packet to get the alarm state with a faster response.

  2. You confirmed this in post 75

So far so good. This is the progress we got on the alarm_control_panel platform.

Timeline for sensor state

  1. In post 58, I published my analysis on sensor data, while sniffing USB traffic on a host directly connected to the alarm system while running J/F-link in the background. I saw one 52 07 packet, but in general all sensors report states in a 52 09 packet (I was showing my data in decimal, where dec 82 == hex 52)

  2. In post 60 you confirmed my analysis. You even noticed the 55 08 and 55 09 packets.

We were not able to retreive them without having J/F-link opened, because back then we only had a startup message in Matt’s Jablotron code which showed us the state of the alarm, not the state of the sensors.

  1. In post 78 I discovered a specific startup message we could use in (a separate version of) Matt’s Jablotron code for retreiving sensor states, which won’t require us to have J/F-link opened. The concept of a binary sensor was born, yay \o/

  2. In post 83 you tried to compare your analysis (based on J/F-link data) with my analysis (based on startup message responses). And in post 85 things got blurry for both of us I guess.

So there’s one way to get back on track: publish a new version of my code asap, in order to share and discuss test results. I’ll try to do this tonight.

OK, and what part of the config should I change in order to arm and disarm the alarm from HA only with code entered? I don’t actually mind if the code will be stored somewhere in secret.yaml
Thank you

hi @plaksnor. Thing are getting complicated, but i am still with you entirely.
I am not lost in terms of the steps we have taken so far, also it is entirely clear what our goals is.
It’s more that I am lost in terms of the codes generated (or not generated). I assumed we were on the right track with finding those codes, but now, with the new startup code and the modified _read function, i am not able to capture the codes anymore.

Even when trying to open one session, doing: echo -ne "\x80\x01\x02" > /dev/hidraw0 and opening a second where i do cat /dev/hidraw0 | hexdump -C | grep '55 09' i am not catching any 55 09 anymore.
I really can’t get my head around why this is.

Let me know once you posted your new version.

The code is here:

You could run this as a different custom_component. So you can use Matt’s repo with custom_component ‘jablotron’ for the alarm control panel and my repo with custom_component ‘jablotron_system’ for the binary sensors.

To all 100-series owners: I just released an update which supports both alarm_control_panel as binary_sensor platforms. @mattsaxon and @Marcel1 : thanks for your support!
Of course, coding could have been better, but for a first release I’m already satisfied with the functionality :slight_smile:

Hi @plaksnor, I can confirm its working on my JA-80 too but without sensors. Arming_home have pending state (approx. 20 s) even if the physical alarm is set in “arm_home” immediately. Second, its arming even if I dont enter the code on alarm_control panel. If you could advice how to change these things I would appreciate and maybe I am not alone :grinning: Sorry I not good in programming and trial and error may take me some time :grinning: Thanks

@plaksnor … sorry I forgot to mention that your previous code was showing me the sensors badge icon, but always in unknown state. I tried to watch States page but non of my sensors appear there

@thoky thanks for testing!
Unfortunately, I’m not able to test the code on a JA-80 series system, only a JA-100 series. I already thought the binary_sensor was not working on a JA-80 series, because we haven’t analyzed that data for sensor purposes yet. So we need someone who’s able to sniff incoming data.
If you are able to help us by opening J/F/O-link and capture data with something like Device Monitoring Studio or USBPcap running in the background, I’d be happy to analyze your data. Please do keep in mind you’d better change your alarm code before putting data like this online.

For the alarm control panel code, you reported two issues:

  1. pending state seems to have a delay

Could you show us some log while having logger enabled in configuration.yaml? Does it show an error, or does the output in the log gives you any more information which leads us to a specific kind of action?

  1. code_arm_required and code_disarm_required doesn’t require you to use a code if set on True.
    I think this has anything to do with post 91, right? @mattsaxon: Would you be able to respond on that?

@plaksnor thanks for reply and here is the log. I will try to sniff the incoming data from usb but not today :grinning:

2019-06-03 20:50:31 INFO (MainThread) [custom_components.jablotron_system.alarm_control_panel] Send arm home command
2019-06-03 20:50:31 INFO (MainThread) [custom_components.jablotron_system.alarm_control_panel] Sending keys
2019-06-03 20:50:31 INFO (MainThread) [custom_components.jablotron_system.alarm_control_panel] sending *2
2019-06-03 20:50:31 INFO (MainThread) [custom_components.jablotron_system.alarm_control_panel] Using keys for model Jablotron JA-80 Series
2019-06-03 20:50:31 DEBUG (MainThread) [custom_components.jablotron_system.alarm_control_panel] _sendKeys: Acquiring lock…
2019-06-03 20:50:32 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:32 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: succesfully read data
2019-06-03 20:50:32 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: closed connection
2019-06-03 20:50:32 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Releasing lock…
2019-06-03 20:50:32 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Lock released.
2019-06-03 20:50:32 DEBUG (MainThread) [custom_components.jablotron_system.alarm_control_panel] _sendKeys: Lock acquired.
2019-06-03 20:50:32 INFO (MainThread) [custom_components.jablotron_system.alarm_control_panel] sending packet 1, message: b’\x00\x02\x01\x8f’
2019-06-03 20:50:32 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:32 INFO (MainThread) [custom_components.jablotron_system.alarm_control_panel] sending packet 2, message: b’\x00\x02\x01\x82’
2019-06-03 20:50:33 DEBUG (MainThread) [custom_components.jablotron_system.alarm_control_panel] _sendKeys: Releasing lock…
2019-06-03 20:50:33 DEBUG (MainThread) [custom_components.jablotron_system.alarm_control_panel] _sendKeys: Lock released.
2019-06-03 20:50:33 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:33 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Acquiring lock…
2019-06-03 20:50:33 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Lock aquired.
2019-06-03 20:50:33 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: trying to read data
2019-06-03 20:50:33 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: succesfully read data
2019-06-03 20:50:33 INFO (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] Jablotron state changed: disarmed to pending
2019-06-03 20:50:33 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: closed connection
2019-06-03 20:50:33 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Releasing lock…
2019-06-03 20:50:33 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Lock released.
2019-06-03 20:50:33 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:34 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:34 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Acquiring lock…
2019-06-03 20:50:34 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Lock aquired.
2019-06-03 20:50:34 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: trying to read data
2019-06-03 20:50:34 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: succesfully read data
2019-06-03 20:50:34 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: closed connection
2019-06-03 20:50:34 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Releasing lock…
2019-06-03 20:50:34 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Lock released.
2019-06-03 20:50:34 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:35 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:35 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Acquiring lock…
2019-06-03 20:50:35 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Lock aquired.
2019-06-03 20:50:35 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: trying to read data
2019-06-03 20:50:35 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:36 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:36 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:37 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:37 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:38 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:38 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:39 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:39 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:40 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:41 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:41 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: succesfully read data
2019-06-03 20:50:41 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: closed connection
2019-06-03 20:50:41 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Releasing lock…
2019-06-03 20:50:41 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Lock released.
2019-06-03 20:50:41 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:42 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:42 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Acquiring lock…
2019-06-03 20:50:42 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Lock aquired.
2019-06-03 20:50:42 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: trying to read data
2019-06-03 20:50:42 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: succesfully read data
2019-06-03 20:50:42 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: closed connection
2019-06-03 20:50:42 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Releasing lock…
2019-06-03 20:50:42 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Lock released.
2019-06-03 20:50:42 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:43 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:43 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Acquiring lock…
2019-06-03 20:50:43 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Lock aquired.
2019-06-03 20:50:43 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: trying to read data
2019-06-03 20:50:43 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:44 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:44 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:44 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: succesfully read data
2019-06-03 20:50:44 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: closed connection
2019-06-03 20:50:44 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Releasing lock…
2019-06-03 20:50:44 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Lock released.
2019-06-03 20:50:45 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:45 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:45 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Acquiring lock…
2019-06-03 20:50:45 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Lock aquired.
2019-06-03 20:50:45 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: trying to read data
2019-06-03 20:50:46 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:46 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:46 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: succesfully read data
2019-06-03 20:50:46 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: closed connection
2019-06-03 20:50:46 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Releasing lock…
2019-06-03 20:50:46 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Lock released.
2019-06-03 20:50:47 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:47 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:47 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Acquiring lock…
2019-06-03 20:50:47 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Lock aquired.
2019-06-03 20:50:47 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: trying to read data
2019-06-03 20:50:48 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:48 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:48 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: succesfully read data
2019-06-03 20:50:48 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: closed connection
2019-06-03 20:50:48 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Releasing lock…
2019-06-03 20:50:48 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Lock released.
2019-06-03 20:50:49 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:49 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:49 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Acquiring lock…
2019-06-03 20:50:49 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Lock aquired.
2019-06-03 20:50:49 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: trying to read data
2019-06-03 20:50:49 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: succesfully read data
2019-06-03 20:50:49 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: closed connection
2019-06-03 20:50:49 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Releasing lock…
2019-06-03 20:50:49 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Lock released.
2019-06-03 20:50:50 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:50 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:50 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Acquiring lock…
2019-06-03 20:50:50 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Lock aquired.
2019-06-03 20:50:50 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: trying to read data
2019-06-03 20:50:51 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:52 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:52 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:53 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:53 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:53 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: succesfully read data
2019-06-03 20:50:53 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: closed connection
2019-06-03 20:50:53 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Releasing lock…
2019-06-03 20:50:53 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Lock released.
2019-06-03 20:50:54 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:54 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:54 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Acquiring lock…
2019-06-03 20:50:54 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Lock aquired.
2019-06-03 20:50:54 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: trying to read data
2019-06-03 20:50:55 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:55 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: succesfully read data
2019-06-03 20:50:55 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: closed connection
2019-06-03 20:50:55 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Releasing lock…
2019-06-03 20:50:55 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Lock released.
2019-06-03 20:50:55 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:56 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:56 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Acquiring lock…
2019-06-03 20:50:56 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Lock aquired.
2019-06-03 20:50:56 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: trying to read data
2019-06-03 20:50:56 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: succesfully read data
2019-06-03 20:50:56 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: closed connection
2019-06-03 20:50:56 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Releasing lock…
2019-06-03 20:50:56 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Lock released.
2019-06-03 20:50:56 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:57 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:57 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Acquiring lock…
2019-06-03 20:50:57 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Lock aquired.
2019-06-03 20:50:57 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: trying to read data
2019-06-03 20:50:57 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: succesfully read data
2019-06-03 20:50:57 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: closed connection
2019-06-03 20:50:57 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Releasing lock…
2019-06-03 20:50:57 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Lock released.
2019-06-03 20:50:57 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:58 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:58 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Acquiring lock…
2019-06-03 20:50:58 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Lock aquired.
2019-06-03 20:50:58 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: trying to read data
2019-06-03 20:50:59 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:50:59 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: succesfully read data
2019-06-03 20:50:59 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: closed connection
2019-06-03 20:50:59 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Releasing lock…
2019-06-03 20:50:59 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Lock released.
2019-06-03 20:50:59 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:51:00 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:51:00 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Acquiring lock…
2019-06-03 20:51:00 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: Lock aquired.
2019-06-03 20:51:00 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: trying to read data
2019-06-03 20:51:00 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:51:01 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:51:01 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:51:02 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:51:02 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:51:03 DEBUG (ThreadPoolExecutor-1_1) [custom_components.jablotron_system.alarm_control_panel] Data is flowing, wait 1 seconds before checking again
2019-06-03 20:51:03 DEBUG (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] _read_loop: succesfully read data
2019-06-03 20:51:03 INFO (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] Jablotron state changed: pending to armed_home

Thanks thoky. This is what I read from it:

2019-06-03 20:50:31 INFO (MainThread) [custom_components.jablotron_system.alarm_control_panel] Send arm home command
2019-06-03 20:50:32 INFO (MainThread) [custom_components.jablotron_system.alarm_control_panel] sending packet 1, message: b’\x00\x02\x01\x8f’
2019-06-03 20:50:32 INFO (MainThread) [custom_components.jablotron_system.alarm_control_panel] sending packet 2, message: b’\x00\x02\x01\x82’
2019-06-03 20:50:33 INFO (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] Jablotron state changed: disarmed to pending

Within 2 seconds, we got a new state from the alarm system. So the alarm system is responding within the expected amount of time on the arm action.

However, I also see that it will take exactly 30 seconds to get it armed:

2019-06-03 20:51:03 INFO (ThreadPoolExecutor-1_0) [custom_components.jablotron_system.alarm_control_panel] Jablotron state changed: pending to armed_home

To be honest, I really don’t have a clue why the system is reporting back this state only after 30 seconds, while the code has been reading data every second since it has the state ‘pending’. It looks like it’s not reporting back the right state any sooner.

@plaksnor thats strange but thanks anyway for you time. Like I said I will have a look at the usb sniff and will back with some data :slightly_smiling_face:

For people who are not able to receive 55 packets, there’s a new ‘feature-d8’ repo with a binary sensor scanning for d8 packets:


@Marcel1 and I both own a 100-series, so we’re going to start testing developments from within this branch. If the 80-series also receives d8 packets, you’re more than welcome to try this branch.

That functionality is not supported with the code as it standard at the moment. Can I check I understand the functionality you want… So whilst you can arm it from the physical keypad without a code, you want it to need the code when doing it via HA? What about disarm, I presume you need to enter the code via both HA and keypad at the moment?

@mattsaxon I have an physical keyboard on which I need to enter the code for arming/disarming - no other option without code. I am also using stock Jablotron rf remote now for arming/arming home/disarm but thats not important.

What I am looking for is to use only HA to arm/armhome/disarm (eventually arm_night too) but with only code entered on HA alarm card. Right now I am able to do it without code. The idea is that everybody in my household have different code therefore if they will use they own code I will know it and I will receive notification who is actually controlling the alarm.

After watching this thread with interest for a while, I today decided to join the club. Only problem is that my HASS is running on a virtual server in the garage while the Jablotron (Oasis-80) alarm system is installed in the attic. So I installed a RPI with ser2net next to the alarm control panel and connected the JA-82T Serial2USB to it. Using Ser2Net I’d like to forward this to the HASS (or to a windows machine to use OLink software if needed).

The device turns up as /dev/hidraw0 but unfortunately I don’t know with what settings it should be configured in /etc/ser2net.conf:

9999:raw:600:/dev/hidraw0:9600 8DATABITS NONE 1STOPBIT

For now I’m testing to use it as virtual COM port on a Windows-10 machine using Perle TruePort (based on this thread: https://t0ny.name/2018/02/1424. Unfortunately, that doesn’t work. Also using Socat on another linux box, doesn’t get a working connection…

Can anyone help in deciding what parameters one should use? eg Baud-rate, Databits, Stopbit, Parity?

Edit: from dmesg:
[ 3.433212] usb 1-1.3: New USB device found, idVendor=16d6, idProduct=0007, bcdDevice= 1.00
[ 3.448484] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 3.459393] usb 1-1.3: Product: JA-82T PC Interface
[ 3.467742] usb 1-1.3: Manufacturer: JABLOTRON ALARMS
[ 3.476200] usb 1-1.3: SerialNumber: 00000000
[ 3.525533] hid-generic 0003:16D6:0007.0001: hiddev96,hidraw0: USB HID v1.11 Device [JABLOTRON ALARMS JA-82T PC Interface] on usb-20980000.usb-1.3/input0

(by the way I have this working to send a Z-Wave stick from raspi over the network to hass)

1 Like

Hi. I can just confirm that I am also interested if someone could advise on this.

Right now I am using the raspberry with second Hassio and Jablotron setup as per this thread which works :slight_smile: I am forwarding the alarm through the homekit in HA to my old iPad which acts like my home wall control panel. This setup works but I don’t want to use two HA servers. My VM HA server is much more reliable, quick and safe with snapshots than HA on RPi server.