PySwitchbot 2.0.0__tar.gz → 2.0.1__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-2.0.0 → pyswitchbot-2.0.1}/PKG-INFO +11 -3
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/PySwitchbot.egg-info/PKG-INFO +11 -3
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/README.md +10 -2
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/setup.py +1 -1
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/adv_parsers/keypad_vision.py +2 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/tests/test_adv_parser.py +4 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/LICENSE +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/MANIFEST.in +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/PySwitchbot.egg-info/SOURCES.txt +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/PySwitchbot.egg-info/dependency_links.txt +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/PySwitchbot.egg-info/requires.txt +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/PySwitchbot.egg-info/top_level.txt +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/pyproject.toml +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/setup.cfg +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/__init__.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/adv_parser.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/adv_parsers/__init__.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/adv_parsers/air_purifier.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/adv_parsers/art_frame.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/adv_parsers/blind_tilt.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/adv_parsers/bot.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/adv_parsers/bulb.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/adv_parsers/ceiling_light.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/adv_parsers/climate_panel.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/adv_parsers/contact.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/adv_parsers/curtain.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/adv_parsers/fan.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/adv_parsers/hub2.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/adv_parsers/hub3.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/adv_parsers/hubmini_matter.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/adv_parsers/humidifier.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/adv_parsers/keypad.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/adv_parsers/leak.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/adv_parsers/light_strip.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/adv_parsers/lock.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/adv_parsers/meter.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/adv_parsers/motion.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/adv_parsers/plug.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/adv_parsers/presence_sensor.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/adv_parsers/relay_switch.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/adv_parsers/remote.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/adv_parsers/roller_shade.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/adv_parsers/smart_thermostat_radiator.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/adv_parsers/vacuum.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/api_config.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/const/__init__.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/const/air_purifier.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/const/climate.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/const/evaporative_humidifier.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/const/fan.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/const/hub2.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/const/hub3.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/const/light.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/const/lock.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/const/presence_sensor.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/devices/__init__.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/devices/air_purifier.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/devices/art_frame.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/devices/base_cover.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/devices/base_light.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/devices/blind_tilt.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/devices/bot.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/devices/bulb.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/devices/ceiling_light.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/devices/contact.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/devices/curtain.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/devices/device.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/devices/evaporative_humidifier.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/devices/fan.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/devices/humidifier.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/devices/keypad.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/devices/keypad_vision.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/devices/light_strip.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/devices/lock.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/devices/meter.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/devices/meter_pro.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/devices/motion.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/devices/plug.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/devices/relay_switch.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/devices/roller_shade.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/devices/smart_thermostat_radiator.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/devices/vacuum.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/discovery.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/enum.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/helpers.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/models.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/switchbot/utils.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/tests/test_air_purifier.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/tests/test_art_frame.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/tests/test_base_cover.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/tests/test_blind_tilt.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/tests/test_bulb.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/tests/test_ceiling_light.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/tests/test_colormode_imports.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/tests/test_curtain.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/tests/test_device.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/tests/test_discovery_callback.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/tests/test_encrypted_device.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/tests/test_evaporative_humidifier.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/tests/test_fan.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/tests/test_helpers.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/tests/test_hub2.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/tests/test_hub3.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/tests/test_keypad_vision.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/tests/test_lock.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/tests/test_meter_pro.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/tests/test_relay_switch.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/tests/test_roller_shade.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/tests/test_smart_thermostat_radiator.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/tests/test_strip_light.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/tests/test_utils.py +0 -0
- {pyswitchbot-2.0.0 → pyswitchbot-2.0.1}/tests/test_vacuum.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PySwitchbot
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.1
|
|
4
4
|
Summary: A library to communicate with Switchbot
|
|
5
5
|
Home-page: https://github.com/sblibs/pySwitchbot/
|
|
6
6
|
Author: Daniel Hjelseth Hoyer
|
|
@@ -33,7 +33,15 @@ Dynamic: summary
|
|
|
33
33
|
|
|
34
34
|
# pySwitchbot [](https://codecov.io/gh/sblibs/pySwitchbot)
|
|
35
35
|
|
|
36
|
-
Library to control Switchbot IoT devices https://www.switch-bot.com/
|
|
36
|
+
Library to control Switchbot IoT devices https://www.switch-bot.com/
|
|
37
|
+
|
|
38
|
+
## Setting up the environment
|
|
39
|
+
|
|
40
|
+
```shell
|
|
41
|
+
python3 -m venv .venv
|
|
42
|
+
source .venv/bin/activate
|
|
43
|
+
pip install .
|
|
44
|
+
```
|
|
37
45
|
|
|
38
46
|
## Obtaining encryption key for Switchbot Locks
|
|
39
47
|
|
|
@@ -42,7 +50,7 @@ Using the script `scripts/get_encryption_key.py` you can manually obtain locks e
|
|
|
42
50
|
Usage:
|
|
43
51
|
|
|
44
52
|
```shell
|
|
45
|
-
$ python3 get_encryption_key.py MAC USERNAME
|
|
53
|
+
$ python3 scripts/get_encryption_key.py MAC USERNAME
|
|
46
54
|
Key ID: XX
|
|
47
55
|
Encryption key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
48
56
|
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PySwitchbot
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.1
|
|
4
4
|
Summary: A library to communicate with Switchbot
|
|
5
5
|
Home-page: https://github.com/sblibs/pySwitchbot/
|
|
6
6
|
Author: Daniel Hjelseth Hoyer
|
|
@@ -33,7 +33,15 @@ Dynamic: summary
|
|
|
33
33
|
|
|
34
34
|
# pySwitchbot [](https://codecov.io/gh/sblibs/pySwitchbot)
|
|
35
35
|
|
|
36
|
-
Library to control Switchbot IoT devices https://www.switch-bot.com/
|
|
36
|
+
Library to control Switchbot IoT devices https://www.switch-bot.com/
|
|
37
|
+
|
|
38
|
+
## Setting up the environment
|
|
39
|
+
|
|
40
|
+
```shell
|
|
41
|
+
python3 -m venv .venv
|
|
42
|
+
source .venv/bin/activate
|
|
43
|
+
pip install .
|
|
44
|
+
```
|
|
37
45
|
|
|
38
46
|
## Obtaining encryption key for Switchbot Locks
|
|
39
47
|
|
|
@@ -42,7 +50,7 @@ Using the script `scripts/get_encryption_key.py` you can manually obtain locks e
|
|
|
42
50
|
Usage:
|
|
43
51
|
|
|
44
52
|
```shell
|
|
45
|
-
$ python3 get_encryption_key.py MAC USERNAME
|
|
53
|
+
$ python3 scripts/get_encryption_key.py MAC USERNAME
|
|
46
54
|
Key ID: XX
|
|
47
55
|
Encryption key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
48
56
|
```
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
# pySwitchbot [](https://codecov.io/gh/sblibs/pySwitchbot)
|
|
2
2
|
|
|
3
|
-
Library to control Switchbot IoT devices https://www.switch-bot.com/
|
|
3
|
+
Library to control Switchbot IoT devices https://www.switch-bot.com/
|
|
4
|
+
|
|
5
|
+
## Setting up the environment
|
|
6
|
+
|
|
7
|
+
```shell
|
|
8
|
+
python3 -m venv .venv
|
|
9
|
+
source .venv/bin/activate
|
|
10
|
+
pip install .
|
|
11
|
+
```
|
|
4
12
|
|
|
5
13
|
## Obtaining encryption key for Switchbot Locks
|
|
6
14
|
|
|
@@ -9,7 +17,7 @@ Using the script `scripts/get_encryption_key.py` you can manually obtain locks e
|
|
|
9
17
|
Usage:
|
|
10
18
|
|
|
11
19
|
```shell
|
|
12
|
-
$ python3 get_encryption_key.py MAC USERNAME
|
|
20
|
+
$ python3 scripts/get_encryption_key.py MAC USERNAME
|
|
13
21
|
Key ID: XX
|
|
14
22
|
Encryption key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
15
23
|
```
|
|
@@ -19,6 +19,7 @@ def process_common_mfr_data(mfr_data: bytes | None) -> dict[str, bool | int]:
|
|
|
19
19
|
low_temperature = bool(mfr_data[8] & 0b10000000)
|
|
20
20
|
high_temperature = bool(mfr_data[8] & 0b01000000)
|
|
21
21
|
doorbell = bool(mfr_data[12] & 0b00001000)
|
|
22
|
+
doorbell_seq = mfr_data[12] & 0b00000111
|
|
22
23
|
|
|
23
24
|
return {
|
|
24
25
|
"sequence_number": sequence_number,
|
|
@@ -30,6 +31,7 @@ def process_common_mfr_data(mfr_data: bytes | None) -> dict[str, bool | int]:
|
|
|
30
31
|
"low_temperature": low_temperature,
|
|
31
32
|
"high_temperature": high_temperature,
|
|
32
33
|
"doorbell": doorbell,
|
|
34
|
+
"doorbell_seq": doorbell_seq,
|
|
33
35
|
}
|
|
34
36
|
|
|
35
37
|
|
|
@@ -3718,6 +3718,7 @@ def test_humidifer_with_empty_data() -> None:
|
|
|
3718
3718
|
"battery": 95,
|
|
3719
3719
|
"battery_charging": True,
|
|
3720
3720
|
"doorbell": False,
|
|
3721
|
+
"doorbell_seq": 0,
|
|
3721
3722
|
"duress_alarm": False,
|
|
3722
3723
|
"high_temperature": False,
|
|
3723
3724
|
"lockout_alarm": False,
|
|
@@ -3737,6 +3738,7 @@ def test_humidifer_with_empty_data() -> None:
|
|
|
3737
3738
|
"battery": 96,
|
|
3738
3739
|
"battery_charging": False,
|
|
3739
3740
|
"doorbell": False,
|
|
3741
|
+
"doorbell_seq": 0,
|
|
3740
3742
|
"duress_alarm": False,
|
|
3741
3743
|
"high_temperature": False,
|
|
3742
3744
|
"lockout_alarm": False,
|
|
@@ -4057,6 +4059,7 @@ def test_adv_active(test_case: AdvTestCase) -> None:
|
|
|
4057
4059
|
"battery": 95,
|
|
4058
4060
|
"battery_charging": True,
|
|
4059
4061
|
"doorbell": False,
|
|
4062
|
+
"doorbell_seq": 0,
|
|
4060
4063
|
"duress_alarm": False,
|
|
4061
4064
|
"high_temperature": False,
|
|
4062
4065
|
"lockout_alarm": False,
|
|
@@ -4076,6 +4079,7 @@ def test_adv_active(test_case: AdvTestCase) -> None:
|
|
|
4076
4079
|
"battery": 96,
|
|
4077
4080
|
"battery_charging": False,
|
|
4078
4081
|
"doorbell": False,
|
|
4082
|
+
"doorbell_seq": 0,
|
|
4079
4083
|
"duress_alarm": False,
|
|
4080
4084
|
"high_temperature": False,
|
|
4081
4085
|
"lockout_alarm": False,
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|