PySwitchbot 0.52.0__tar.gz → 0.53.2__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.
- pyswitchbot-0.53.2/PKG-INFO +59 -0
- pyswitchbot-0.53.2/PySwitchbot.egg-info/PKG-INFO +59 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/PySwitchbot.egg-info/SOURCES.txt +2 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/README.md +1 -1
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/setup.py +9 -2
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/switchbot/adv_parser.py +9 -2
- pyswitchbot-0.53.2/switchbot/adv_parsers/keypad.py +22 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/switchbot/const.py +4 -2
- pyswitchbot-0.53.2/switchbot/devices/motion.py +1 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/switchbot/devices/relay_switch.py +1 -1
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/switchbot/discovery.py +4 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/tests/test_adv_parser.py +25 -0
- pyswitchbot-0.52.0/PKG-INFO +0 -20
- pyswitchbot-0.52.0/PySwitchbot.egg-info/PKG-INFO +0 -20
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/LICENSE +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/MANIFEST.in +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/PySwitchbot.egg-info/dependency_links.txt +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/PySwitchbot.egg-info/requires.txt +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/PySwitchbot.egg-info/top_level.txt +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/setup.cfg +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/switchbot/__init__.py +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/switchbot/adv_parsers/__init__.py +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/switchbot/adv_parsers/blind_tilt.py +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/switchbot/adv_parsers/bot.py +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/switchbot/adv_parsers/bulb.py +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/switchbot/adv_parsers/ceiling_light.py +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/switchbot/adv_parsers/contact.py +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/switchbot/adv_parsers/curtain.py +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/switchbot/adv_parsers/hub2.py +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/switchbot/adv_parsers/humidifier.py +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/switchbot/adv_parsers/light_strip.py +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/switchbot/adv_parsers/lock.py +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/switchbot/adv_parsers/meter.py +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/switchbot/adv_parsers/motion.py +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/switchbot/adv_parsers/plug.py +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/switchbot/adv_parsers/relay_switch.py +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/switchbot/api_config.py +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/switchbot/devices/__init__.py +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/switchbot/devices/base_cover.py +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/switchbot/devices/base_light.py +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/switchbot/devices/blind_tilt.py +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/switchbot/devices/bot.py +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/switchbot/devices/bulb.py +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/switchbot/devices/ceiling_light.py +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/switchbot/devices/contact.py +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/switchbot/devices/curtain.py +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/switchbot/devices/device.py +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/switchbot/devices/humidifier.py +0 -0
- /pyswitchbot-0.52.0/switchbot/devices/meter.py → /pyswitchbot-0.53.2/switchbot/devices/keypad.py +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/switchbot/devices/light_strip.py +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/switchbot/devices/lock.py +0 -0
- /pyswitchbot-0.52.0/switchbot/devices/motion.py → /pyswitchbot-0.53.2/switchbot/devices/meter.py +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/switchbot/devices/plug.py +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/switchbot/enum.py +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/switchbot/models.py +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/tests/test_base_cover.py +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/tests/test_blind_tilt.py +0 -0
- {pyswitchbot-0.52.0 → pyswitchbot-0.53.2}/tests/test_curtain.py +0 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: PySwitchbot
|
|
3
|
+
Version: 0.53.2
|
|
4
|
+
Summary: A library to communicate with Switchbot
|
|
5
|
+
Home-page: https://github.com/sblibs/pySwitchbot/
|
|
6
|
+
Author: Daniel Hjelseth Hoyer
|
|
7
|
+
License: MIT
|
|
8
|
+
Classifier: Development Status :: 3 - Alpha
|
|
9
|
+
Classifier: Environment :: Other Environment
|
|
10
|
+
Classifier: Intended Audience :: Developers
|
|
11
|
+
Classifier: Operating System :: OS Independent
|
|
12
|
+
Classifier: Programming Language :: Python
|
|
13
|
+
Classifier: Topic :: Home Automation
|
|
14
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
15
|
+
Description-Content-Type: text/markdown
|
|
16
|
+
License-File: LICENSE
|
|
17
|
+
Requires-Dist: aiohttp>=3.9.5
|
|
18
|
+
Requires-Dist: bleak>=0.19.0
|
|
19
|
+
Requires-Dist: bleak-retry-connector>=3.4.0
|
|
20
|
+
Requires-Dist: cryptography>=39.0.0
|
|
21
|
+
Requires-Dist: pyOpenSSL>=23.0.0
|
|
22
|
+
|
|
23
|
+
# pySwitchbot [](https://travis-ci.org/sblibs/pySwitchbot)
|
|
24
|
+
|
|
25
|
+
Library to control Switchbot IoT devices https://www.switch-bot.com/bot
|
|
26
|
+
|
|
27
|
+
## Obtaining locks encryption key
|
|
28
|
+
|
|
29
|
+
Using the script `scripts/get_encryption_key.py` you can manually obtain locks encryption key.
|
|
30
|
+
|
|
31
|
+
Usage:
|
|
32
|
+
|
|
33
|
+
```shell
|
|
34
|
+
$ python3 get_encryption_key.py MAC USERNAME
|
|
35
|
+
Key ID: xx
|
|
36
|
+
Encryption key: xxxxxxxxxxxxxxxx
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Where `MAC` is MAC address of the lock and `USERNAME` is your SwitchBot account username, after that script will ask for your password.
|
|
40
|
+
If authentication succeeds then script should output your key id and encryption key.
|
|
41
|
+
|
|
42
|
+
Examples:
|
|
43
|
+
|
|
44
|
+
- WoLock
|
|
45
|
+
|
|
46
|
+
```python
|
|
47
|
+
import asyncio
|
|
48
|
+
from switchbot.discovery import GetSwitchbotDevices
|
|
49
|
+
from switchbot.devices import lock
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
async def main():
|
|
53
|
+
wolock = await GetSwitchbotDevices().get_locks()
|
|
54
|
+
await lock.SwitchbotLock(wolock['32C0F607-18B8-xxxx-xxxx-xxxxxxxxxx'].device, "key-id", "encryption-key").get_lock_status()
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
asyncio.run(main())
|
|
58
|
+
|
|
59
|
+
```
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: PySwitchbot
|
|
3
|
+
Version: 0.53.2
|
|
4
|
+
Summary: A library to communicate with Switchbot
|
|
5
|
+
Home-page: https://github.com/sblibs/pySwitchbot/
|
|
6
|
+
Author: Daniel Hjelseth Hoyer
|
|
7
|
+
License: MIT
|
|
8
|
+
Classifier: Development Status :: 3 - Alpha
|
|
9
|
+
Classifier: Environment :: Other Environment
|
|
10
|
+
Classifier: Intended Audience :: Developers
|
|
11
|
+
Classifier: Operating System :: OS Independent
|
|
12
|
+
Classifier: Programming Language :: Python
|
|
13
|
+
Classifier: Topic :: Home Automation
|
|
14
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
15
|
+
Description-Content-Type: text/markdown
|
|
16
|
+
License-File: LICENSE
|
|
17
|
+
Requires-Dist: aiohttp>=3.9.5
|
|
18
|
+
Requires-Dist: bleak>=0.19.0
|
|
19
|
+
Requires-Dist: bleak-retry-connector>=3.4.0
|
|
20
|
+
Requires-Dist: cryptography>=39.0.0
|
|
21
|
+
Requires-Dist: pyOpenSSL>=23.0.0
|
|
22
|
+
|
|
23
|
+
# pySwitchbot [](https://travis-ci.org/sblibs/pySwitchbot)
|
|
24
|
+
|
|
25
|
+
Library to control Switchbot IoT devices https://www.switch-bot.com/bot
|
|
26
|
+
|
|
27
|
+
## Obtaining locks encryption key
|
|
28
|
+
|
|
29
|
+
Using the script `scripts/get_encryption_key.py` you can manually obtain locks encryption key.
|
|
30
|
+
|
|
31
|
+
Usage:
|
|
32
|
+
|
|
33
|
+
```shell
|
|
34
|
+
$ python3 get_encryption_key.py MAC USERNAME
|
|
35
|
+
Key ID: xx
|
|
36
|
+
Encryption key: xxxxxxxxxxxxxxxx
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Where `MAC` is MAC address of the lock and `USERNAME` is your SwitchBot account username, after that script will ask for your password.
|
|
40
|
+
If authentication succeeds then script should output your key id and encryption key.
|
|
41
|
+
|
|
42
|
+
Examples:
|
|
43
|
+
|
|
44
|
+
- WoLock
|
|
45
|
+
|
|
46
|
+
```python
|
|
47
|
+
import asyncio
|
|
48
|
+
from switchbot.discovery import GetSwitchbotDevices
|
|
49
|
+
from switchbot.devices import lock
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
async def main():
|
|
53
|
+
wolock = await GetSwitchbotDevices().get_locks()
|
|
54
|
+
await lock.SwitchbotLock(wolock['32C0F607-18B8-xxxx-xxxx-xxxxxxxxxx'].device, "key-id", "encryption-key").get_lock_status()
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
asyncio.run(main())
|
|
58
|
+
|
|
59
|
+
```
|
|
@@ -23,6 +23,7 @@ switchbot/adv_parsers/contact.py
|
|
|
23
23
|
switchbot/adv_parsers/curtain.py
|
|
24
24
|
switchbot/adv_parsers/hub2.py
|
|
25
25
|
switchbot/adv_parsers/humidifier.py
|
|
26
|
+
switchbot/adv_parsers/keypad.py
|
|
26
27
|
switchbot/adv_parsers/light_strip.py
|
|
27
28
|
switchbot/adv_parsers/lock.py
|
|
28
29
|
switchbot/adv_parsers/meter.py
|
|
@@ -40,6 +41,7 @@ switchbot/devices/contact.py
|
|
|
40
41
|
switchbot/devices/curtain.py
|
|
41
42
|
switchbot/devices/device.py
|
|
42
43
|
switchbot/devices/humidifier.py
|
|
44
|
+
switchbot/devices/keypad.py
|
|
43
45
|
switchbot/devices/light_strip.py
|
|
44
46
|
switchbot/devices/lock.py
|
|
45
47
|
switchbot/devices/meter.py
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# pySwitchbot [](https://travis-ci.org/sblibs/pySwitchbot)
|
|
2
2
|
|
|
3
3
|
Library to control Switchbot IoT devices https://www.switch-bot.com/bot
|
|
4
4
|
|
|
@@ -1,5 +1,10 @@
|
|
|
1
|
+
from pathlib import Path
|
|
2
|
+
|
|
1
3
|
from setuptools import setup
|
|
2
4
|
|
|
5
|
+
this_directory = Path(__file__).parent
|
|
6
|
+
long_description = (this_directory / "README.md").read_text()
|
|
7
|
+
|
|
3
8
|
setup(
|
|
4
9
|
name="PySwitchbot",
|
|
5
10
|
packages=["switchbot", "switchbot.devices", "switchbot.adv_parsers"],
|
|
@@ -10,10 +15,12 @@ setup(
|
|
|
10
15
|
"cryptography>=39.0.0",
|
|
11
16
|
"pyOpenSSL>=23.0.0",
|
|
12
17
|
],
|
|
13
|
-
version="0.
|
|
18
|
+
version="0.53.2",
|
|
14
19
|
description="A library to communicate with Switchbot",
|
|
20
|
+
long_description=long_description,
|
|
21
|
+
long_description_content_type="text/markdown",
|
|
15
22
|
author="Daniel Hjelseth Hoyer",
|
|
16
|
-
url="https://github.com/
|
|
23
|
+
url="https://github.com/sblibs/pySwitchbot/",
|
|
17
24
|
license="MIT",
|
|
18
25
|
classifiers=[
|
|
19
26
|
"Development Status :: 3 - Alpha",
|
|
@@ -18,6 +18,7 @@ from .adv_parsers.contact import process_wocontact
|
|
|
18
18
|
from .adv_parsers.curtain import process_wocurtain
|
|
19
19
|
from .adv_parsers.hub2 import process_wohub2
|
|
20
20
|
from .adv_parsers.humidifier import process_wohumidifier
|
|
21
|
+
from .adv_parsers.keypad import process_wokeypad
|
|
21
22
|
from .adv_parsers.light_strip import process_wostrip
|
|
22
23
|
from .adv_parsers.lock import process_wolock, process_wolock_pro
|
|
23
24
|
from .adv_parsers.meter import process_wosensorth, process_wosensorth_c
|
|
@@ -177,14 +178,20 @@ SUPPORTED_TYPES: dict[str, SwitchbotSupportedType] = {
|
|
|
177
178
|
"func": process_woblindtilt,
|
|
178
179
|
"manufacturer_id": 2409,
|
|
179
180
|
},
|
|
181
|
+
"y": {
|
|
182
|
+
"modelName": SwitchbotModel.KEYPAD,
|
|
183
|
+
"modelFriendlyName": "Keypad",
|
|
184
|
+
"func": process_wokeypad,
|
|
185
|
+
"manufacturer_id": 2409,
|
|
186
|
+
},
|
|
180
187
|
"<": {
|
|
181
|
-
"modelName": SwitchbotModel.
|
|
188
|
+
"modelName": SwitchbotModel.RELAY_SWITCH_1PM,
|
|
182
189
|
"modelFriendlyName": "Relay Switch 1PM",
|
|
183
190
|
"func": process_worelay_switch_1pm,
|
|
184
191
|
"manufacturer_id": 2409,
|
|
185
192
|
},
|
|
186
193
|
";": {
|
|
187
|
-
"modelName": SwitchbotModel.
|
|
194
|
+
"modelName": SwitchbotModel.RELAY_SWITCH_1_PLUS,
|
|
188
195
|
"modelFriendlyName": "Relay Switch 1",
|
|
189
196
|
"func": process_worelay_switch_1plus,
|
|
190
197
|
"manufacturer_id": 2409,
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"""Keypad parser."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import logging
|
|
6
|
+
|
|
7
|
+
_LOGGER = logging.getLogger(__name__)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def process_wokeypad(
|
|
11
|
+
data: bytes | None,
|
|
12
|
+
mfr_data: bytes | None,
|
|
13
|
+
) -> dict[str, bool | int | None]:
|
|
14
|
+
"""Process woKeypad services data."""
|
|
15
|
+
if data is None or mfr_data is None:
|
|
16
|
+
return {"battery": None, "attempt_state": None}
|
|
17
|
+
|
|
18
|
+
_LOGGER.debug("mfr_data: %s", mfr_data.hex())
|
|
19
|
+
if data:
|
|
20
|
+
_LOGGER.debug("data: %s", data.hex())
|
|
21
|
+
|
|
22
|
+
return {"battery": data[2] & 0b01111111, "attempt_state": mfr_data[6]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"""Library to handle connection with Switchbot."""
|
|
2
|
+
|
|
2
3
|
from __future__ import annotations
|
|
3
4
|
|
|
4
5
|
from enum import Enum
|
|
@@ -52,8 +53,9 @@ class SwitchbotModel(StrEnum):
|
|
|
52
53
|
LOCK_PRO = "WoLockPro"
|
|
53
54
|
BLIND_TILT = "WoBlindTilt"
|
|
54
55
|
HUB2 = "WoHub2"
|
|
55
|
-
|
|
56
|
-
|
|
56
|
+
KEYPAD = "WoKeypad"
|
|
57
|
+
RELAY_SWITCH_1PM = "Relay Switch 1PM"
|
|
58
|
+
RELAY_SWITCH_1_PLUS = "Relay Switch 1"
|
|
57
59
|
|
|
58
60
|
|
|
59
61
|
class LockStatus(Enum):
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
@@ -25,7 +25,7 @@ class SwitchbotRelaySwitch(SwitchbotSequenceDevice):
|
|
|
25
25
|
key_id: str,
|
|
26
26
|
encryption_key: str,
|
|
27
27
|
interface: int = 0,
|
|
28
|
-
model: SwitchbotModel = SwitchbotModel.
|
|
28
|
+
model: SwitchbotModel = SwitchbotModel.RELAY_SWITCH_1PM,
|
|
29
29
|
**kwargs: Any,
|
|
30
30
|
) -> None:
|
|
31
31
|
if len(key_id) == 0:
|
|
@@ -124,6 +124,10 @@ class GetSwitchbotDevices:
|
|
|
124
124
|
lock_pros = await self._get_devices_by_model("$")
|
|
125
125
|
return {**locks, **lock_pros}
|
|
126
126
|
|
|
127
|
+
async def get_keypads(self) -> dict[str, SwitchBotAdvertisement]:
|
|
128
|
+
"""Return all WoKeypad/Keypad devices with services data."""
|
|
129
|
+
return await self._get_devices_by_model("y")
|
|
130
|
+
|
|
127
131
|
async def get_device_data(
|
|
128
132
|
self, address: str
|
|
129
133
|
) -> dict[str, SwitchBotAdvertisement] | None:
|
|
@@ -1647,3 +1647,28 @@ def test_meter_pro_c_passive() -> None:
|
|
|
1647
1647
|
rssi=-67,
|
|
1648
1648
|
active=False,
|
|
1649
1649
|
)
|
|
1650
|
+
|
|
1651
|
+
|
|
1652
|
+
def test_parse_advertisement_data_keypad():
|
|
1653
|
+
"""Test parse_advertisement_data for the keypad."""
|
|
1654
|
+
ble_device = generate_ble_device("aa:bb:cc:dd:ee:ff", "any")
|
|
1655
|
+
adv_data = generate_advertisement_data(
|
|
1656
|
+
manufacturer_data={2409: b"\xeb\x13\x02\xe6#\x0f\x8fd\x00\x00\x00\x00"},
|
|
1657
|
+
service_data={"0000fd3d-0000-1000-8000-00805f9b34fb": b"y\x00d"},
|
|
1658
|
+
rssi=-67,
|
|
1659
|
+
)
|
|
1660
|
+
result = parse_advertisement_data(ble_device, adv_data, SwitchbotModel.KEYPAD)
|
|
1661
|
+
assert result == SwitchBotAdvertisement(
|
|
1662
|
+
address="aa:bb:cc:dd:ee:ff",
|
|
1663
|
+
data={
|
|
1664
|
+
"data": {"attempt_state": 143, "battery": 100},
|
|
1665
|
+
"isEncrypted": False,
|
|
1666
|
+
"model": "y",
|
|
1667
|
+
"modelFriendlyName": "Keypad",
|
|
1668
|
+
"modelName": SwitchbotModel.KEYPAD,
|
|
1669
|
+
"rawAdvData": b"y\x00d",
|
|
1670
|
+
},
|
|
1671
|
+
device=ble_device,
|
|
1672
|
+
rssi=-67,
|
|
1673
|
+
active=True,
|
|
1674
|
+
)
|
pyswitchbot-0.52.0/PKG-INFO
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.1
|
|
2
|
-
Name: PySwitchbot
|
|
3
|
-
Version: 0.52.0
|
|
4
|
-
Summary: A library to communicate with Switchbot
|
|
5
|
-
Home-page: https://github.com/Danielhiversen/pySwitchbot/
|
|
6
|
-
Author: Daniel Hjelseth Hoyer
|
|
7
|
-
License: MIT
|
|
8
|
-
Classifier: Development Status :: 3 - Alpha
|
|
9
|
-
Classifier: Environment :: Other Environment
|
|
10
|
-
Classifier: Intended Audience :: Developers
|
|
11
|
-
Classifier: Operating System :: OS Independent
|
|
12
|
-
Classifier: Programming Language :: Python
|
|
13
|
-
Classifier: Topic :: Home Automation
|
|
14
|
-
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
15
|
-
License-File: LICENSE
|
|
16
|
-
Requires-Dist: aiohttp>=3.9.5
|
|
17
|
-
Requires-Dist: bleak>=0.19.0
|
|
18
|
-
Requires-Dist: bleak-retry-connector>=3.4.0
|
|
19
|
-
Requires-Dist: cryptography>=39.0.0
|
|
20
|
-
Requires-Dist: pyOpenSSL>=23.0.0
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.1
|
|
2
|
-
Name: PySwitchbot
|
|
3
|
-
Version: 0.52.0
|
|
4
|
-
Summary: A library to communicate with Switchbot
|
|
5
|
-
Home-page: https://github.com/Danielhiversen/pySwitchbot/
|
|
6
|
-
Author: Daniel Hjelseth Hoyer
|
|
7
|
-
License: MIT
|
|
8
|
-
Classifier: Development Status :: 3 - Alpha
|
|
9
|
-
Classifier: Environment :: Other Environment
|
|
10
|
-
Classifier: Intended Audience :: Developers
|
|
11
|
-
Classifier: Operating System :: OS Independent
|
|
12
|
-
Classifier: Programming Language :: Python
|
|
13
|
-
Classifier: Topic :: Home Automation
|
|
14
|
-
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
15
|
-
License-File: LICENSE
|
|
16
|
-
Requires-Dist: aiohttp>=3.9.5
|
|
17
|
-
Requires-Dist: bleak>=0.19.0
|
|
18
|
-
Requires-Dist: bleak-retry-connector>=3.4.0
|
|
19
|
-
Requires-Dist: cryptography>=39.0.0
|
|
20
|
-
Requires-Dist: pyOpenSSL>=23.0.0
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/pyswitchbot-0.52.0/switchbot/devices/meter.py → /pyswitchbot-0.53.2/switchbot/devices/keypad.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
/pyswitchbot-0.52.0/switchbot/devices/motion.py → /pyswitchbot-0.53.2/switchbot/devices/meter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|