qolsys-controller 0.0.4__tar.gz → 0.0.5__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.4/.github/workflows/python-app.yml → qolsys_controller-0.0.5/.github/workflows/build.yml +1 -1
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/PKG-INFO +7 -3
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/README.md +6 -2
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/pyproject.toml +1 -1
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/panel.py +17 -16
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/settings.py +29 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/.github/workflows/publish.yml +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/.gitignore +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/Info_mqtt.md +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/LICENSE +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/bin/qolsys.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/example.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/info_pairing.md +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/info_qolsys.md +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/__init__.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/controller.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/db.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_alarmedsensor.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_automation.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_country_locale.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_dashboard_msgs.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_dimmerlight.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_doorlock.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_eu_event.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_heat_map.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_history.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_iqremotesettings.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_iqrouter_network_config.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_iqrouter_user_device.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_master_slave.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_partition.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_powerg_device.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_qolsyssettings.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_scene.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_sensor.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_smartsocket.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_state.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_tcc.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_thermostat.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_trouble_conditions.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_user.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_virtual_device.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_weather.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_zigbee_device.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_zwave_association_group.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_zwave_history.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_zwave_node.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_zwave_other.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/enum.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/errors.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/mdns.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/mqtt_command_queue.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/observable.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/partition.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/pki.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/plugin.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/plugin_c4.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/plugin_remote.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/state.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/task_manager.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/utils_mqtt.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/zone.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/zwave_device.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/zwave_dimmer.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/zwave_garagedoor.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/zwave_generic.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/zwave_lock.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/zwave_outlet.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/zwave_thermostat.py +0 -0
- {qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/requirements.txt +0 -0
@@ -1,7 +1,7 @@
|
|
1
1
|
# This workflow will install Python dependencies, run tests and lint with a single version of Python
|
2
2
|
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python
|
3
3
|
|
4
|
-
name:
|
4
|
+
name: Build
|
5
5
|
|
6
6
|
on:
|
7
7
|
push:
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: qolsys-controller
|
3
|
-
Version: 0.0.
|
3
|
+
Version: 0.0.5
|
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
|
@@ -14,7 +14,9 @@ Classifier: Topic :: Home Automation
|
|
14
14
|
Requires-Python: >=3.12
|
15
15
|
Description-Content-Type: text/markdown
|
16
16
|
|
17
|
-
#
|
17
|
+
# Qolsys Controller - qolsys-controller
|
18
|
+
|
19
|
+
[](https://github.com/EHylands/QolsysController/actions/workflows/python-app.yml)
|
18
20
|
|
19
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.
|
20
22
|
|
@@ -62,7 +64,9 @@ A Python module that emulates a virtual IQ Remote device, enabling full **local
|
|
62
64
|
|
63
65
|
## ⚠️ Certificate Warning
|
64
66
|
|
65
|
-
During pairing, the main panel issues **only one signed client certificate** per virtual IQ Remote. If any key files are lost or deleted, re-pairing may become impossible.
|
67
|
+
During pairing, the main panel issues **only one signed client certificate** per virtual IQ Remote. If any key files are lost or deleted, re-pairing may become impossible.
|
68
|
+
|
69
|
+
A new PKI, including a new private key, can be recreated under specific circumstances, though the precise conditions remain unknown at this time.
|
66
70
|
|
67
71
|
**Important:**
|
68
72
|
Immediately back up the following files from the `pki/` directory after initial pairing:
|
@@ -1,4 +1,6 @@
|
|
1
|
-
#
|
1
|
+
# Qolsys Controller - qolsys-controller
|
2
|
+
|
3
|
+
[](https://github.com/EHylands/QolsysController/actions/workflows/python-app.yml)
|
2
4
|
|
3
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.
|
4
6
|
|
@@ -46,7 +48,9 @@ A Python module that emulates a virtual IQ Remote device, enabling full **local
|
|
46
48
|
|
47
49
|
## ⚠️ Certificate Warning
|
48
50
|
|
49
|
-
During pairing, the main panel issues **only one signed client certificate** per virtual IQ Remote. If any key files are lost or deleted, re-pairing may become impossible.
|
51
|
+
During pairing, the main panel issues **only one signed client certificate** per virtual IQ Remote. If any key files are lost or deleted, re-pairing may become impossible.
|
52
|
+
|
53
|
+
A new PKI, including a new private key, can be recreated under specific circumstances, though the precise conditions remain unknown at this time.
|
50
54
|
|
51
55
|
**Important:**
|
52
56
|
Immediately back up the following files from the `pki/` directory after initial pairing:
|
@@ -93,22 +93,23 @@ class QolsysPanel(QolsysObservable):
|
|
93
93
|
self._product_type = ""
|
94
94
|
|
95
95
|
def read_users_file(self) -> bool:
|
96
|
-
# Loading user_code data from users.conf file
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
96
|
+
# Loading user_code data from users.conf file if exists
|
97
|
+
if self._settings.users_file_path.is_file():
|
98
|
+
try:
|
99
|
+
path = self._settings.users_file_path
|
100
|
+
with path.open("r", encoding="utf-8") as file:
|
101
|
+
try:
|
102
|
+
users = json.load(file)
|
103
|
+
for user in users:
|
104
|
+
self._users.append(user)
|
105
|
+
|
106
|
+
except json.JSONDecodeError:
|
107
|
+
LOGGER.exception("users.conf file json error")
|
108
|
+
return False
|
109
|
+
|
110
|
+
except FileNotFoundError:
|
111
|
+
LOGGER.exception("users.conf file not found")
|
112
|
+
return False
|
112
113
|
|
113
114
|
return True
|
114
115
|
|
@@ -123,4 +123,33 @@ class QolsysSettings:
|
|
123
123
|
return False
|
124
124
|
|
125
125
|
LOGGER.debug("Using config_directory: %s", self.config_directory.resolve())
|
126
|
+
|
127
|
+
# Create pki directory if not found
|
128
|
+
if not self.pki_directory.is_dir():
|
129
|
+
LOGGER.debug("Creating pki_directory: %s", self.pki_directory.resolve())
|
130
|
+
try:
|
131
|
+
self.pki_directory.mkdir(parents=True)
|
132
|
+
except PermissionError:
|
133
|
+
LOGGER.exception("Permission denied: Unable to create: %s", self.pki_directory.resolve())
|
134
|
+
return False
|
135
|
+
except Exception:
|
136
|
+
LOGGER.exception("Error creating pki_directory: %s", self.pki_directory.resolve())
|
137
|
+
return False
|
138
|
+
|
139
|
+
LOGGER.debug("Using pki_directory: %s", self.pki_directory.resolve())
|
140
|
+
|
141
|
+
# Create media directory if not found
|
142
|
+
if not self._media_directory.is_dir():
|
143
|
+
LOGGER.debug("Creating media_directory: %s", self._media_directory.resolve())
|
144
|
+
try:
|
145
|
+
self._media_directory.mkdir(parents=True)
|
146
|
+
except PermissionError:
|
147
|
+
LOGGER.exception("Permission denied: Unable to create: %s", self._media_directory.resolve())
|
148
|
+
return False
|
149
|
+
except Exception:
|
150
|
+
LOGGER.exception("Error creating media_directory: %s", self._media_directory.resolve())
|
151
|
+
return False
|
152
|
+
|
153
|
+
LOGGER.debug("Using media_directory: %s", self._media_directory.resolve())
|
154
|
+
|
126
155
|
return True
|
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.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_automation.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_dimmerlight.py
RENAMED
File without changes
|
{qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_doorlock.py
RENAMED
File without changes
|
{qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_eu_event.py
RENAMED
File without changes
|
{qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_heat_map.py
RENAMED
File without changes
|
{qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_history.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_master_slave.py
RENAMED
File without changes
|
{qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_partition.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_scene.py
RENAMED
File without changes
|
{qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_sensor.py
RENAMED
File without changes
|
{qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_smartsocket.py
RENAMED
File without changes
|
{qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_state.py
RENAMED
File without changes
|
File without changes
|
{qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_thermostat.py
RENAMED
File without changes
|
File without changes
|
{qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_user.py
RENAMED
File without changes
|
File without changes
|
{qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_weather.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/qolsys_controller/database/table_zwave_node.py
RENAMED
File without changes
|
{qolsys_controller-0.0.4 → qolsys_controller-0.0.5}/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
|
File without changes
|