uiprotect 7.1.0__py3-none-any.whl → 7.2.0__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.
- uiprotect/api.py +17 -2
- uiprotect/data/bootstrap.py +2 -0
- uiprotect/data/devices.py +9 -0
- uiprotect/data/types.py +1 -0
- {uiprotect-7.1.0.dist-info → uiprotect-7.2.0.dist-info}/METADATA +1 -1
- {uiprotect-7.1.0.dist-info → uiprotect-7.2.0.dist-info}/RECORD +9 -9
- {uiprotect-7.1.0.dist-info → uiprotect-7.2.0.dist-info}/LICENSE +0 -0
- {uiprotect-7.1.0.dist-info → uiprotect-7.2.0.dist-info}/WHEEL +0 -0
- {uiprotect-7.1.0.dist-info → uiprotect-7.2.0.dist-info}/entry_points.txt +0 -0
uiprotect/api.py
CHANGED
|
@@ -1806,10 +1806,12 @@ class ProtectApiClient(BaseApiClient):
|
|
|
1806
1806
|
*,
|
|
1807
1807
|
volume: int | None = None,
|
|
1808
1808
|
repeat_times: int | None = None,
|
|
1809
|
+
ringtone_id: str | None = None,
|
|
1810
|
+
track_no: int | None = None,
|
|
1809
1811
|
) -> None:
|
|
1810
1812
|
"""Plays chime tones on a chime"""
|
|
1811
1813
|
data: dict[str, Any] | None = None
|
|
1812
|
-
if volume or repeat_times:
|
|
1814
|
+
if volume or repeat_times or ringtone_id or track_no:
|
|
1813
1815
|
chime = self.bootstrap.chimes.get(device_id)
|
|
1814
1816
|
if chime is None:
|
|
1815
1817
|
raise BadRequest("Invalid chime ID %s", device_id)
|
|
@@ -1817,8 +1819,11 @@ class ProtectApiClient(BaseApiClient):
|
|
|
1817
1819
|
data = {
|
|
1818
1820
|
"volume": volume or chime.volume,
|
|
1819
1821
|
"repeatTimes": repeat_times or chime.repeat_times,
|
|
1820
|
-
"trackNo": chime.track_no,
|
|
1822
|
+
"trackNo": track_no or chime.track_no,
|
|
1821
1823
|
}
|
|
1824
|
+
if ringtone_id:
|
|
1825
|
+
data["ringtoneId"] = ringtone_id
|
|
1826
|
+
data.pop("trackNo", None)
|
|
1822
1827
|
|
|
1823
1828
|
await self.api_request(
|
|
1824
1829
|
f"chimes/{device_id}/play-speaker",
|
|
@@ -1830,6 +1835,16 @@ class ProtectApiClient(BaseApiClient):
|
|
|
1830
1835
|
"""Plays chime tones on a chime"""
|
|
1831
1836
|
await self.api_request(f"chimes/{device_id}/play-buzzer", method="post")
|
|
1832
1837
|
|
|
1838
|
+
async def set_light_is_led_force_on(
|
|
1839
|
+
self, device_id: str, is_led_force_on: bool
|
|
1840
|
+
) -> None:
|
|
1841
|
+
"""Sets isLedForceOn for light.""" # workaround because forceOn doesnt work via websocket
|
|
1842
|
+
await self.api_request(
|
|
1843
|
+
f"lights/{device_id}",
|
|
1844
|
+
method="patch",
|
|
1845
|
+
json={"lightOnSettings": {"isLedForceOn": is_led_force_on}},
|
|
1846
|
+
)
|
|
1847
|
+
|
|
1833
1848
|
async def clear_tamper_sensor(self, device_id: str) -> None:
|
|
1834
1849
|
"""Clears tamper status for sensor"""
|
|
1835
1850
|
await self.api_request(f"sensors/{device_id}/clear-tamper-flag", method="post")
|
uiprotect/data/bootstrap.py
CHANGED
|
@@ -30,6 +30,7 @@ from .devices import (
|
|
|
30
30
|
Doorlock,
|
|
31
31
|
Light,
|
|
32
32
|
ProtectAdoptableDeviceModel,
|
|
33
|
+
Ringtone,
|
|
33
34
|
Sensor,
|
|
34
35
|
Viewer,
|
|
35
36
|
)
|
|
@@ -183,6 +184,7 @@ class Bootstrap(ProtectBaseObject):
|
|
|
183
184
|
doorlocks: dict[str, Doorlock]
|
|
184
185
|
chimes: dict[str, Chime]
|
|
185
186
|
aiports: dict[str, AiPort]
|
|
187
|
+
ringtones: list[Ringtone]
|
|
186
188
|
last_update_id: str
|
|
187
189
|
|
|
188
190
|
# TODO:
|
uiprotect/data/devices.py
CHANGED
|
@@ -3388,3 +3388,12 @@ class Chime(ProtectAdoptableDeviceModel):
|
|
|
3388
3388
|
|
|
3389
3389
|
class AiPort(Camera):
|
|
3390
3390
|
paired_cameras: list[str]
|
|
3391
|
+
|
|
3392
|
+
|
|
3393
|
+
class Ringtone(ProtectBaseObject):
|
|
3394
|
+
id: str
|
|
3395
|
+
name: str
|
|
3396
|
+
size: int
|
|
3397
|
+
is_default: bool
|
|
3398
|
+
nvr_mac: str
|
|
3399
|
+
model_key: str
|
uiprotect/data/types.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
uiprotect/__init__.py,sha256=Oz6i1tonIz4QWVnEPkbielJDJ3WQdwZVgYtjY4IwGAQ,636
|
|
2
2
|
uiprotect/__main__.py,sha256=C_bHCOkv5qj6WMy-6ELoY3Y6HDhLxOa1a30CzmbZhsg,462
|
|
3
3
|
uiprotect/_compat.py,sha256=HThmb1zQZCEssCxYYbQzFhJq8zYYlVaSnIEZabKc-6U,302
|
|
4
|
-
uiprotect/api.py,sha256=
|
|
4
|
+
uiprotect/api.py,sha256=5oWPmVqMqNeug4eZFbyF0X7tq2pXseSLmKDeH3zrGso,70311
|
|
5
5
|
uiprotect/cli/__init__.py,sha256=gHo9G2WusvrWgnHhecT8Q2NLRXG0VS-rc9TKy4V5Kw8,8951
|
|
6
6
|
uiprotect/cli/aiports.py,sha256=wpEr2w_hY18CGpFiQM2Yc0FiVwG_1l2CzZhZLGNigvI,1576
|
|
7
7
|
uiprotect/cli/backup.py,sha256=ZiS7RZnJGKI8TJKLW2cOUzkRM8nyTvE5Ov_jZZGtvSM,36708
|
|
@@ -17,11 +17,11 @@ uiprotect/cli/sensors.py,sha256=fQtcDJCVxs4VbAqcavgBy2ABiVxAW3GXtna6_XFBp2k,8153
|
|
|
17
17
|
uiprotect/cli/viewers.py,sha256=2cyrp104ffIvgT0wYGIO0G35QMkEbFe7fSVqLwDXQYQ,2171
|
|
18
18
|
uiprotect/data/__init__.py,sha256=audwJBjxRiYdNPeYlP6iofFIOq3gyQzh6VpDsOCM2dQ,2964
|
|
19
19
|
uiprotect/data/base.py,sha256=LRqmK60PKeDFgP2k5qpVj93AxEvdfC6kLk0Cqvt1W5k,35481
|
|
20
|
-
uiprotect/data/bootstrap.py,sha256=
|
|
20
|
+
uiprotect/data/bootstrap.py,sha256=Umija3z2SI4RPJmbzZNolm3jw-GSP4a2d9Fd0xcmf9c,23338
|
|
21
21
|
uiprotect/data/convert.py,sha256=xEN878_hm0HZZCVYGwJSxcSp2as9zpkvsemVIibReOA,2628
|
|
22
|
-
uiprotect/data/devices.py,sha256=
|
|
22
|
+
uiprotect/data/devices.py,sha256=ls-paEN3RITVASL0Nezfevpt5ROvxnhbBGYg8dPfAyM,114061
|
|
23
23
|
uiprotect/data/nvr.py,sha256=E18DgE0nXl9VZ_ULotTPcXSi3M1u3mWQsuZbY1gIajs,47490
|
|
24
|
-
uiprotect/data/types.py,sha256=
|
|
24
|
+
uiprotect/data/types.py,sha256=GVY6E88M41-_HjkIwVI7_EIObJSwH4c9BiunmEeo11Y,19164
|
|
25
25
|
uiprotect/data/user.py,sha256=Del5LUmt5uCfAQMI9-kl_GaKm085oTLjxmcCrlEKXxc,10526
|
|
26
26
|
uiprotect/data/websocket.py,sha256=m4EV1Qfh08eKOihy70ycViYgEQpeNSGZQJWdtGIYJDA,6791
|
|
27
27
|
uiprotect/exceptions.py,sha256=kgn0cRM6lTtgLza09SDa3ZiX6ue1QqHCOogQ4qu6KTQ,965
|
|
@@ -32,8 +32,8 @@ uiprotect/test_util/__init__.py,sha256=HlQBgIgdtrvT-gQ5OWP92LbgVr_YzsD5NFImLRonU
|
|
|
32
32
|
uiprotect/test_util/anonymize.py,sha256=f-8ijU-_y9r-uAbhIPn0f0I6hzJpAkvJzc8UpWihObI,8478
|
|
33
33
|
uiprotect/utils.py,sha256=q2YYQfxr0b3QEWMSP7SdpcJZbB4huEhpo8PbtnTbEFI,20481
|
|
34
34
|
uiprotect/websocket.py,sha256=tEyenqblNXHcjWYuf4oRP1E7buNwx6zoECMwpBr-jig,8191
|
|
35
|
-
uiprotect-7.
|
|
36
|
-
uiprotect-7.
|
|
37
|
-
uiprotect-7.
|
|
38
|
-
uiprotect-7.
|
|
39
|
-
uiprotect-7.
|
|
35
|
+
uiprotect-7.2.0.dist-info/LICENSE,sha256=INx18jhdbVXMEiiBANeKEbrbz57ckgzxk5uutmmcxGk,1111
|
|
36
|
+
uiprotect-7.2.0.dist-info/METADATA,sha256=_N35r5x3l7De3JMKKJv6kImajl786yjdJBMWHs8i_60,11142
|
|
37
|
+
uiprotect-7.2.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
|
38
|
+
uiprotect-7.2.0.dist-info/entry_points.txt,sha256=J78AUTPrTTxgI3s7SVgrmGqDP7piX2wuuEORzhDdVRA,47
|
|
39
|
+
uiprotect-7.2.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|