casambi-bt-revamped 0.3.12.dev12__tar.gz → 0.3.12.dev13__tar.gz

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.
Files changed (31) hide show
  1. {casambi_bt_revamped-0.3.12.dev12/src/casambi_bt_revamped.egg-info → casambi_bt_revamped-0.3.12.dev13}/PKG-INFO +1 -1
  2. {casambi_bt_revamped-0.3.12.dev12 → casambi_bt_revamped-0.3.12.dev13}/setup.cfg +1 -1
  3. {casambi_bt_revamped-0.3.12.dev12 → casambi_bt_revamped-0.3.12.dev13}/src/CasambiBt/_network.py +44 -25
  4. {casambi_bt_revamped-0.3.12.dev12 → casambi_bt_revamped-0.3.12.dev13}/src/CasambiBt/_version.py +1 -1
  5. {casambi_bt_revamped-0.3.12.dev12 → casambi_bt_revamped-0.3.12.dev13/src/casambi_bt_revamped.egg-info}/PKG-INFO +1 -1
  6. {casambi_bt_revamped-0.3.12.dev12 → casambi_bt_revamped-0.3.12.dev13}/LICENSE +0 -0
  7. {casambi_bt_revamped-0.3.12.dev12 → casambi_bt_revamped-0.3.12.dev13}/README.md +0 -0
  8. {casambi_bt_revamped-0.3.12.dev12 → casambi_bt_revamped-0.3.12.dev13}/pyproject.toml +0 -0
  9. {casambi_bt_revamped-0.3.12.dev12 → casambi_bt_revamped-0.3.12.dev13}/src/CasambiBt/__init__.py +0 -0
  10. {casambi_bt_revamped-0.3.12.dev12 → casambi_bt_revamped-0.3.12.dev13}/src/CasambiBt/_cache.py +0 -0
  11. {casambi_bt_revamped-0.3.12.dev12 → casambi_bt_revamped-0.3.12.dev13}/src/CasambiBt/_casambi.py +0 -0
  12. {casambi_bt_revamped-0.3.12.dev12 → casambi_bt_revamped-0.3.12.dev13}/src/CasambiBt/_classic_crypto.py +0 -0
  13. {casambi_bt_revamped-0.3.12.dev12 → casambi_bt_revamped-0.3.12.dev13}/src/CasambiBt/_client.py +0 -0
  14. {casambi_bt_revamped-0.3.12.dev12 → casambi_bt_revamped-0.3.12.dev13}/src/CasambiBt/_constants.py +0 -0
  15. {casambi_bt_revamped-0.3.12.dev12 → casambi_bt_revamped-0.3.12.dev13}/src/CasambiBt/_discover.py +0 -0
  16. {casambi_bt_revamped-0.3.12.dev12 → casambi_bt_revamped-0.3.12.dev13}/src/CasambiBt/_encryption.py +0 -0
  17. {casambi_bt_revamped-0.3.12.dev12 → casambi_bt_revamped-0.3.12.dev13}/src/CasambiBt/_invocation.py +0 -0
  18. {casambi_bt_revamped-0.3.12.dev12 → casambi_bt_revamped-0.3.12.dev13}/src/CasambiBt/_keystore.py +0 -0
  19. {casambi_bt_revamped-0.3.12.dev12 → casambi_bt_revamped-0.3.12.dev13}/src/CasambiBt/_operation.py +0 -0
  20. {casambi_bt_revamped-0.3.12.dev12 → casambi_bt_revamped-0.3.12.dev13}/src/CasambiBt/_switch_events.py +0 -0
  21. {casambi_bt_revamped-0.3.12.dev12 → casambi_bt_revamped-0.3.12.dev13}/src/CasambiBt/_unit.py +0 -0
  22. {casambi_bt_revamped-0.3.12.dev12 → casambi_bt_revamped-0.3.12.dev13}/src/CasambiBt/errors.py +0 -0
  23. {casambi_bt_revamped-0.3.12.dev12 → casambi_bt_revamped-0.3.12.dev13}/src/CasambiBt/py.typed +0 -0
  24. {casambi_bt_revamped-0.3.12.dev12 → casambi_bt_revamped-0.3.12.dev13}/src/casambi_bt_revamped.egg-info/SOURCES.txt +0 -0
  25. {casambi_bt_revamped-0.3.12.dev12 → casambi_bt_revamped-0.3.12.dev13}/src/casambi_bt_revamped.egg-info/dependency_links.txt +0 -0
  26. {casambi_bt_revamped-0.3.12.dev12 → casambi_bt_revamped-0.3.12.dev13}/src/casambi_bt_revamped.egg-info/requires.txt +0 -0
  27. {casambi_bt_revamped-0.3.12.dev12 → casambi_bt_revamped-0.3.12.dev13}/src/casambi_bt_revamped.egg-info/top_level.txt +0 -0
  28. {casambi_bt_revamped-0.3.12.dev12 → casambi_bt_revamped-0.3.12.dev13}/tests/test_classic_protocol.py +0 -0
  29. {casambi_bt_revamped-0.3.12.dev12 → casambi_bt_revamped-0.3.12.dev13}/tests/test_legacy_protocol_handling.py +0 -0
  30. {casambi_bt_revamped-0.3.12.dev12 → casambi_bt_revamped-0.3.12.dev13}/tests/test_switch_event_logs.py +0 -0
  31. {casambi_bt_revamped-0.3.12.dev12 → casambi_bt_revamped-0.3.12.dev13}/tests/test_unit_state_logs.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: casambi-bt-revamped
3
- Version: 0.3.12.dev12
3
+ Version: 0.3.12.dev13
4
4
  Summary: Forked Casambi Bluetooth client library with switch event support, use original if no special need. https://github.com/lkempf/casambi-bt
5
5
  Home-page: https://github.com/rankjie/casambi-bt
6
6
  Author: rankjie
@@ -1,6 +1,6 @@
1
1
  [metadata]
2
2
  name = casambi-bt-revamped
3
- version = 0.3.12.dev12
3
+ version = 0.3.12.dev13
4
4
  author = rankjie
5
5
  author_email = rankjie@gmail.com
6
6
  description = Forked Casambi Bluetooth client library with switch event support, use original if no special need. https://github.com/lkempf/casambi-bt
@@ -1,7 +1,7 @@
1
1
  import json
2
2
  import logging
3
- import platform
4
3
  import pickle
4
+ import random
5
5
  from dataclasses import dataclass
6
6
  from datetime import datetime, timedelta
7
7
  from typing import Any, Final, cast
@@ -13,7 +13,6 @@ from ._cache import Cache
13
13
  from ._constants import DEVICE_NAME
14
14
  from ._keystore import KeyStore
15
15
  from ._unit import Group, Scene, Unit, UnitControl, UnitControlType, UnitType
16
- from ._version import __version__
17
16
  from .errors import (
18
17
  AuthenticationError,
19
18
  NetworkNotFoundError,
@@ -66,29 +65,49 @@ class Network:
66
65
 
67
66
  self._cache = cache
68
67
 
69
- # Android always includes a "token" (and typically "clientInfo") in cloud requests.
70
- # We keep these stable for the process lifetime to make tester logs comparable.
71
- self._token: str = self._make_token()
72
- self._clientInfo: dict[str, Any] = self._make_client_info()
73
-
74
- @staticmethod
75
- def _make_token() -> str:
76
- # Ground truth: casambi-android `w1.o.p(...)` sends `token` for session requests.
77
- #
78
- # Keep this structured (Android uses "brand/model/device/cpu/unknown") but avoid hostnames/PII.
79
- sys = platform.system().lower() or "unknown"
80
- machine = platform.machine().lower() or "unknown"
81
- return f"python/{sys}/{machine}/unknown/unknown"
82
-
83
- @staticmethod
84
- def _make_client_info() -> dict[str, Any]:
85
- # Ground truth: casambi-android `w1.o.g(...)` includes `clientInfo`.
86
- return {
87
- "name": "casambi-bt-revamped",
88
- "version": __version__,
89
- "python": platform.python_version(),
90
- "platform": platform.platform(),
91
- }
68
+ # Android sends "fb:<FCM_token>" we have no push token, use empty string
69
+ # to match the field type without leaking platform info.
70
+ self._token: str = ""
71
+ # Android: "{flavor}/{version} {manufacturer}_{model}/{os_release}"
72
+ _app_version = random.choice((
73
+ "3.19.0", "3.18.2", "3.18.1", "3.18.0",
74
+ "3.17.4", "3.17.3", "3.17.2", "3.17.1", "3.17.0",
75
+ "3.16.5", "3.16.4", "3.16.3", "3.16.1", "3.16.0",
76
+ "3.15.3", "3.15.2", "3.15.1", "3.15.0",
77
+ "3.14.2", "3.14.1", "3.14.0",
78
+ "3.13.2", "3.13.1", "3.13.0",
79
+ "3.12.4", "3.12.3", "3.12.1", "3.12.0",
80
+ "3.11.2", "3.11.1",
81
+ ))
82
+ _device = random.choice((
83
+ # Samsung Galaxy S series
84
+ "samsung_SM-S928B/15", # S24 Ultra
85
+ "samsung_SM-S926B/15", # S24+
86
+ "samsung_SM-S921B/15", # S24
87
+ "samsung_SM-S918B/14", # S23 Ultra
88
+ "samsung_SM-S916B/14", # S23+
89
+ "samsung_SM-S911B/14", # S23
90
+ "samsung_SM-S908B/14", # S22 Ultra
91
+ "samsung_SM-S906B/14", # S22+
92
+ "samsung_SM-S901B/14", # S22
93
+ "samsung_SM-G998B/13", # S21 Ultra
94
+ "samsung_SM-G996B/13", # S21+
95
+ "samsung_SM-G991B/13", # S21
96
+ # Samsung Galaxy A series
97
+ "samsung_SM-A556B/14", # A55
98
+ "samsung_SM-A546B/14", # A54
99
+ "samsung_SM-A346B/14", # A34
100
+ "samsung_SM-A536B/13", # A53
101
+ # Google Pixel
102
+ "Google_Pixel 8 Pro/14",
103
+ "Google_Pixel 8/14",
104
+ "Google_Pixel 7 Pro/14",
105
+ "Google_Pixel 7/14",
106
+ # OnePlus
107
+ "OnePlus_IN2023/14", # 12
108
+ "OnePlus_CPH2449/14", # 11
109
+ ))
110
+ self._clientInfo: str = f"Casambi/{_app_version} {_device}"
92
111
 
93
112
  async def load(self) -> None:
94
113
  self._keystore = KeyStore(self._cache)
@@ -7,4 +7,4 @@ Avoid using importlib.metadata in hot paths by providing a static version string
7
7
  __all__ = ["__version__"]
8
8
 
9
9
  # NOTE: Must match `casambi-bt/setup.cfg` [metadata] version.
10
- __version__ = "0.3.12.dev12"
10
+ __version__ = "0.3.12.dev13"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: casambi-bt-revamped
3
- Version: 0.3.12.dev12
3
+ Version: 0.3.12.dev13
4
4
  Summary: Forked Casambi Bluetooth client library with switch event support, use original if no special need. https://github.com/lkempf/casambi-bt
5
5
  Home-page: https://github.com/rankjie/casambi-bt
6
6
  Author: rankjie