qolsys-controller 0.0.39__py3-none-any.whl → 0.0.41__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.

Potentially problematic release.


This version of qolsys-controller might be problematic. Click here for more details.

@@ -237,6 +237,19 @@ class QolsysDB:
237
237
 
238
238
  return zones
239
239
 
240
+ def get_powerg(self, short_id: str) -> dict:
241
+
242
+ self.cursor.execute(f"SELECT * FROM {self.table_powerg_device} WHERE shortID = ?",short_id)
243
+ row = self.cursor.fetchone()
244
+
245
+ if row is None:
246
+ LOGGER.debug("%s value not found", short_id)
247
+ return None
248
+
249
+ columns = [description[0] for description in self.cursor.description]
250
+ return dict(zip(columns, row, strict=True))
251
+
252
+
240
253
  def get_setting_panel(self, setting: str) -> str:
241
254
  self.cursor.execute(f"""SELECT value FROM {self.table_qolsyssettings.table}
242
255
  WHERE name = ? and partition_id = ? """, (setting, "0"))
@@ -17,6 +17,7 @@ class QolsysTableDoorLock(QolsysTable):
17
17
 
18
18
  self._columns = [
19
19
  "_id",
20
+ "capabilities",
20
21
  "version",
21
22
  "opr",
22
23
  "partition_id",
@@ -18,6 +18,30 @@ class QolsysTablePowerGDevice(QolsysTable):
18
18
 
19
19
  self._columns = [
20
20
  "_id",
21
+ "avg_link_quality",
22
+ "battery_voltage",
23
+ "capabilities",
24
+ "dealer_code",
25
+ "extras",
26
+ "firmware_version",
27
+ "led",
28
+ "light",
29
+ "link_quality",
30
+ "link_status",
31
+ "longID",
32
+ "manufacturing_id",
33
+ "notification_period",
34
+ "opr",
35
+ "parent_node",
36
+ "partition_id",
37
+ "radio_id",
38
+ "radio_version",
39
+ "shortID",
40
+ "status_data",
41
+ "supported_type",
42
+ "temperature",
43
+ "version",
44
+ "writeable_capabilities",
21
45
  ]
22
46
 
23
47
  self._create_table()
@@ -62,6 +62,7 @@ class QolsysTableSensor(QolsysTable):
62
62
  "latestdBm",
63
63
  "averagedBm",
64
64
  "serial_number",
65
+ "secondary_panel_mac_address",
65
66
  "extras",
66
67
  "allowspeaker",
67
68
  ]
@@ -39,6 +39,7 @@ class QolsysTableUser(QolsysTable):
39
39
  "start_date",
40
40
  "tag_flag",
41
41
  "check_in_time",
42
+ "user_feature1",
42
43
  ]
43
44
 
44
45
  self._create_table()
@@ -57,6 +57,7 @@ class QolsysTableZwaveNode(QolsysTable):
57
57
  "last_rediscover_time",
58
58
  "neighbour_info",
59
59
  "last_node_test_time",
60
+ "notification_capabilities",
60
61
  "endpoint",
61
62
  "endpoint_details",
62
63
  "device_wakeup_time",
@@ -13,10 +13,23 @@ class QolsysTableZwaveOther(QolsysTable):
13
13
  self._uri = "content://com.qolsys.qolsysprovider.ZwaveOtherDeviceContentProvider/zwave_other"
14
14
  self._table = "zwave_other"
15
15
  self._abort_on_error = False
16
- self._implemented = False
16
+ self._implemented = True
17
17
 
18
18
  self._columns = [
19
19
  "_id",
20
+ "created_date",
21
+ "device_name",
22
+ "device_params_1",
23
+ "device_params_2",
24
+ "endpoint",
25
+ "last_updated_date",
26
+ "node_id",
27
+ "node_type",
28
+ "opr",
29
+ "paired_status",
30
+ "partition_id",
31
+ "status",
32
+ "version",
20
33
  ]
21
34
 
22
35
  self._create_table()
qolsys_controller/enum.py CHANGED
@@ -47,6 +47,7 @@ class ZoneStatus(StrEnum):
47
47
 
48
48
  class ZoneSensorType(StrEnum):
49
49
  DOOR_WINDOW = "Door_Window"
50
+ DOORBELL = "Doorbell"
50
51
  MOTION = "Motion"
51
52
  GLASS_BREAK = "GlassBreak"
52
53
  KEY_FOB = "KeyFob"
@@ -62,7 +63,6 @@ class ZoneSensorType(StrEnum):
62
63
  SHOCK = "Shock"
63
64
  FREEZE = "Freeze"
64
65
  TILT = "Tilt"
65
- DOORBELL = "Doorbell"
66
66
  SMOKE_M = "Smoke_M"
67
67
  # DOOR_WINDOW_M = "" #TBD
68
68
  # OCCUPANCY = "" #TBD
@@ -73,22 +73,26 @@ class ZoneSensorType(StrEnum):
73
73
  BLUETOOTH = "Bluetooth"
74
74
  TAKEOVER_MODULE = "TakeoverModule"
75
75
  TRANSLATOR = "Translator"
76
+ TAMPER = "Tamper Sensor"
76
77
 
77
78
 
78
79
  class ZoneSensorGroup(StrEnum):
80
+ CO = "co"
79
81
  FIXED_INTRUSION = "fixedintrusion"
80
- MOBILE_INTRUSION = "mobileintrusion"
81
82
  FIXED_SILENT = "fixedsilentkey"
83
+ MOBILE_INTRUSION = "mobileintrusion"
82
84
  MOBILE_SILENT = "mobilesilentkey"
83
85
  FIXED_AUXILIARY = "fixedmedical"
84
86
  FIXED_SILENT_AUXILIARY = "fixedsilentmedical"
87
+ LOCAL_SAFETY_SENSOR = "localsafety"
85
88
  MOBILE_AUXILIARY = "mobilemedical"
86
89
  MOBILE_SILENT_AUXILIARY = "mobilesilentmedical"
87
90
  SAFETY_MOTION = "safetymotion"
88
91
  GLASS_BREAK = "glassbreak"
89
92
  GLASS_BREAK_AWAY_ONLY = "glassbreakawayonly"
90
93
  SMOKE_HEAT = "smoke_heat"
91
- CO = "co"
94
+ TAMPER_ZONE = "tamperzone"
95
+ SHOCK = "shock"
92
96
 
93
97
 
94
98
  # ENTRY_EXIT_NORMAL_DELAY = "" #TBD
@@ -96,7 +100,6 @@ class ZoneSensorGroup(StrEnum):
96
100
  # INSTANT_PERIMETER_DW = "" #TBD
97
101
  # INSTRANT_INTERIOR_DOOR = "" #TBD
98
102
  # AWAY_INSTANT_FOLLOWER_DELAY = "" #TBD
99
- # LOCAL_SAFETY_SENSOR = "" #TBD
100
103
  # REPORTING_SAFETY_SENSOR = "" #TBD
101
104
  # DELAYED_REPORTING_SAFETY_SENSOR = "" #TBD
102
105
  # AWAY_INSTANT_MOTION = "" #TBD
@@ -406,7 +406,7 @@ class QolsysPanel(QolsysObservable):
406
406
  case self.db.table_sensor.uri:
407
407
  self.db.table_sensor.update(selection, selection_argument, content_values)
408
408
  zoneid = content_values.get("zoneid", "")
409
- zone = self._state.zone(zoneid)
409
+ zone = self._state.zone(zone_id=zoneid)
410
410
  if zone is not None:
411
411
  zone.update(content_values)
412
412
 
@@ -521,7 +521,14 @@ class QolsysPanel(QolsysObservable):
521
521
  self.db.table_eu_event.update(selection,selection_argument,content_values)
522
522
  # No action needed
523
523
 
524
-
524
+ # Update PowerG Device
525
+ case self.db.table_powerg_device:
526
+ self.db.table_powerg_device.update(selection,selection_argument,content_values)
527
+ short_id = content_values.get("shortID", "")
528
+ zone = self._state.zone_from_short_id(short_id)
529
+ if zone is not None:
530
+ LOGGER.debug("iq2meid updating powerg device for zoneid(%s):%s", zone.zone_id,content_values)
531
+ zone.update_powerg(content_values)
525
532
 
526
533
  case _:
527
534
  LOGGER.debug("iq2meid updating unknow uri:%s", uri)
@@ -601,6 +608,9 @@ class QolsysPanel(QolsysObservable):
601
608
  case self.db.table_eu_event:
602
609
  self.db.table_eu_event.delete(selection,selection_argument)
603
610
 
611
+ case self.db.table_powerg_device:
612
+ self.db.table_powerg_device.delete(selection,selection_argument)
613
+
604
614
  case _:
605
615
  LOGGER.debug("iq2meid deleting unknown uri:%s", uri)
606
616
  LOGGER.debug(data)
@@ -729,6 +739,10 @@ class QolsysPanel(QolsysObservable):
729
739
  case self.db.table_eu_event:
730
740
  self.db.table_eu_event.insert(data=content_values)
731
741
 
742
+ # PowerG Device
743
+ case self.db.table_powerg_device:
744
+ self.db.table_powerg_device.insert(data=content_values)
745
+
732
746
  case _:
733
747
  LOGGER.debug("iq2meid inserting unknow uri:%s", uri)
734
748
  LOGGER.debug(data)
@@ -820,7 +834,17 @@ class QolsysPanel(QolsysObservable):
820
834
 
821
835
  # Create sensors array
822
836
  for zone_info in zones_list:
823
- zones.append(QolsysZone(zone_info,self._settings))
837
+
838
+ new_zone = QolsysZone(zone_info,self._settings)
839
+
840
+ if new_zone.current_capability == "POWERG":
841
+ LOGGER.debug("Loading PowerG device info for zone %s", new_zone.id)
842
+ powerg_dict = self.db.get_powerg(short_id= new_zone.shortID)
843
+ LOGGER.debug("PowerG device info: %s", powerg_dict)
844
+ if powerg_dict is not None:
845
+ new_zone.update_powerg(powerg_dict)
846
+
847
+ zones.append(new_zone)
824
848
 
825
849
  return zones
826
850
 
@@ -149,6 +149,12 @@ class QolsysState(QolsysObservable):
149
149
  return zone
150
150
  return None
151
151
 
152
+ def zone_from_short_id(self, short_id: int) -> QolsysZone | None:
153
+ for zone in self.zones:
154
+ if zone.shortID == short_id:
155
+ return zone
156
+ return None
157
+
152
158
  def zone_add(self, new_zone: QolsysZone) -> None:
153
159
  for zone in self.zones:
154
160
  if new_zone.zone_id == zone.zone_id:
@@ -299,6 +305,7 @@ class QolsysState(QolsysObservable):
299
305
  if state_zone.zone_id == db_zone.zone_id:
300
306
  LOGGER.debug("sync_data - update Zone%s", state_zone.zone_id)
301
307
  state_zone.update(db_zone.to_dict())
308
+ state_zone.update_powerg(db_zone.to_powerg_dict())
302
309
 
303
310
  # Delete zones
304
311
  for state_zone in self.zones:
qolsys_controller/zone.py CHANGED
@@ -11,7 +11,7 @@ LOGGER = logging.getLogger(__name__)
11
11
 
12
12
  class QolsysZone(QolsysObservable):
13
13
 
14
- def __init__(self, data: dict, settings: QolsysSettings) -> None:
14
+ def __init__(self, data: dict, settings: QolsysSettings) -> None: # noqa: PLR0915
15
15
  super().__init__()
16
16
 
17
17
  self._settings = settings
@@ -27,6 +27,9 @@ class QolsysZone(QolsysObservable):
27
27
  self._averagedBm = data.get("averagedBm", "")
28
28
  self._latestdBm = data.get("latestdBm", "")
29
29
  self._ac_status = data.get("ac_status", "")
30
+ self._shortID = data.get("shortID", "")
31
+ self._device_capability = data.get("device_capability", "")
32
+ self._current_capability = data.get("current_capability", "")
30
33
 
31
34
  self._id = data.get("_id", "")
32
35
  self._zone_type = data.get("zone_type", "")
@@ -56,14 +59,69 @@ class QolsysZone(QolsysObservable):
56
59
  self._created_by = data.get("created_by", "")
57
60
  self._updated_by = data.get("updated_by", "")
58
61
  self._updated_date = data.get("updated_date", "")
59
- self._shortID = data.get("shortID", "")
60
62
  self._diag_24hr = data.get("diag_24hr", "")
61
- self._device_capability = data.get("device_capability", "")
62
63
  self._sub_type = data.get("sub_type", "")
63
64
  self._powerg_manufacture_id = data.get("powerg_manufacture_id", "")
64
65
  self._parent_node = data.get("parent_node", "")
65
66
  self._extras = data.get("extras", "")
66
67
 
68
+ # EXTRA POWERG ATTRIBUTES
69
+ self._powerg_long_id = ""
70
+ self._powerg_status_data:str = ""
71
+ self._powerg_temperature:str = ""
72
+ self._powerg_light:str = ""
73
+ self._powerg_notification_period = ""
74
+ self._powerg_average_link_quality = ""
75
+ self._powerg_link_quality = ""
76
+ self._powerg_link_status = ""
77
+ self._powerg_battery_voltage = ""
78
+
79
+ def is_powerg_enabled(self) -> bool:
80
+ return self._current_capability == "PowerG"
81
+
82
+ def is_powerg_temperature_enabled(self) -> bool:
83
+ return self._powerg_temperature != ""
84
+
85
+ def is_powerg_light_enabled(self) -> bool:
86
+ return self._powerg_light != ""
87
+
88
+ def update_powerg(self, data: dict) -> None:
89
+ short_id_update = data.get("shortID", "")
90
+ if short_id_update != self.shortID:
91
+ LOGGER.error("Updating Zone%s PowerG Attribute (%s) with Zone%s (different shortID)", self._zone_id, self.sensorname, short_id_update)
92
+ return
93
+
94
+ self.start_batch_update()
95
+
96
+ if "longID" in data:
97
+ self._powerg_long_id = data.get("longID")
98
+
99
+ if "status_data" in data:
100
+ self.powerg_status_data = data.get("status_data")
101
+
102
+ if "temperature" in data:
103
+ self.powerg_temperature = data.get("temperature")
104
+
105
+ if "light" in data:
106
+ self.powerg_light = data.get("light")
107
+
108
+ if "notification_period" in data:
109
+ self._powerg_notification_period = data.get("notification_period")
110
+
111
+ if "average_link_quality" in data:
112
+ self._powerg_average_link_quality = data.get("average_link_quality")
113
+
114
+ if "link_quality" in data:
115
+ self._powerg_link_quality = data.get("link_quality")
116
+
117
+ if "link_status" in data:
118
+ self._powerg_link_status = data.get("link_status")
119
+
120
+ if "battery_voltage" in data:
121
+ self._powerg_battery_voltage = data.get("battery_voltage")
122
+
123
+ self.end_batch_update()
124
+
67
125
  def update(self, data: dict) -> None: # noqa: C901, PLR0912, PLR0915
68
126
 
69
127
  zone_id_update = data.get("zoneid", "")
@@ -73,31 +131,24 @@ class QolsysZone(QolsysObservable):
73
131
 
74
132
  self.start_batch_update()
75
133
 
76
- # Update sensor_name
77
134
  if "sensorname" in data:
78
135
  self.sensorname = data.get("sensorname")
79
136
 
80
- # Update sensorsatus
81
137
  if "sensorstatus" in data:
82
138
  self.sensorstatus = ZoneStatus(data.get("sensorstatus"))
83
139
 
84
- # Update battery_status
85
140
  if "battery_status" in data:
86
141
  self.battery_status = data.get("battery_status")
87
142
 
88
- # Update time
89
143
  if "time" in data:
90
144
  self.time = data.get("time")
91
145
 
92
- # Update partition_id
93
146
  if "partition_id" in data:
94
147
  self._partition_id = data.get("partition_id")
95
148
 
96
- # Update lastestdBm
97
149
  if "lastestdBm" in data:
98
150
  self.latestdBm = data.get("latestdBm")
99
151
 
100
- # Update averagedBm
101
152
  if "averagedBm" in data:
102
153
  self.averagedBm = data.get("averagedBm")
103
154
 
@@ -205,10 +256,18 @@ class QolsysZone(QolsysObservable):
205
256
  def partition_id(self) -> str:
206
257
  return self._partition_id
207
258
 
259
+ @property
260
+ def shortID(self) -> str:
261
+ return self._shortID
262
+
208
263
  @property
209
264
  def time(self) -> str:
210
265
  return self._time
211
266
 
267
+ @property
268
+ def current_capability(self) -> str:
269
+ return self._current_capability
270
+
212
271
  @property
213
272
  def latestdBm(self) -> str:
214
273
  return self._latestdBm
@@ -217,6 +276,43 @@ class QolsysZone(QolsysObservable):
217
276
  def averagedBm(self) -> str:
218
277
  return self._averagedBm
219
278
 
279
+ @property
280
+ def device_capability(self) -> str:
281
+ return self._device_capability
282
+
283
+ @property
284
+ def powerg_temperature(self) -> float | None:
285
+ return self._powerg_temperature
286
+
287
+ @property
288
+ def powerg_light(self) -> float | None:
289
+ return self._powerg_light
290
+
291
+ @property
292
+ def powerg_status_data(self) -> str:
293
+ return self._powerg_status_data
294
+
295
+ @powerg_temperature.setter
296
+ def powerg_temperature(self, value: str) -> None:
297
+ if self._powerg_temperature != value:
298
+ LOGGER.debug("Zone%s (%s) - powerg_temperature: %s", self._zone_id, self.sensorname, value)
299
+ self._powerg_temperature = value
300
+ self.notify()
301
+
302
+ @powerg_light.setter
303
+ def powerg_light(self, value: str) -> None:
304
+ if self._powerg_light != value:
305
+ LOGGER.debug("Zone%s (%s) - powerg_light: %s", self._zone_id, self.sensorname, value)
306
+ self._powerg_light = value
307
+ self.notify()
308
+
309
+ @powerg_status_data.setter
310
+ def powerg_status_data(self, value: str) -> None:
311
+ if self._powerg_status_data != value:
312
+ LOGGER.debug("Zone%s (%s) - powerg_status_data: %s", self._zone_id, self.sensorname, value)
313
+ self._powerg_status_data = value
314
+ self.notify()
315
+
220
316
  @averagedBm.setter
221
317
  def averagedBm(self, value: str) -> None:
222
318
  if self._averagedBm != value:
@@ -303,6 +399,20 @@ class QolsysZone(QolsysObservable):
303
399
  self.partition_id = value
304
400
  self.notify()
305
401
 
402
+ def to_powerg_dict(self) -> dict:
403
+ return {
404
+ "shortID": self.shortID,
405
+ "longID": self._powerg_long_id,
406
+ "status_data": self._powerg_status_data,
407
+ "temperature": self._powerg_temperature,
408
+ "light": self._powerg_light,
409
+ "notification_period": self._powerg_notification_period,
410
+ "average_link_quality": self._powerg_average_link_quality,
411
+ "link_quality": self._powerg_link_quality,
412
+ "link_status": self._powerg_link_status,
413
+ "battery_voltage": self._powerg_battery_voltage,
414
+ }
415
+
306
416
  def to_dict(self) -> dict:
307
417
  return {
308
418
  "_id": self.id,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: qolsys-controller
3
- Version: 0.0.39
3
+ Version: 0.0.41
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,12 +1,12 @@
1
1
  qolsys_controller/__init__.py,sha256=TkjMFBP9VNyGLC84JQZ_tTeD8nJImkGgPMkQFGr2428,88
2
2
  qolsys_controller/controller.py,sha256=ssmuRSXXmNW2lGh_G0rzJMqdjBzg1T0gdIo3TFFWjIQ,1308
3
- qolsys_controller/enum.py,sha256=nxlZEfKqbYFGzqiZnSV81jnNDajzioDcpWXUoZup8nQ,3463
3
+ qolsys_controller/enum.py,sha256=k5lU4ZcSwbRBiRgGDL2vVmZkMZ7rParvji92s-40fSM,3547
4
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
8
8
  qolsys_controller/observable.py,sha256=X7uMnBHGpklPTa-RHKldXA0Rq38Cs1yOIuxl8ODeKV4,1049
9
- qolsys_controller/panel.py,sha256=fsX4I5zoyHIQSaQGG4_knjckeoqdDrHdmkUuHYRrNxk,41268
9
+ qolsys_controller/panel.py,sha256=5X5kPIFH2mKZh372QhO4JlFaOkTxUE3QPuOeXrcW0_8,42686
10
10
  qolsys_controller/partition.py,sha256=ZRSWDqXE1aPlTvxwSbvp28OyOXgTYOUH73zOtZFHIIo,8943
11
11
  qolsys_controller/pki.py,sha256=_e0tiNF8Hypb37cHr7x8yqUZDaqbzRzP45AitTtmzk4,8663
12
12
  qolsys_controller/plugin.py,sha256=Qh0irFbuw9R2QF3jOFTJw70ceVxK1ld5_sW7VnpOrA8,819
@@ -14,10 +14,10 @@ qolsys_controller/plugin_c4.py,sha256=71o5Y7Y13GO0vWCPIsCtpqXxrplryyqt8ua5L8F4St
14
14
  qolsys_controller/plugin_remote.py,sha256=rK6VxwURBji_yoWJAkSGZXPpIBqzLB3NB0iV8Sumk5g,49627
15
15
  qolsys_controller/scene.py,sha256=b_8pzAJ08L7Nc-vouzkDxZKkcDQ239pLnvSDnN4g_oQ,1899
16
16
  qolsys_controller/settings.py,sha256=Drv2Vg84h8ZVWzOIex9xs96AZmWZkBT7cM4yvPJB4zc,6113
17
- qolsys_controller/state.py,sha256=JncrEQbJxV-fXbP31guTkWiA9rclwTok12vuK9YzUBo,17091
17
+ qolsys_controller/state.py,sha256=cpdneyXdEnSUbZ4D71hfAGiNKSX8Dfte-kRoVSTFTDE,17358
18
18
  qolsys_controller/task_manager.py,sha256=8TT1KhNHVjMIXTQz_vdUJ3eHgsKsUdPX3SHd29MP4pI,1629
19
19
  qolsys_controller/utils_mqtt.py,sha256=2hf9_BnQbsWi8t0KBiK5MSsDgGjlbWVJi-Sd3H5VVt0,575
20
- qolsys_controller/zone.py,sha256=ivy3B_o8R7-DzMHHEAK_LIDBLHyWnrEv9Fuuxl0BOJo,12332
20
+ qolsys_controller/zone.py,sha256=fOB4HG39zM5zu4gMgQHxnR2rowh--RQ_JAHqRdPsYiE,16259
21
21
  qolsys_controller/zwave_device.py,sha256=AJZQqIN9fGHu0t5NNIfTyCkpsgt0ArvFObb0_qICJxI,9310
22
22
  qolsys_controller/zwave_dimmer.py,sha256=aOAolbptoDpmJCxcPwpn6cIqR5CE1AxCSfz1WxIQJZA,5153
23
23
  qolsys_controller/zwave_garagedoor.py,sha256=xoR1I_qm4S0Ir6XvOC2Q9asq69NeJnJ4ZkVy7VC1P6Q,189
@@ -25,14 +25,14 @@ qolsys_controller/zwave_generic.py,sha256=gadtyUfPGsIzJaGc2zT5AQoFVxR_RsoagHE7x7
25
25
  qolsys_controller/zwave_lock.py,sha256=nodvZyjVurP5Eezjam4yRoFSfgnqlDM0e0MyXUqTpsQ,4971
26
26
  qolsys_controller/zwave_outlet.py,sha256=lxGB-jth11dHPUkT7jC411GdLCGDdct4mAGu05SndCA,185
27
27
  qolsys_controller/zwave_thermostat.py,sha256=IVe6F16aTt3v7ibC0C5X77jzmZOgNWNtfElMwVC3VXU,14610
28
- qolsys_controller/database/db.py,sha256=Je1owq3HbSbd63hqx0U_fOBLLYRwMUpmtVpX74KVops,14510
28
+ qolsys_controller/database/db.py,sha256=PyntJ3cA7G_FeSTJ3UsaOOgfwiNkQoLpbF1BLXSOCTQ,14937
29
29
  qolsys_controller/database/table.py,sha256=eIbHt1UvcNxVje2w3g_YMnQGIY85_nOtkOMxUlVtSVI,6451
30
30
  qolsys_controller/database/table_alarmedsensor.py,sha256=BZ6K9CQbcXRw0rf6WODS0NFf1wptu5CxuRtsLQrCsSQ,808
31
31
  qolsys_controller/database/table_automation.py,sha256=1qCdSIX2ALSdGxkZdMbHWT43VjqX4WgmNed4HcC7wc8,1287
32
32
  qolsys_controller/database/table_country_locale.py,sha256=OkjqGhYhYaGptZGN74eJI-dkRYSv_Cpex_zCs93v1Wo,1013
33
33
  qolsys_controller/database/table_dashboard_msgs.py,sha256=uImI4hHO-34vpTqmdXGFveiW5Nyo84nbMwFb7hB3l3w,847
34
34
  qolsys_controller/database/table_dimmerlight.py,sha256=C798oSncOvr9m7E7yk7PUipzAI4DmVNZ_Rv8n1-sztk,927
35
- qolsys_controller/database/table_doorlock.py,sha256=ace4kNKA2dYgyrA67HXkS46CJXO_6SNdyqoZaJqZwPQ,982
35
+ qolsys_controller/database/table_doorlock.py,sha256=FQPjPDvN6eru4nO-w2I4RKrkFFNgBxJruGBYzgxB640,1010
36
36
  qolsys_controller/database/table_eu_event.py,sha256=DVxNNZXpTvfzZy9C4WFcy7e1WzIhLpKRQ7NAS8WS2W0,779
37
37
  qolsys_controller/database/table_heat_map.py,sha256=EtqlVajcMIBBN1USWyA-we76b1LsTA1UoM33TwEQaTY,747
38
38
  qolsys_controller/database/table_history.py,sha256=-8RRZGejDnF_-cNc4DoqPJZ0bbqpGPocdENpbkcsbhQ,798
@@ -44,25 +44,25 @@ qolsys_controller/database/table_nest_device.py,sha256=Kgm2dsWQoCZoeAjlQSV_ZkehA
44
44
  qolsys_controller/database/table_output_rules.py,sha256=pYs1PQ1rv3-fIDcEI0i-jKOwH1L6nLhzAT3iCk0I5L4,571
45
45
  qolsys_controller/database/table_partition.py,sha256=u1239frG6KwnXCk3-xcACZVvzrnxsdV17f175_oL9TE,672
46
46
  qolsys_controller/database/table_pgm_outputs.py,sha256=hZyR4tpTss1kP6UCVBBbJHH5LYBMNHAHbcCoeQcCc38,568
47
- qolsys_controller/database/table_powerg_device.py,sha256=TpXcA9nGkMeVwUG7eo7DQr9M-kHiWLtgIM3MtyMj_Fg,576
47
+ qolsys_controller/database/table_powerg_device.py,sha256=apE-B5fAmUxcwawQJ4SJvGPZCKU9V9zGeAz9DQ68gBU,1227
48
48
  qolsys_controller/database/table_qolsyssettings.py,sha256=ryJylcS7vthhXlzEywwLRxbkkz2gmdnadMs0FkMD2yQ,685
49
49
  qolsys_controller/database/table_scene.py,sha256=DmUuWRSRUfpXxuFh_CzgYm_GkyyNe6DKQHhgl3AFkMs,846
50
- qolsys_controller/database/table_sensor.py,sha256=X8VvnqCRqHTnaMrk7wKQX7N00M0FzOafZ5gEbSlQHUI,1852
50
+ qolsys_controller/database/table_sensor.py,sha256=6mvGEYb8WRjIOm4Rj-UnHx3hpQrVpYfttcEinHFitq8,1895
51
51
  qolsys_controller/database/table_shades.py,sha256=Gzbh3VH89O9jYW-4Gf0wY14Jl6eSVGT_-IerMZ4-OHo,550
52
52
  qolsys_controller/database/table_smartsocket.py,sha256=bSBkiwbtDsQzH3teDtDmLzjqsmRcsoj70jI10vh8WhY,571
53
53
  qolsys_controller/database/table_state.py,sha256=amHZB0jFm_Z_DEg-9ChSGIxkJeXC70AW8N247GB8yww,681
54
54
  qolsys_controller/database/table_tcc.py,sha256=jhURc5TnEIhXSMQY4pJjr-r5s66Apv8ncEHFTIIy1O0,565
55
55
  qolsys_controller/database/table_thermostat.py,sha256=DIM_D_sKjMWW1Ey-awT_QOgft6UbyItGABoi4ORK_PE,1550
56
56
  qolsys_controller/database/table_trouble_conditions.py,sha256=2qnejp13C-WV2xdAs3xDNRT1HrnhlemmNhxV4EB72AQ,792
57
- qolsys_controller/database/table_user.py,sha256=VFKkQznQscanuaQG3UjFrMNx0xuv8wayQF5iBdj-Sao,1106
57
+ qolsys_controller/database/table_user.py,sha256=fMu_ZewNNX6l3NGXlxcKhQKn7paxUiDgeFiHEDducHM,1135
58
58
  qolsys_controller/database/table_virtual_device.py,sha256=AksA7HiUTIsBXtqqWcu884zr-XdS1i3WXP4MsHchEqM,580
59
59
  qolsys_controller/database/table_weather.py,sha256=EsaFosgdVs4tj9SZP1Af000uCatiZQvboKpvgQzw5IM,817
60
60
  qolsys_controller/database/table_zigbee_device.py,sha256=weB-ijTNWs-rLbkVauIdiz1oPM23JAgFgRf4t1EjyqI,574
61
61
  qolsys_controller/database/table_zwave_association_group.py,sha256=B8SHPU335a2wh8vPC9iJ0iVuPOo6PqO0t6vJzlf7ioM,942
62
62
  qolsys_controller/database/table_zwave_history.py,sha256=iLCkRZOsQmc5TQT0-IngyNkrG78kQrEhITPChmNt1bM,942
63
- qolsys_controller/database/table_zwave_node.py,sha256=5YDHwG139qLUx9BwzCJaqovMgdCcXng0dWOTTa75kQs,2568
64
- qolsys_controller/database/table_zwave_other.py,sha256=RzWuWMQA3czUNRWAP8SaAk6tiTeUgGl3J97npzW6AA0,573
65
- qolsys_controller-0.0.39.dist-info/METADATA,sha256=t-kEdsy87dQxGBZIjIG6T5lmOzwCV6UWJssZVyUeBxQ,4329
66
- qolsys_controller-0.0.39.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
67
- qolsys_controller-0.0.39.dist-info/licenses/LICENSE,sha256=GBHv9eggdA5ablDMW1xiLzGDZ2gCIhcKGW__c2aVIOc,1069
68
- qolsys_controller-0.0.39.dist-info/RECORD,,
63
+ qolsys_controller/database/table_zwave_node.py,sha256=bbL0WOH1kY8kdyfRUj2ZuOo0TNRXzX5i6CDtj4kb6YI,2609
64
+ qolsys_controller/database/table_zwave_other.py,sha256=VlGO5VOTRQtq7NqquH_NryswxB_pwG3KoKjvrz2xGao,915
65
+ qolsys_controller-0.0.41.dist-info/METADATA,sha256=-i80TWFE7nVvpC0CN4Sjb_cVqUccMBJu116Exnoj8sg,4329
66
+ qolsys_controller-0.0.41.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
67
+ qolsys_controller-0.0.41.dist-info/licenses/LICENSE,sha256=GBHv9eggdA5ablDMW1xiLzGDZ2gCIhcKGW__c2aVIOc,1069
68
+ qolsys_controller-0.0.41.dist-info/RECORD,,