qolsys-controller 0.0.18__py3-none-any.whl → 0.0.19__py3-none-any.whl
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/enum_zwave.py +1 -1
- qolsys_controller/plugin_remote.py +146 -6
- qolsys_controller/zwave_thermostat.py +5 -6
- {qolsys_controller-0.0.18.dist-info → qolsys_controller-0.0.19.dist-info}/METADATA +1 -1
- {qolsys_controller-0.0.18.dist-info → qolsys_controller-0.0.19.dist-info}/RECORD +7 -7
- {qolsys_controller-0.0.18.dist-info → qolsys_controller-0.0.19.dist-info}/WHEEL +0 -0
- {qolsys_controller-0.0.18.dist-info → qolsys_controller-0.0.19.dist-info}/licenses/LICENSE +0 -0
qolsys_controller/enum_zwave.py
CHANGED
@@ -9,6 +9,7 @@ import uuid
|
|
9
9
|
import aiomqtt
|
10
10
|
|
11
11
|
from .enum import PartitionAlarmState, PartitionSystemStatus
|
12
|
+
from .enum_zwave import ThermostatFanMode, ThermostatMode
|
12
13
|
from .errors import QolsysMqttError, QolsysSslError
|
13
14
|
from .mdns import QolsysMDNS
|
14
15
|
from .mqtt_command_queue import QolsysMqttCommandQueue
|
@@ -19,7 +20,6 @@ from .settings import QolsysSettings
|
|
19
20
|
from .state import QolsysState
|
20
21
|
from .task_manager import QolsysTaskManager
|
21
22
|
from .utils_mqtt import generate_random_mac
|
22
|
-
from .enum_zwave import ThermostateFanMode, ThermostatMode
|
23
23
|
|
24
24
|
LOGGER = logging.getLogger(__name__)
|
25
25
|
|
@@ -853,15 +853,156 @@ class QolsysPluginRemote(QolsysPlugin):
|
|
853
853
|
|
854
854
|
async def command_zwave_thermostat_setpoint_set(self, node_id: int, mode:ThermostatMode, setpoint:float) -> None:
|
855
855
|
# Command 67
|
856
|
-
LOGGER.debug("MQTT: Sending zwave_thermostat_setpoint_set command:
|
856
|
+
LOGGER.debug("MQTT: Sending zwave_thermostat_setpoint_set command: EXPERIMENTAL")
|
857
|
+
LOGGER.debug("MQTT: Sending zwave_thermostat_setpoint_set command")
|
858
|
+
ipcRequest = [{
|
859
|
+
"dataType": "int",
|
860
|
+
"dataValue": node_id,
|
861
|
+
},
|
862
|
+
{
|
863
|
+
"dataType": "int",
|
864
|
+
"dataValue": 0,
|
865
|
+
},
|
866
|
+
{
|
867
|
+
"dataType": "byteArray",
|
868
|
+
"dataValue": [67,1,mode,setpoint],
|
869
|
+
},
|
870
|
+
{
|
871
|
+
"dataType": "int",
|
872
|
+
"dataValue": 0,
|
873
|
+
},
|
874
|
+
{
|
875
|
+
"dataType": "int",
|
876
|
+
"dataValue": 106,
|
877
|
+
},
|
878
|
+
{
|
879
|
+
"dataType": "byteArray",
|
880
|
+
"dataValue": [0],
|
881
|
+
},
|
882
|
+
]
|
883
|
+
|
884
|
+
topic = "mastermeid"
|
885
|
+
eventName = "ipcCall"
|
886
|
+
ipcServiceName = "qzwaveservice"
|
887
|
+
ipcInterfaceName = "android.os.IQZwaveService"
|
888
|
+
ipcTransactionID = 47
|
889
|
+
requestID = str(uuid.uuid4())
|
890
|
+
remoteMacAddress = self.settings.random_mac
|
891
|
+
responseTopic = "response_" + self.settings.random_mac
|
892
|
+
|
893
|
+
payload = {"eventName": eventName,
|
894
|
+
"ipcServiceName": ipcServiceName,
|
895
|
+
"ipcInterfaceName": ipcInterfaceName,
|
896
|
+
"ipcTransactionID": ipcTransactionID,
|
897
|
+
"ipcRequest": ipcRequest,
|
898
|
+
"requestID": requestID,
|
899
|
+
"responseTopic": responseTopic,
|
900
|
+
"remoteMacAddress": remoteMacAddress}
|
901
|
+
|
902
|
+
await self.send_command(topic, payload, requestID)
|
903
|
+
LOGGER.debug("MQTT: Receiving zwave_thermostat_mode_set command")
|
857
904
|
|
858
905
|
async def command_zwave_thermostat_mode_set(self, node_id: int, mode:ThermostatMode) -> None:
|
859
906
|
# Command 64
|
860
|
-
LOGGER.debug("MQTT: Sending zwave_thermostat_mode_set command:
|
907
|
+
LOGGER.debug("MQTT: Sending zwave_thermostat_mode_set command: EXPERIMENTAL")
|
908
|
+
LOGGER.debug("MQTT: Sending zwave_thermostat_mode_set command")
|
909
|
+
ipcRequest = [{
|
910
|
+
"dataType": "int",
|
911
|
+
"dataValue": node_id,
|
912
|
+
},
|
913
|
+
{
|
914
|
+
"dataType": "int",
|
915
|
+
"dataValue": 0,
|
916
|
+
},
|
917
|
+
{
|
918
|
+
"dataType": "byteArray",
|
919
|
+
"dataValue": [64,1,mode],
|
920
|
+
},
|
921
|
+
{
|
922
|
+
"dataType": "int",
|
923
|
+
"dataValue": 0,
|
924
|
+
},
|
925
|
+
{
|
926
|
+
"dataType": "int",
|
927
|
+
"dataValue": 106,
|
928
|
+
},
|
929
|
+
{
|
930
|
+
"dataType": "byteArray",
|
931
|
+
"dataValue": [0],
|
932
|
+
},
|
933
|
+
]
|
861
934
|
|
862
|
-
|
935
|
+
topic = "mastermeid"
|
936
|
+
eventName = "ipcCall"
|
937
|
+
ipcServiceName = "qzwaveservice"
|
938
|
+
ipcInterfaceName = "android.os.IQZwaveService"
|
939
|
+
ipcTransactionID = 47
|
940
|
+
requestID = str(uuid.uuid4())
|
941
|
+
remoteMacAddress = self.settings.random_mac
|
942
|
+
responseTopic = "response_" + self.settings.random_mac
|
943
|
+
|
944
|
+
payload = {"eventName": eventName,
|
945
|
+
"ipcServiceName": ipcServiceName,
|
946
|
+
"ipcInterfaceName": ipcInterfaceName,
|
947
|
+
"ipcTransactionID": ipcTransactionID,
|
948
|
+
"ipcRequest": ipcRequest,
|
949
|
+
"requestID": requestID,
|
950
|
+
"responseTopic": responseTopic,
|
951
|
+
"remoteMacAddress": remoteMacAddress}
|
952
|
+
|
953
|
+
await self.send_command(topic, payload, requestID)
|
954
|
+
LOGGER.debug("MQTT: Receiving zwave_thermostat_mode_set command")
|
955
|
+
|
956
|
+
async def command_zwave_thermostat_fan_mode_set(self, node_id: int, fan_mode:ThermostatFanMode) -> None:
|
863
957
|
# Command 68
|
864
|
-
LOGGER.debug("MQTT: Sending zwave_thermostat_fan_mode_set command:
|
958
|
+
LOGGER.debug("MQTT: Sending zwave_thermostat_fan_mode_set command: EXPERIMENTAL")
|
959
|
+
LOGGER.debug("MQTT: Sending zwave_thermostat_fan_mode_set command")
|
960
|
+
ipcRequest = [{
|
961
|
+
"dataType": "int",
|
962
|
+
"dataValue": node_id,
|
963
|
+
},
|
964
|
+
{
|
965
|
+
"dataType": "int",
|
966
|
+
"dataValue": 0,
|
967
|
+
},
|
968
|
+
{
|
969
|
+
"dataType": "byteArray",
|
970
|
+
"dataValue": [68,1,fan_mode],
|
971
|
+
},
|
972
|
+
{
|
973
|
+
"dataType": "int",
|
974
|
+
"dataValue": 0,
|
975
|
+
},
|
976
|
+
{
|
977
|
+
"dataType": "int",
|
978
|
+
"dataValue": 106,
|
979
|
+
},
|
980
|
+
{
|
981
|
+
"dataType": "byteArray",
|
982
|
+
"dataValue": [0],
|
983
|
+
},
|
984
|
+
]
|
985
|
+
|
986
|
+
topic = "mastermeid"
|
987
|
+
eventName = "ipcCall"
|
988
|
+
ipcServiceName = "qzwaveservice"
|
989
|
+
ipcInterfaceName = "android.os.IQZwaveService"
|
990
|
+
ipcTransactionID = 47
|
991
|
+
requestID = str(uuid.uuid4())
|
992
|
+
remoteMacAddress = self.settings.random_mac
|
993
|
+
responseTopic = "response_" + self.settings.random_mac
|
994
|
+
|
995
|
+
payload = {"eventName": eventName,
|
996
|
+
"ipcServiceName": ipcServiceName,
|
997
|
+
"ipcInterfaceName": ipcInterfaceName,
|
998
|
+
"ipcTransactionID": ipcTransactionID,
|
999
|
+
"ipcRequest": ipcRequest,
|
1000
|
+
"requestID": requestID,
|
1001
|
+
"responseTopic": responseTopic,
|
1002
|
+
"remoteMacAddress": remoteMacAddress}
|
1003
|
+
|
1004
|
+
await self.send_command(topic, payload, requestID)
|
1005
|
+
LOGGER.debug("MQTT: Receiving zwave_thermostat_fan_mode_set command")
|
865
1006
|
|
866
1007
|
async def command_zwave_switch_multi_level(self, node_id: int, level: int) -> None:
|
867
1008
|
LOGGER.debug("MQTT: Sending zwave_switch_multi_level command")
|
@@ -875,7 +1016,6 @@ class QolsysPluginRemote(QolsysPlugin):
|
|
875
1016
|
},
|
876
1017
|
{
|
877
1018
|
# [38,1,level] ZWAVE MULTILEVELSWITCH SET (level 255 to set to previous state)
|
878
|
-
# [38,2] ZWAVE MULTILEVELSWITCH GET
|
879
1019
|
"dataType": "byteArray",
|
880
1020
|
"dataValue": [38,1,level],
|
881
1021
|
},
|
@@ -1,8 +1,7 @@
|
|
1
1
|
import logging
|
2
2
|
|
3
|
+
from .enum_zwave import ThermostatFanMode, ThermostatMode
|
3
4
|
from .zwave_device import QolsysZWaveDevice
|
4
|
-
from .enum_zwave import ThermostateFanMode, ThermostatMode
|
5
|
-
import ast
|
6
5
|
|
7
6
|
LOGGER = logging.getLogger(__name__)
|
8
7
|
|
@@ -266,27 +265,27 @@ class QolsysThermostat(QolsysZWaveDevice):
|
|
266
265
|
bitmask = int.from_bytes(byte_array, byteorder="little")
|
267
266
|
|
268
267
|
mode_array = []
|
269
|
-
for mode in
|
268
|
+
for mode in ThermostatMode:
|
270
269
|
if mode.value & bitmask:
|
271
270
|
mode_array.append(mode)
|
272
271
|
|
273
272
|
return mode_array
|
274
273
|
|
275
|
-
def thermostat_fan_mode(self) ->
|
274
|
+
def thermostat_fan_mode(self) -> ThermostatFanMode:
|
276
275
|
thermostat_fan_mode = int(self._thermostat_fan_mode)
|
277
276
|
for mode in ThermostatMode:
|
278
277
|
if thermostat_fan_mode == mode:
|
279
278
|
return mode
|
280
279
|
return None
|
281
280
|
|
282
|
-
def available_thermostat_fan_mode(self) -> list[
|
281
|
+
def available_thermostat_fan_mode(self) -> list[ThermostatFanMode]:
|
283
282
|
|
284
283
|
int_list = [int(x) for x in self._thermostat_fan_mode_bitmask.split(",")]
|
285
284
|
byte_array = bytes(int_list)
|
286
285
|
bitmask = int.from_bytes(byte_array, byteorder="little")
|
287
286
|
|
288
287
|
fan_mode_array = []
|
289
|
-
for mode in
|
288
|
+
for mode in ThermostatFanMode:
|
290
289
|
if mode.value & bitmask:
|
291
290
|
fan_mode_array.append(mode)
|
292
291
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: qolsys-controller
|
3
|
-
Version: 0.0.
|
3
|
+
Version: 0.0.19
|
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
|
@@ -1,7 +1,7 @@
|
|
1
1
|
qolsys_controller/__init__.py,sha256=TkjMFBP9VNyGLC84JQZ_tTeD8nJImkGgPMkQFGr2428,88
|
2
2
|
qolsys_controller/controller.py,sha256=rLjMMZBJCPqrE9oY_vZRMFZAsIm5UlXyRtUao3F4Qr0,1309
|
3
3
|
qolsys_controller/enum.py,sha256=oIOY0NE7L7b8zMp69sQghUnCG90IJU-RXbPqKP1Xx04,3294
|
4
|
-
qolsys_controller/enum_zwave.py,sha256=
|
4
|
+
qolsys_controller/enum_zwave.py,sha256=q10YtzOXW3wfYORU1o7_WhTfb3GpC_xstjHzQAitHJ0,740
|
5
5
|
qolsys_controller/errors.py,sha256=Z_eVJ4XqWucdn1lu_83DPnEKEG4L3FMfjhz5iO6RuBM,1176
|
6
6
|
qolsys_controller/mdns.py,sha256=3_d-_K5Fyxc-2s0Fo1advTSpD72P369Hou1Ko0z__Ag,606
|
7
7
|
qolsys_controller/mqtt_command_queue.py,sha256=FjSbjK3_3SXV5eQPfQ-k8HOI5Tbu2aWzAxe4uXymK64,937
|
@@ -11,7 +11,7 @@ qolsys_controller/partition.py,sha256=j8FrWvA19_MpQvXDLKl5VvkqX_rcs4GWfFGwyQ2VFw
|
|
11
11
|
qolsys_controller/pki.py,sha256=_e0tiNF8Hypb37cHr7x8yqUZDaqbzRzP45AitTtmzk4,8663
|
12
12
|
qolsys_controller/plugin.py,sha256=Qh0irFbuw9R2QF3jOFTJw70ceVxK1ld5_sW7VnpOrA8,819
|
13
13
|
qolsys_controller/plugin_c4.py,sha256=71o5Y7Y13GO0vWCPIsCtpqXxrplryyqt8ua5L8F4StQ,382
|
14
|
-
qolsys_controller/plugin_remote.py,sha256=
|
14
|
+
qolsys_controller/plugin_remote.py,sha256=ZDQ7_LRL096nnpx5RucJHQBF8SEbgmkT0cp234z2oaM,47305
|
15
15
|
qolsys_controller/scene.py,sha256=inRZNpAQ0BmQoSbeCSYc4HAP97srncBj1jqZDgGEjLI,1900
|
16
16
|
qolsys_controller/settings.py,sha256=ywtlSN4TNUi0NRDjw77lr28fcUD8qYPHNVP67dCuGiQ,5421
|
17
17
|
qolsys_controller/state.py,sha256=VeJ5dzbxTQQ4aYkjKMAZLmrTuLOWkqSnLMJbcrFxLME,16904
|
@@ -24,7 +24,7 @@ qolsys_controller/zwave_garagedoor.py,sha256=xoR1I_qm4S0Ir6XvOC2Q9asq69NeJnJ4ZkV
|
|
24
24
|
qolsys_controller/zwave_generic.py,sha256=gadtyUfPGsIzJaGc2zT5AQoFVxR_RsoagHE7x7knRzc,245
|
25
25
|
qolsys_controller/zwave_lock.py,sha256=j80McYDNHFjSuaTxG6PJpYWjnQKlrAHlN3rSUUNlzL4,4979
|
26
26
|
qolsys_controller/zwave_outlet.py,sha256=lxGB-jth11dHPUkT7jC411GdLCGDdct4mAGu05SndCA,185
|
27
|
-
qolsys_controller/zwave_thermostat.py,sha256=
|
27
|
+
qolsys_controller/zwave_thermostat.py,sha256=IVe6F16aTt3v7ibC0C5X77jzmZOgNWNtfElMwVC3VXU,14610
|
28
28
|
qolsys_controller/database/db.py,sha256=Je1owq3HbSbd63hqx0U_fOBLLYRwMUpmtVpX74KVops,14510
|
29
29
|
qolsys_controller/database/table.py,sha256=IBhNToCfLTum0Yu2cUcwaUGU7HvSm-oHu5lFVUgdFKQ,5871
|
30
30
|
qolsys_controller/database/table_alarmedsensor.py,sha256=BZ6K9CQbcXRw0rf6WODS0NFf1wptu5CxuRtsLQrCsSQ,808
|
@@ -62,7 +62,7 @@ qolsys_controller/database/table_zwave_association_group.py,sha256=B8SHPU335a2wh
|
|
62
62
|
qolsys_controller/database/table_zwave_history.py,sha256=iLCkRZOsQmc5TQT0-IngyNkrG78kQrEhITPChmNt1bM,942
|
63
63
|
qolsys_controller/database/table_zwave_node.py,sha256=hAsC7Qn6riqqViAJ61cBaCs5tmD9TmIv4_KynzkJFpU,2567
|
64
64
|
qolsys_controller/database/table_zwave_other.py,sha256=RzWuWMQA3czUNRWAP8SaAk6tiTeUgGl3J97npzW6AA0,573
|
65
|
-
qolsys_controller-0.0.
|
66
|
-
qolsys_controller-0.0.
|
67
|
-
qolsys_controller-0.0.
|
68
|
-
qolsys_controller-0.0.
|
65
|
+
qolsys_controller-0.0.19.dist-info/METADATA,sha256=S1yEMC1xz-kbxtLDpz49UXD_cZO-2EkHbDQzlJ-Qf0s,4252
|
66
|
+
qolsys_controller-0.0.19.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
67
|
+
qolsys_controller-0.0.19.dist-info/licenses/LICENSE,sha256=GBHv9eggdA5ablDMW1xiLzGDZ2gCIhcKGW__c2aVIOc,1069
|
68
|
+
qolsys_controller-0.0.19.dist-info/RECORD,,
|
File without changes
|
File without changes
|