|
12 | 12 |
|
13 | 13 | from custom_components.jablotron80.const import DEVICE_CONTROL_PANEL |
14 | 14 | LOGGER = logging.getLogger(__package__) |
15 | | -expected_warning_level = logging.warn |
| 15 | +expected_warning_level = logging.WARN |
16 | 16 | verbose_connection_logging = False |
17 | 17 | _loop = None # global variable to store event loop |
18 | 18 |
|
@@ -661,6 +661,7 @@ def __init__(self, device: str) -> None: |
661 | 661 | self._stop = threading.Event() |
662 | 662 | self._connection = None |
663 | 663 | self._messages = asyncio.Event() # are there messages to process |
| 664 | + self.update_devices = False |
664 | 665 |
|
665 | 666 | def get_record(self) -> List[bytearray]: |
666 | 667 |
|
@@ -796,6 +797,8 @@ def read_send_packet_loop(self) -> None: |
796 | 797 |
|
797 | 798 | send_cmd.confirm(True) |
798 | 799 | confirmed = True |
| 800 | + if send_cmd.name == 'Details': |
| 801 | + self.update_devices = True |
799 | 802 | self._cmd_q.task_done() |
800 | 803 |
|
801 | 804 | retries -=1 |
@@ -1694,13 +1697,13 @@ def _get_zone_via_object(self,object: JablotronCommon) -> JablotronZone: |
1694 | 1697 | return object.zone |
1695 | 1698 |
|
1696 | 1699 | def _clear_triggers(self) -> None: |
1697 | | - for device in self._active_devices.values(): |
| 1700 | + for device in self._devices.values(): |
1698 | 1701 | #if self.system_mode == JA80CentralUnit.SYSTEM_MODE_UNSPLIT: |
1699 | 1702 | # device.deactivate() |
1700 | 1703 | #else: |
1701 | 1704 | device.active = False |
1702 | 1705 | self._active_devices.clear() |
1703 | | - for code in self._active_codes.values(): |
| 1706 | + for code in self._codes.values(): |
1704 | 1707 | #if self.system_mode == JA80CentralUnit.SYSTEM_MODE_UNSPLIT: |
1705 | 1708 | # device.deactivate() |
1706 | 1709 | #else: |
@@ -1748,6 +1751,14 @@ def _activate_code_object(self, source): |
1748 | 1751 | if not zone is None: |
1749 | 1752 | zone.code_activated(source) |
1750 | 1753 |
|
| 1754 | + def _update_device(self): |
| 1755 | + for device in self._devices.values(): |
| 1756 | + if device.device_id in self._active_devices: |
| 1757 | + device.active = True |
| 1758 | + else: |
| 1759 | + device.active = False |
| 1760 | + self._active_devices.clear() |
| 1761 | + |
1751 | 1762 | def _activate_device(self, source): |
1752 | 1763 | if isinstance(source,JablotronDevice): |
1753 | 1764 | source.active = True |
@@ -2198,6 +2209,10 @@ def _process_state(self, data: bytearray, packet_data: str) -> None: |
2198 | 2209 | else: |
2199 | 2210 | LOGGER.debug('message: ' + message) |
2200 | 2211 |
|
| 2212 | + if self._connection.update_devices: |
| 2213 | + self._update_device() |
| 2214 | + self._connection.update_devices = False |
| 2215 | + |
2201 | 2216 | #LOGGER.info(f'Status: {hex(status)}, {format(status, "008b")}') |
2202 | 2217 | #LOGGER.info(f'{self}') |
2203 | 2218 |
|
|
0 commit comments