pysmarlaapi 0.2.4__py3-none-any.whl → 0.4.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 pysmarlaapi might be problematic. Click here for more details.
- pysmarlaapi/__init__.py +1 -1
- pysmarlaapi/classes/auth_token.py +9 -0
- pysmarlaapi/classes/connection.py +3 -1
- pysmarlaapi/federwiege/__init__.py +2 -1
- pysmarlaapi/federwiege/classes/property.py +2 -2
- pysmarlaapi/federwiege/classes/service.py +1 -3
- pysmarlaapi/federwiege/services/__init__.py +1 -0
- pysmarlaapi/federwiege/services/analyser_service.py +27 -8
- pysmarlaapi/federwiege/services/babywiege_service.py +11 -11
- pysmarlaapi/federwiege/services/info_service.py +46 -0
- {pysmarlaapi-0.2.4.dist-info → pysmarlaapi-0.4.0.dist-info}/METADATA +1 -1
- pysmarlaapi-0.4.0.dist-info/RECORD +16 -0
- pysmarlaapi-0.2.4.dist-info/RECORD +0 -15
- {pysmarlaapi-0.2.4.dist-info → pysmarlaapi-0.4.0.dist-info}/WHEEL +0 -0
pysmarlaapi/__init__.py
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import base64
|
|
1
2
|
from dataclasses import dataclass
|
|
2
3
|
from typing import Self
|
|
3
4
|
|
|
@@ -23,5 +24,13 @@ class AuthToken:
|
|
|
23
24
|
def from_string(cls, value) -> Self:
|
|
24
25
|
return AuthToken.from_json(jsonpickle.decode(value))
|
|
25
26
|
|
|
27
|
+
@classmethod
|
|
28
|
+
def from_base64(cls, value) -> Self:
|
|
29
|
+
token = base64.b64decode(value.encode()).decode()
|
|
30
|
+
return AuthToken.from_string(token)
|
|
31
|
+
|
|
26
32
|
def get_string(self) -> str:
|
|
27
33
|
return jsonpickle.encode(self, unpicklable=False)
|
|
34
|
+
|
|
35
|
+
def get_base64(self) -> str:
|
|
36
|
+
return base64.b64encode(self.get_string().encode()).decode()
|
|
@@ -6,7 +6,7 @@ from . import AuthToken
|
|
|
6
6
|
|
|
7
7
|
class Connection:
|
|
8
8
|
|
|
9
|
-
def __init__(self, url: str, token: AuthToken = None, token_str=None, token_json=None):
|
|
9
|
+
def __init__(self, url: str, token: AuthToken = None, token_str=None, token_json=None, token_b64=None):
|
|
10
10
|
self.url = url
|
|
11
11
|
if token is not None:
|
|
12
12
|
self.token = token
|
|
@@ -14,6 +14,8 @@ class Connection:
|
|
|
14
14
|
self.token = AuthToken.from_json(token_json)
|
|
15
15
|
elif token_str is not None:
|
|
16
16
|
self.token = AuthToken.from_string(token_str)
|
|
17
|
+
elif token_b64 is not None:
|
|
18
|
+
self.token = AuthToken.from_base64(token_b64)
|
|
17
19
|
else:
|
|
18
20
|
self.token = None
|
|
19
21
|
|
|
@@ -4,7 +4,7 @@ import threading
|
|
|
4
4
|
from ..classes import Connection
|
|
5
5
|
from ..connection_hub import ConnectionHub
|
|
6
6
|
from .classes import Service
|
|
7
|
-
from .services import AnalyserService, BabywiegeService
|
|
7
|
+
from .services import AnalyserService, BabywiegeService, InfoService
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class Federwiege:
|
|
@@ -28,6 +28,7 @@ class Federwiege:
|
|
|
28
28
|
self.services: dict[str, Service] = {
|
|
29
29
|
"babywiege": BabywiegeService(self.hub),
|
|
30
30
|
"analyser": AnalyserService(self.hub),
|
|
31
|
+
"info": InfoService(self.hub),
|
|
31
32
|
}
|
|
32
33
|
|
|
33
34
|
self.registered = False
|
|
@@ -8,8 +8,8 @@ _VT = TypeVar("_VT")
|
|
|
8
8
|
|
|
9
9
|
class Property(Generic[_VT]):
|
|
10
10
|
|
|
11
|
-
def __init__(self,
|
|
12
|
-
self.hub =
|
|
11
|
+
def __init__(self, hub: ConnectionHub):
|
|
12
|
+
self.hub = hub
|
|
13
13
|
self.value: _VT = None
|
|
14
14
|
self.listeners = set()
|
|
15
15
|
self.lock = asyncio.Lock()
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
from ...connection_hub import ConnectionHub
|
|
2
1
|
from .property import Property
|
|
3
2
|
|
|
4
3
|
|
|
5
4
|
class Service:
|
|
6
5
|
|
|
7
|
-
def __init__(self
|
|
8
|
-
self.hub = connection_hub
|
|
6
|
+
def __init__(self):
|
|
9
7
|
self.registered = False
|
|
10
8
|
self.props: dict[str, Property] = {}
|
|
11
9
|
|
|
@@ -4,10 +4,11 @@ from ..classes import Property, Service
|
|
|
4
4
|
|
|
5
5
|
class AnalyserService(Service):
|
|
6
6
|
|
|
7
|
-
def __init__(self,
|
|
8
|
-
super().__init__(
|
|
9
|
-
self.add_property("oscillation", OscillationProperty(
|
|
10
|
-
self.add_property("activity", ActivityProperty(
|
|
7
|
+
def __init__(self, hub: ConnectionHub):
|
|
8
|
+
super().__init__()
|
|
9
|
+
self.add_property("oscillation", OscillationProperty(hub))
|
|
10
|
+
self.add_property("activity", ActivityProperty(hub))
|
|
11
|
+
self.add_property("swing_count", SwingCountProperty(hub))
|
|
11
12
|
|
|
12
13
|
|
|
13
14
|
class OscillationProperty(Property[list[int, int]]):
|
|
@@ -17,8 +18,8 @@ class OscillationProperty(Property[list[int, int]]):
|
|
|
17
18
|
self.set(value, push=False)
|
|
18
19
|
await self.notify_listeners(value)
|
|
19
20
|
|
|
20
|
-
def __init__(self,
|
|
21
|
-
super().__init__(
|
|
21
|
+
def __init__(self, hub: ConnectionHub):
|
|
22
|
+
super().__init__(hub)
|
|
22
23
|
self.value = [0, 0]
|
|
23
24
|
|
|
24
25
|
def pull(self):
|
|
@@ -35,8 +36,8 @@ class ActivityProperty(Property[int]):
|
|
|
35
36
|
self.set(value, push=False)
|
|
36
37
|
await self.notify_listeners(value)
|
|
37
38
|
|
|
38
|
-
def __init__(self,
|
|
39
|
-
super().__init__(
|
|
39
|
+
def __init__(self, hub: ConnectionHub):
|
|
40
|
+
super().__init__(hub)
|
|
40
41
|
self.value = 0
|
|
41
42
|
|
|
42
43
|
def pull(self):
|
|
@@ -44,3 +45,21 @@ class ActivityProperty(Property[int]):
|
|
|
44
45
|
|
|
45
46
|
def register(self):
|
|
46
47
|
self.hub.client.on("GetActivityCallback", self.on_callback)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class SwingCountProperty(Property[int]):
|
|
51
|
+
|
|
52
|
+
async def on_callback(self, args):
|
|
53
|
+
value = args[0]["value"]
|
|
54
|
+
self.set(value, push=False)
|
|
55
|
+
await self.notify_listeners(value)
|
|
56
|
+
|
|
57
|
+
def __init__(self, hub: ConnectionHub):
|
|
58
|
+
super().__init__(hub)
|
|
59
|
+
self.value = 0
|
|
60
|
+
|
|
61
|
+
def pull(self):
|
|
62
|
+
self.hub.send_serialized_data("GetSwingCount")
|
|
63
|
+
|
|
64
|
+
def register(self):
|
|
65
|
+
self.hub.client.on("GetSwingCountCallback", self.on_callback)
|
|
@@ -4,11 +4,11 @@ from ..classes import Property, Service
|
|
|
4
4
|
|
|
5
5
|
class BabywiegeService(Service):
|
|
6
6
|
|
|
7
|
-
def __init__(self,
|
|
8
|
-
super().__init__(
|
|
9
|
-
self.add_property("swing_active", SwingActiveProperty(
|
|
10
|
-
self.add_property("intensity", IntensityProperty(
|
|
11
|
-
self.add_property("smartmode", SmartModeProperty(
|
|
7
|
+
def __init__(self, hub: ConnectionHub):
|
|
8
|
+
super().__init__()
|
|
9
|
+
self.add_property("swing_active", SwingActiveProperty(hub))
|
|
10
|
+
self.add_property("intensity", IntensityProperty(hub))
|
|
11
|
+
self.add_property("smartmode", SmartModeProperty(hub))
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
class SwingActiveProperty(Property[bool]):
|
|
@@ -18,8 +18,8 @@ class SwingActiveProperty(Property[bool]):
|
|
|
18
18
|
self.set(value, push=False)
|
|
19
19
|
await self.notify_listeners(value)
|
|
20
20
|
|
|
21
|
-
def __init__(self,
|
|
22
|
-
super().__init__(
|
|
21
|
+
def __init__(self, hub: ConnectionHub):
|
|
22
|
+
super().__init__(hub)
|
|
23
23
|
self.value = False
|
|
24
24
|
|
|
25
25
|
def pull(self):
|
|
@@ -39,8 +39,8 @@ class IntensityProperty(Property[int]):
|
|
|
39
39
|
self.set(value, push=False)
|
|
40
40
|
await self.notify_listeners(value)
|
|
41
41
|
|
|
42
|
-
def __init__(self,
|
|
43
|
-
super().__init__(
|
|
42
|
+
def __init__(self, hub: ConnectionHub):
|
|
43
|
+
super().__init__(hub)
|
|
44
44
|
self.value = 0
|
|
45
45
|
|
|
46
46
|
def pull(self):
|
|
@@ -60,8 +60,8 @@ class SmartModeProperty(Property[bool]):
|
|
|
60
60
|
self.set(value, push=False)
|
|
61
61
|
await self.notify_listeners(value)
|
|
62
62
|
|
|
63
|
-
def __init__(self,
|
|
64
|
-
super().__init__(
|
|
63
|
+
def __init__(self, hub: ConnectionHub):
|
|
64
|
+
super().__init__(hub)
|
|
65
65
|
self.value = False
|
|
66
66
|
|
|
67
67
|
def pull(self):
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
from ...connection_hub import ConnectionHub
|
|
2
|
+
from ..classes import Property, Service
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class InfoService(Service):
|
|
6
|
+
|
|
7
|
+
def __init__(self, hub: ConnectionHub):
|
|
8
|
+
super().__init__()
|
|
9
|
+
self.add_property("display_name", DisplayNameProperty(hub))
|
|
10
|
+
self.add_property("version", VersionProperty(hub))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class DisplayNameProperty(Property[str]):
|
|
14
|
+
|
|
15
|
+
async def on_callback(self, args):
|
|
16
|
+
value = args[0]["value"]
|
|
17
|
+
self.set(value, push=False)
|
|
18
|
+
await self.notify_listeners(value)
|
|
19
|
+
|
|
20
|
+
def __init__(self, hub: ConnectionHub):
|
|
21
|
+
super().__init__(hub)
|
|
22
|
+
self.value = "Smarla"
|
|
23
|
+
|
|
24
|
+
def pull(self):
|
|
25
|
+
self.hub.send_serialized_data("GetDisplayName")
|
|
26
|
+
|
|
27
|
+
def register(self):
|
|
28
|
+
self.hub.client.on("GetDisplayNameCallback", self.on_callback)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class VersionProperty(Property[str]):
|
|
32
|
+
|
|
33
|
+
async def on_callback(self, args):
|
|
34
|
+
value = args[0]["value"]
|
|
35
|
+
self.set(value, push=False)
|
|
36
|
+
await self.notify_listeners(value)
|
|
37
|
+
|
|
38
|
+
def __init__(self, hub: ConnectionHub):
|
|
39
|
+
super().__init__(hub)
|
|
40
|
+
self.value = "1.0.0"
|
|
41
|
+
|
|
42
|
+
def pull(self):
|
|
43
|
+
self.hub.send_serialized_data("GetVersion")
|
|
44
|
+
|
|
45
|
+
def register(self):
|
|
46
|
+
self.hub.client.on("GetVersionCallback", self.on_callback)
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
pysmarlaapi/__init__.py,sha256=7NFNMBkl7qODMJYvG4pHJy4qdfoAqloPqXoKRbkrUoE,94
|
|
2
|
+
pysmarlaapi/classes/__init__.py,sha256=4F4LRzLQtj6AmzrXn74iHEZl-YElpMkb7MhEGkab504,71
|
|
3
|
+
pysmarlaapi/classes/auth_token.py,sha256=bxpp0gDzWuLzNSgUksN4mMlyvkDWLhqs3fT76Mb-0c8,950
|
|
4
|
+
pysmarlaapi/classes/connection.py,sha256=tmMaPEN1lu8fC8cV-SX6l4aVUkaAOh-32aZUhR7nMSU,1403
|
|
5
|
+
pysmarlaapi/connection_hub/__init__.py,sha256=6bLOH7cY_AyZwsMLKlFEA-kwmhKCI4pb0aLrflgfWdQ,4600
|
|
6
|
+
pysmarlaapi/federwiege/__init__.py,sha256=uFExZeBgoKfmfE7YZ20V_AynZzN61ZrH2DdztGOhjq8,1800
|
|
7
|
+
pysmarlaapi/federwiege/classes/__init__.py,sha256=1cCe3iToaNmbUfy_7PynoPenNHtVcKC03rFc4ADqnbE,62
|
|
8
|
+
pysmarlaapi/federwiege/classes/property.py,sha256=7CmNN-vQ-6BBYDvp9I7Md15S-LvADlAGpZr4HXlW14U,1062
|
|
9
|
+
pysmarlaapi/federwiege/classes/service.py,sha256=Um2EQYtHdPvUGn4Q9cZM45yciSFBMNYL6Nyf5ln2WMc,660
|
|
10
|
+
pysmarlaapi/federwiege/services/__init__.py,sha256=20A54vK90HAmAF3VvXSAaHSujCVr0o6xqT6YG2G582c,135
|
|
11
|
+
pysmarlaapi/federwiege/services/analyser_service.py,sha256=PJmPqEIytrb9RUyuHDm5ShvpyrmiAXWO0LfINku_NVE,1854
|
|
12
|
+
pysmarlaapi/federwiege/services/babywiege_service.py,sha256=Uup7oU_GUImNAOojbRMbKdROZ2X9Vmu7Eqq43ZdcXbA,2127
|
|
13
|
+
pysmarlaapi/federwiege/services/info_service.py,sha256=dfODCRBK3Vinme73IlmjSqsvwfPrXeqDz_EEA9cWnhk,1294
|
|
14
|
+
pysmarlaapi-0.4.0.dist-info/WHEEL,sha256=CpUCUxeHQbRN5UGRQHYRJorO5Af-Qy_fHMctcQ8DSGI,82
|
|
15
|
+
pysmarlaapi-0.4.0.dist-info/METADATA,sha256=9yzsOhL2NBsUH7VtuAmgu-GR_N4PgluXJ5xDeeGdKh8,925
|
|
16
|
+
pysmarlaapi-0.4.0.dist-info/RECORD,,
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
pysmarlaapi/__init__.py,sha256=ja471fsB9Kv4UrmXpPaDtnjKVnDadDi_-Q9VLLzYFGw,94
|
|
2
|
-
pysmarlaapi/classes/__init__.py,sha256=4F4LRzLQtj6AmzrXn74iHEZl-YElpMkb7MhEGkab504,71
|
|
3
|
-
pysmarlaapi/classes/auth_token.py,sha256=FgLkZ0xPETfh1ZMQfWhwW6tkPnqFYeHhDUBLBFbauwA,663
|
|
4
|
-
pysmarlaapi/classes/connection.py,sha256=vNh9vG4xAewl2gmkducwSd3u7osjYw5gwtZTZ48rqVo,1291
|
|
5
|
-
pysmarlaapi/connection_hub/__init__.py,sha256=6bLOH7cY_AyZwsMLKlFEA-kwmhKCI4pb0aLrflgfWdQ,4600
|
|
6
|
-
pysmarlaapi/federwiege/__init__.py,sha256=6Hk_Oqrk8AKoomNGdq3o-2pBW6E8ejvKArAc0DdOBGw,1743
|
|
7
|
-
pysmarlaapi/federwiege/classes/__init__.py,sha256=1cCe3iToaNmbUfy_7PynoPenNHtVcKC03rFc4ADqnbE,62
|
|
8
|
-
pysmarlaapi/federwiege/classes/property.py,sha256=YZnpw0cD2NUPnlWo6TBjOzNTWcSJG1tvArXs1dRT6dY,1084
|
|
9
|
-
pysmarlaapi/federwiege/classes/service.py,sha256=J_4WjL0SyyxwlvBp-zpO9EaXNUUcTnOLoPfSdU1FrjA,771
|
|
10
|
-
pysmarlaapi/federwiege/services/__init__.py,sha256=F_54VQIYWAZaGm2ITzCJeG7G-6ARW2PfWvqaut56WN8,96
|
|
11
|
-
pysmarlaapi/federwiege/services/analyser_service.py,sha256=tQb6ijNlrtbz4igH7awdoBnOVHu4TO6SPJmMW5yeT3A,1340
|
|
12
|
-
pysmarlaapi/federwiege/services/babywiege_service.py,sha256=SJFPAsZaf4nSRmt6ojJq-9MtWqk1MdtcaPzBmTN3H0Y,2167
|
|
13
|
-
pysmarlaapi-0.2.4.dist-info/WHEEL,sha256=CpUCUxeHQbRN5UGRQHYRJorO5Af-Qy_fHMctcQ8DSGI,82
|
|
14
|
-
pysmarlaapi-0.2.4.dist-info/METADATA,sha256=E5gjtqiCARZYk0kDfw2-0p3Nc7CZ4PMFRLPzkUVRnjg,925
|
|
15
|
-
pysmarlaapi-0.2.4.dist-info/RECORD,,
|
|
File without changes
|