qolsys-controller 0.0.5__tar.gz → 0.0.8__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/PKG-INFO +2 -2
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/README.md +1 -1
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/pyproject.toml +1 -1
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/pki.py +1 -1
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/plugin_remote.py +25 -2
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/settings.py +14 -1
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/.github/workflows/build.yml +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/.github/workflows/publish.yml +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/.gitignore +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/Info_mqtt.md +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/LICENSE +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/bin/qolsys.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/example.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/info_pairing.md +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/info_qolsys.md +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/__init__.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/controller.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/db.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_alarmedsensor.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_automation.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_country_locale.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_dashboard_msgs.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_dimmerlight.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_doorlock.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_eu_event.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_heat_map.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_history.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_iqremotesettings.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_iqrouter_network_config.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_iqrouter_user_device.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_master_slave.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_partition.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_powerg_device.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_qolsyssettings.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_scene.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_sensor.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_smartsocket.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_state.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_tcc.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_thermostat.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_trouble_conditions.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_user.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_virtual_device.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_weather.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_zigbee_device.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_zwave_association_group.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_zwave_history.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_zwave_node.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_zwave_other.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/enum.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/errors.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/mdns.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/mqtt_command_queue.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/observable.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/panel.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/partition.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/plugin.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/plugin_c4.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/state.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/task_manager.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/utils_mqtt.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/zone.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/zwave_device.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/zwave_dimmer.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/zwave_garagedoor.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/zwave_generic.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/zwave_lock.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/zwave_outlet.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/zwave_thermostat.py +0 -0
- {qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/requirements.txt +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: qolsys-controller
|
3
|
-
Version: 0.0.
|
3
|
+
Version: 0.0.8
|
4
4
|
Summary: A Python module that emulates a virtual IQ Remote device, enabling full local control of a Qolsys IQ Panel
|
5
5
|
Project-URL: Homepage, https://github.com/EHylands/QolsysController
|
6
6
|
Project-URL: Issues, https://github.com/EHylands/QolsysController/issues
|
@@ -16,7 +16,7 @@ Description-Content-Type: text/markdown
|
|
16
16
|
|
17
17
|
# Qolsys Controller - qolsys-controller
|
18
18
|
|
19
|
-
[](https://github.com/EHylands/QolsysController/actions/workflows/build.yml)
|
20
20
|
|
21
21
|
A Python module that emulates a virtual IQ Remote device, enabling full **local control** of a Qolsys IQ Panel over MQTT — no cloud access required.
|
22
22
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# Qolsys Controller - qolsys-controller
|
2
2
|
|
3
|
-
[](https://github.com/EHylands/QolsysController/actions/workflows/build.yml)
|
4
4
|
|
5
5
|
A Python module that emulates a virtual IQ Remote device, enabling full **local control** of a Qolsys IQ Panel over MQTT — no cloud access required.
|
6
6
|
|
@@ -36,7 +36,7 @@ class QolsysPKI:
|
|
36
36
|
return ":".join(self.id[i:i+2] for i in range(0, len(self.id), 2))
|
37
37
|
|
38
38
|
def set_id(self, pki_id: str) -> None:
|
39
|
-
self._id = pki_id.replace(":", "").
|
39
|
+
self._id = pki_id.replace(":", "").lower()
|
40
40
|
LOGGER.debug("Using PKI: %s", self.formatted_id())
|
41
41
|
self._subkeys_directory = self._settings.pki_directory.joinpath(Path(self.id))
|
42
42
|
|
@@ -110,6 +110,10 @@ class QolsysPluginRemote(QolsysPlugin):
|
|
110
110
|
else:
|
111
111
|
self._pki.set_id(self.settings.random_mac)
|
112
112
|
|
113
|
+
# Set mqtt_remote_client_id
|
114
|
+
self.settings.mqtt_remote_client_id = "qolsys-controller-" + self._pki.formatted_id()
|
115
|
+
LOGGER.debug("Using MQTT remoteClientID: %s", self.settings.mqtt_remote_client_id)
|
116
|
+
|
113
117
|
# Check if plugin is paired
|
114
118
|
if self.is_paired():
|
115
119
|
LOGGER.debug("Panel is Paired")
|
@@ -133,6 +137,24 @@ class QolsysPluginRemote(QolsysPlugin):
|
|
133
137
|
async def start_operation(self) -> None:
|
134
138
|
await self._task_manager.run(self.mqtt_connect_task(reconnect=True), self._mqtt_task_connect_label)
|
135
139
|
|
140
|
+
async def stop_operation(self) -> None:
|
141
|
+
LOGGER.debug("Stopping Plugin Operation")
|
142
|
+
|
143
|
+
if self.certificate_exchange_server is not None:
|
144
|
+
self.certificate_exchange_server.close()
|
145
|
+
|
146
|
+
if self.aiomqtt is not None:
|
147
|
+
await self.aiomqtt.__aexit__(None, None, None)
|
148
|
+
self.aiomqtt = None
|
149
|
+
|
150
|
+
self._task_manager.cancel(self._mqtt_task_connect_label)
|
151
|
+
self._task_manager.cancel(self._mqtt_task_listen_label)
|
152
|
+
self._task_manager.cancel(self._mqtt_task_ping_label)
|
153
|
+
self._task_manager.cancel(self._mqtt_task_config_label)
|
154
|
+
|
155
|
+
self.connected = False
|
156
|
+
self.connected_observer.notify()
|
157
|
+
|
136
158
|
async def mqtt_connect_task(self, reconnect: bool) -> None:
|
137
159
|
# Configure TLS parameters for MQTT connection
|
138
160
|
tls_params = aiomqtt.TLSParameters(
|
@@ -228,6 +250,7 @@ class QolsysPluginRemote(QolsysPlugin):
|
|
228
250
|
while True:
|
229
251
|
if self.aiomqtt is not None and self.connected:
|
230
252
|
await self.command_pingevent()
|
253
|
+
|
231
254
|
await asyncio.sleep(self.settings.mqtt_ping)
|
232
255
|
|
233
256
|
async def mqtt_listen_task(self) -> None:
|
@@ -434,7 +457,7 @@ class QolsysPluginRemote(QolsysPlugin):
|
|
434
457
|
ipAddress = self.settings.plugin_ip
|
435
458
|
eventName = "connect_v204"
|
436
459
|
macAddress = self.settings.random_mac
|
437
|
-
remoteClientID =
|
460
|
+
remoteClientID = self.settings.mqtt_remote_client_id
|
438
461
|
softwareVersion = "4.4.1"
|
439
462
|
producType = "tab07_rk68"
|
440
463
|
bssid = ""
|
@@ -646,7 +669,7 @@ class QolsysPluginRemote(QolsysPlugin):
|
|
646
669
|
|
647
670
|
topic = "mastermeid"
|
648
671
|
eventName = "disconnect"
|
649
|
-
remoteClientID =
|
672
|
+
remoteClientID = self.settings.mqtt_remote_client_id
|
650
673
|
requestID = str(uuid.uuid4())
|
651
674
|
remoteMacAddress = self.settings.random_mac
|
652
675
|
|
@@ -25,6 +25,7 @@ class QolsysSettings:
|
|
25
25
|
# MQTT
|
26
26
|
self._mqtt_timeout: int = 30
|
27
27
|
self._mqtt_ping: int = 600
|
28
|
+
self._mqtt_remote_client_id = ""
|
28
29
|
|
29
30
|
@property
|
30
31
|
def random_mac(self) -> str:
|
@@ -32,7 +33,7 @@ class QolsysSettings:
|
|
32
33
|
|
33
34
|
@random_mac.setter
|
34
35
|
def random_mac(self, random_mac: str) -> None:
|
35
|
-
self._random_mac = random_mac
|
36
|
+
self._random_mac = random_mac.lower()
|
36
37
|
|
37
38
|
@property
|
38
39
|
def plugin_ip(self) -> str:
|
@@ -89,6 +90,18 @@ class QolsysSettings:
|
|
89
90
|
def mqtt_ping(self) -> int:
|
90
91
|
return self._mqtt_ping
|
91
92
|
|
93
|
+
@mqtt_ping.setter
|
94
|
+
def mqtt_ping(self, ping:int) -> None:
|
95
|
+
self._mqtt_ping = ping
|
96
|
+
|
97
|
+
@property
|
98
|
+
def mqtt_remote_client_id(self) -> str:
|
99
|
+
return self._mqtt_remote_client_id
|
100
|
+
|
101
|
+
@mqtt_remote_client_id.setter
|
102
|
+
def mqtt_remote_client_id(self,client_id:str) -> None:
|
103
|
+
self._mqtt_remote_client_id = client_id
|
104
|
+
|
92
105
|
def check_panel_ip(self) -> bool:
|
93
106
|
if self._panel_ip == "":
|
94
107
|
LOGGER.debug("Invalid Panel IP: %s", self._panel_ip)
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_automation.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_dimmerlight.py
RENAMED
File without changes
|
{qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_doorlock.py
RENAMED
File without changes
|
{qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_eu_event.py
RENAMED
File without changes
|
{qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_heat_map.py
RENAMED
File without changes
|
{qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_history.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_master_slave.py
RENAMED
File without changes
|
{qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_partition.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_scene.py
RENAMED
File without changes
|
{qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_sensor.py
RENAMED
File without changes
|
{qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_smartsocket.py
RENAMED
File without changes
|
{qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_state.py
RENAMED
File without changes
|
File without changes
|
{qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_thermostat.py
RENAMED
File without changes
|
File without changes
|
{qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_user.py
RENAMED
File without changes
|
File without changes
|
{qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_weather.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_zwave_node.py
RENAMED
File without changes
|
{qolsys_controller-0.0.5 → qolsys_controller-0.0.8}/qolsys_controller/database/table_zwave_other.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|