uiprotect 1.2.1__py3-none-any.whl → 1.2.2__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 uiprotect might be problematic. Click here for more details.

@@ -473,47 +473,48 @@ class Bootstrap(ProtectBaseObject):
473
473
  key = f"{model_type}s"
474
474
  devices: dict[str, ProtectModelWithId] = getattr(self, key)
475
475
  action_id: str = action["id"]
476
- if action_id in devices:
477
- if action_id not in devices:
478
- raise ValueError(f"Unknown device update for {model_type}: {action_id}")
479
- obj = devices[action_id]
480
- data = obj.unifi_dict_to_dict(data)
481
- old_obj = obj.copy()
482
- obj = obj.update_from_dict(deepcopy(data))
483
-
484
- if isinstance(obj, Event):
485
- self.process_event(obj)
486
- elif isinstance(obj, Camera):
487
- if "last_ring" in data and obj.last_ring:
488
- is_recent = obj.last_ring + RECENT_EVENT_MAX >= utc_now()
489
- _LOGGER.debug("last_ring for %s (%s)", obj.id, is_recent)
490
- if is_recent:
491
- obj.set_ring_timeout()
492
- elif (
493
- isinstance(obj, Sensor)
494
- and "alarm_triggered_at" in data
495
- and obj.alarm_triggered_at
496
- ):
476
+ if action_id not in devices:
477
+ # ignore updates to events that phase out
478
+ if model_type != _ModelType_Event_value:
479
+ _LOGGER.debug("Unexpected %s: %s", key, action_id)
480
+ return None
481
+
482
+ obj = devices[action_id]
483
+ model = obj.model
484
+ data = obj.unifi_dict_to_dict(data)
485
+ old_obj = obj.copy()
486
+ obj = obj.update_from_dict(deepcopy(data))
487
+
488
+ if model is ModelType.EVENT:
489
+ if TYPE_CHECKING:
490
+ assert isinstance(obj, Event)
491
+ self.process_event(obj)
492
+ elif model is ModelType.CAMERA:
493
+ if TYPE_CHECKING:
494
+ assert isinstance(obj, Camera)
495
+ if "last_ring" in data and obj.last_ring:
496
+ is_recent = obj.last_ring + RECENT_EVENT_MAX >= utc_now()
497
+ _LOGGER.debug("last_ring for %s (%s)", obj.id, is_recent)
498
+ if is_recent:
499
+ obj.set_ring_timeout()
500
+ elif model is ModelType.SENSOR:
501
+ if TYPE_CHECKING:
502
+ assert isinstance(obj, Sensor)
503
+ if "alarm_triggered_at" in data and obj.alarm_triggered_at:
497
504
  is_recent = obj.alarm_triggered_at + RECENT_EVENT_MAX >= utc_now()
498
505
  _LOGGER.debug("alarm_triggered_at for %s (%s)", obj.id, is_recent)
499
506
  if is_recent:
500
507
  obj.set_alarm_timeout()
501
508
 
502
- devices[action_id] = obj
503
-
504
- self._create_stat(packet, data, False)
505
- return WSSubscriptionMessage(
506
- action=WSAction.UPDATE,
507
- new_update_id=self.last_update_id,
508
- changed_data=data,
509
- new_obj=obj,
510
- old_obj=old_obj,
511
- )
512
-
513
- # ignore updates to events that phase out
514
- if model_type != _ModelType_Event_value:
515
- _LOGGER.debug("Unexpected %s: %s", key, action_id)
516
- return None
509
+ devices[action_id] = obj
510
+ self._create_stat(packet, data, False)
511
+ return WSSubscriptionMessage(
512
+ action=WSAction.UPDATE,
513
+ new_update_id=self.last_update_id,
514
+ changed_data=data,
515
+ new_obj=obj,
516
+ old_obj=old_obj,
517
+ )
517
518
 
518
519
  def process_ws_packet(
519
520
  self,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: uiprotect
3
- Version: 1.2.1
3
+ Version: 1.2.2
4
4
  Summary: Python API for Unifi Protect (Unofficial)
5
5
  Home-page: https://github.com/uilibs/uiprotect
6
6
  License: MIT
@@ -15,7 +15,7 @@ uiprotect/cli/sensors.py,sha256=fQtcDJCVxs4VbAqcavgBy2ABiVxAW3GXtna6_XFBp2k,8153
15
15
  uiprotect/cli/viewers.py,sha256=2cyrp104ffIvgT0wYGIO0G35QMkEbFe7fSVqLwDXQYQ,2171
16
16
  uiprotect/data/__init__.py,sha256=OcfuJl2qXfHcj_mdnrHhzZ5tEIZrw8auziX5IE7dn-I,2938
17
17
  uiprotect/data/base.py,sha256=kkPrRhvJV7igGyB3wv1fDvWH26Xzlbz94BjJkDiTvU4,38375
18
- uiprotect/data/bootstrap.py,sha256=NH4jSEm44M0aijmViLHip2PKhVchuZJEeqWI3bcZwq0,21285
18
+ uiprotect/data/bootstrap.py,sha256=JsbdZQAdlmLNg7dSv02pAhx1n3_wtFfLqSoj7kd8A-0,21296
19
19
  uiprotect/data/convert.py,sha256=rOQplUMIdTMD2SbAx_iI9BNPDscnhDvyRVLEMDhtADg,2047
20
20
  uiprotect/data/devices.py,sha256=Nq3bOko5PFf5LvEBoD4JV8kmbq50laRdh3VHMWX7t-0,111809
21
21
  uiprotect/data/nvr.py,sha256=jwJEl4o2kbvoYFB9wSJPghNj0905847-86ElT51nNs0,47580
@@ -30,8 +30,8 @@ uiprotect/test_util/__init__.py,sha256=d2g7afa0LSdixQ0kjEDYwafDFME_UlW2LzxpamZ2B
30
30
  uiprotect/test_util/anonymize.py,sha256=f-8ijU-_y9r-uAbhIPn0f0I6hzJpAkvJzc8UpWihObI,8478
31
31
  uiprotect/utils.py,sha256=6OLY8hNiCzk418PjJJIlFW7jjPzVt1vxBKEzBSqMeTk,18418
32
32
  uiprotect/websocket.py,sha256=IzDPyqbzrkOMREvahN-e2zdvVD0VABSCWy6jSoCwOT0,7299
33
- uiprotect-1.2.1.dist-info/LICENSE,sha256=INx18jhdbVXMEiiBANeKEbrbz57ckgzxk5uutmmcxGk,1111
34
- uiprotect-1.2.1.dist-info/METADATA,sha256=_aAWqaI4jL6xC1WCho7ucWk62VDpwc_O5C4ImBcNZv0,10984
35
- uiprotect-1.2.1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
36
- uiprotect-1.2.1.dist-info/entry_points.txt,sha256=J78AUTPrTTxgI3s7SVgrmGqDP7piX2wuuEORzhDdVRA,47
37
- uiprotect-1.2.1.dist-info/RECORD,,
33
+ uiprotect-1.2.2.dist-info/LICENSE,sha256=INx18jhdbVXMEiiBANeKEbrbz57ckgzxk5uutmmcxGk,1111
34
+ uiprotect-1.2.2.dist-info/METADATA,sha256=pU-rmbBF_iFXCpjNQkujk-qjuiJBH1zMDw5ALwnlhQ4,10984
35
+ uiprotect-1.2.2.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
36
+ uiprotect-1.2.2.dist-info/entry_points.txt,sha256=J78AUTPrTTxgI3s7SVgrmGqDP7piX2wuuEORzhDdVRA,47
37
+ uiprotect-1.2.2.dist-info/RECORD,,