@Matt, I found an issue in the _read_loop function:
2019-05-27 01:07:10 INFO (MainThread) [homeassistant.components.alarm_control_panel] Setting up alarm_control_panel.jablotron,
2019-05-27 01:07:14 INFO (ThreadPoolExecutor-0_0) [custom_components.jablotron.alarm_control_panel] ReadLoop: Acquiring lock...,
2019-05-27 01:07:14 INFO (ThreadPoolExecutor-0_0) [custom_components.jablotron.alarm_control_panel] ReadLoop: Lock acquired.,
2019-05-27 01:07:14 INFO (ThreadPoolExecutor-0_2) [custom_components.jablotron.alarm_control_panel] StartupMessage: Acquiring lock...,
2019-05-27 01:07:14 INFO (ThreadPoolExecutor-0_0) [custom_components.jablotron.alarm_control_panel] ReadLoop: opened connection,
2019-05-27 01:07:14 INFO (ThreadPoolExecutor-0_0) [custom_components.jablotron.alarm_control_panel] ReadLoop: trying to read data,
2019-05-27 01:07:14 INFO (MainThread) [homeassistant.setup] Setup of domain alarm_control_panel took 3.9 seconds.,
2019-05-27 01:07:16 WARNING (ThreadPoolExecutor-0_1) [custom_components.jablotron.alarm_control_panel] Data has not been received for 2 seconds, retry startup message,
2019-05-27 01:07:16 INFO (ThreadPoolExecutor-0_1) [custom_components.jablotron.alarm_control_panel] StartupMessage: Acquiring lock...
Itās not able to read data. Hereās a part of my code, debugging while abusing _LOGGER.info:
self._f = open(self._file_path, 'rb', 64)
_LOGGER.info("ReadLoop: opened connection")
_LOGGER.info("ReadLoop: trying to read data")
new_state = self._read()
_LOGGER.info("ReadLoop: succesfully read data")
This is probably the reason why the Startup Message function is not able to acquire a lock (at least for my 100-series, maybe itās not a problem for @Marcel1)