pyvesync 3.1.0__tar.gz → 3.1.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.
- {pyvesync-3.1.0/src/pyvesync.egg-info → pyvesync-3.1.1}/PKG-INFO +1 -1
- {pyvesync-3.1.0 → pyvesync-3.1.1}/pyproject.toml +1 -1
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/device_map.py +4 -4
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/devices/vesynchumidifier.py +1 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/devices/vesyncpurifier.py +2 -1
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/models/purifier_models.py +1 -1
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/vesync.py +4 -1
- {pyvesync-3.1.0 → pyvesync-3.1.1/src/pyvesync.egg-info}/PKG-INFO +1 -1
- {pyvesync-3.1.0 → pyvesync-3.1.1}/LICENSE +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/MANIFEST.in +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/README.md +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/requirements.txt +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/setup.cfg +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/setup.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/__init__.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/auth.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/base_devices/__init__.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/base_devices/bulb_base.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/base_devices/fan_base.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/base_devices/fryer_base.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/base_devices/humidifier_base.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/base_devices/outlet_base.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/base_devices/purifier_base.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/base_devices/switch_base.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/base_devices/thermostat_base.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/base_devices/vesyncbasedevice.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/const.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/device_container.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/devices/__init__.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/devices/vesyncbulb.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/devices/vesyncfan.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/devices/vesynckitchen.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/devices/vesyncoutlet.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/devices/vesyncswitch.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/devices/vesyncthermostat.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/models/__init__.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/models/base_models.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/models/bulb_models.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/models/bypass_models.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/models/fan_models.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/models/fryer_models.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/models/home_models.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/models/humidifier_models.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/models/outlet_models.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/models/switch_models.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/models/thermostat_models.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/models/vesync_models.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/utils/__init__.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/utils/colors.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/utils/device_mixins.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/utils/enum_utils.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/utils/errors.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/utils/helpers.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/utils/logs.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/vesynchome.py +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync.egg-info/SOURCES.txt +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync.egg-info/dependency_links.txt +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync.egg-info/requires.txt +0 -0
- {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyvesync
|
|
3
|
-
Version: 3.1.
|
|
3
|
+
Version: 3.1.1
|
|
4
4
|
Summary: pyvesync is a library to manage Etekcity Devices, Cosori Air Fryers, and Levoit Air Purifiers run on the VeSync app.
|
|
5
5
|
Author: Mark Perdue
|
|
6
6
|
Author-email: Joe Trabulsy <webdjoe@gmail.com>
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "pyvesync"
|
|
7
|
-
version = "3.1.
|
|
7
|
+
version = "3.1.1"
|
|
8
8
|
description = "pyvesync is a library to manage Etekcity Devices, Cosori Air Fryers, and Levoit Air Purifiers run on the VeSync app."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.11"
|
|
@@ -750,7 +750,7 @@ purifier_modules: list[PurifierMap] = [
|
|
|
750
750
|
PurifierAutoPreference.QUIET,
|
|
751
751
|
],
|
|
752
752
|
features=[PurifierFeatures.AIR_QUALITY],
|
|
753
|
-
fan_levels=list(range(1,
|
|
753
|
+
fan_levels=list(range(1, 4)),
|
|
754
754
|
device_alias='Core 300S',
|
|
755
755
|
model_display='Core 300S',
|
|
756
756
|
model_name='Core 300S',
|
|
@@ -790,7 +790,7 @@ purifier_modules: list[PurifierMap] = [
|
|
|
790
790
|
),
|
|
791
791
|
PurifierMap(
|
|
792
792
|
class_name='VeSyncAir131',
|
|
793
|
-
dev_types=['LV-PUR131S', 'LV-RH131S'],
|
|
793
|
+
dev_types=['LV-PUR131S', 'LV-RH131S', 'LV-RH131S-WM'],
|
|
794
794
|
modes=[PurifierModes.SLEEP, PurifierModes.MANUAL, PurifierModes.AUTO],
|
|
795
795
|
features=[PurifierFeatures.AIR_QUALITY],
|
|
796
796
|
fan_levels=list(range(1, 4)),
|
|
@@ -888,7 +888,7 @@ purifier_modules: list[PurifierMap] = [
|
|
|
888
888
|
setup_entry='EL551S',
|
|
889
889
|
),
|
|
890
890
|
PurifierMap(
|
|
891
|
-
class_name='
|
|
891
|
+
class_name='VeSyncAirSprout',
|
|
892
892
|
dev_types=[
|
|
893
893
|
'LAP-B851S-WEU',
|
|
894
894
|
'LAP-B851S-WNA',
|
|
@@ -925,7 +925,7 @@ objects for purifier devices."""
|
|
|
925
925
|
fan_modules: list[FanMap] = [
|
|
926
926
|
FanMap(
|
|
927
927
|
class_name='VeSyncTowerFan',
|
|
928
|
-
dev_types=['LTF-F422S-KEU', 'LTF-F422S-WUSR', 'LTF-
|
|
928
|
+
dev_types=['LTF-F422S-KEU', 'LTF-F422S-WUSR', 'LTF-F422S-WJP', 'LTF-F422S-WUS'],
|
|
929
929
|
modes=[
|
|
930
930
|
FanModes.NORMAL,
|
|
931
931
|
FanModes.TURBO,
|
|
@@ -665,6 +665,7 @@ class VeSyncHumid1000S(VeSyncHumid200300S):
|
|
|
665
665
|
self.state.device_status = DeviceStatus.from_int(resp_model.powerSwitch)
|
|
666
666
|
self.state.connection_status = ConnectionStatus.ONLINE
|
|
667
667
|
self.state.mode = resp_model.workMode
|
|
668
|
+
self.state.humidity = resp_model.humidity
|
|
668
669
|
self.state.auto_target_humidity = resp_model.targetHumidity
|
|
669
670
|
self.state.mist_level = resp_model.mistLevel
|
|
670
671
|
self.state.mist_virtual_level = resp_model.virtualLevel
|
|
@@ -123,6 +123,7 @@ class VeSyncAirBypass(BypassV2Mixin, VeSyncPurifier):
|
|
|
123
123
|
result (InnerPurifierResult): Data model for inner result in purifier
|
|
124
124
|
details response.
|
|
125
125
|
"""
|
|
126
|
+
self.state.connection_status = ConnectionStatus.ONLINE
|
|
126
127
|
self.state.device_status = DeviceStatus.ON if result.enabled else DeviceStatus.OFF
|
|
127
128
|
self.state.filter_life = result.filter_life or 0
|
|
128
129
|
self.state.mode = result.mode
|
|
@@ -145,7 +146,7 @@ class VeSyncAirBypass(BypassV2Mixin, VeSyncPurifier):
|
|
|
145
146
|
self.state.pm25 = result.air_quality_value
|
|
146
147
|
self.state.set_air_quality_level(result.air_quality)
|
|
147
148
|
if result.night_light is not None:
|
|
148
|
-
self.state.nightlight_status = DeviceStatus(result.night_light)
|
|
149
|
+
self.state.nightlight_status = DeviceStatus.from_bool(result.night_light)
|
|
149
150
|
|
|
150
151
|
async def get_details(self) -> None:
|
|
151
152
|
r_dict = await self.call_bypassv2_api('getPurifierStatus')
|
|
@@ -124,7 +124,7 @@ class PurifierCoreDetailsResult(InnerPurifierBaseResult):
|
|
|
124
124
|
configuration: PurifierCoreDetailsConfig | None = None
|
|
125
125
|
extension: dict | None = None
|
|
126
126
|
air_quality_value: int | None = None
|
|
127
|
-
night_light:
|
|
127
|
+
night_light: bool | None = None
|
|
128
128
|
fan_rotate: str | None = None
|
|
129
129
|
|
|
130
130
|
|
|
@@ -403,6 +403,9 @@ class VeSync: # pylint: disable=function-redefined
|
|
|
403
403
|
async def update_all_devices(self) -> None:
|
|
404
404
|
"""Run `get_details()` for each device and update state."""
|
|
405
405
|
logger.debug('Start updating the device details one by one')
|
|
406
|
+
if len(self._device_container) == 0:
|
|
407
|
+
logger.error('No devices to update')
|
|
408
|
+
return
|
|
406
409
|
update_tasks: list[asyncio.Task] = [
|
|
407
410
|
asyncio.create_task(device.update()) for device in self._device_container
|
|
408
411
|
]
|
|
@@ -410,7 +413,7 @@ class VeSync: # pylint: disable=function-redefined
|
|
|
410
413
|
for task in done:
|
|
411
414
|
exc = task.exception()
|
|
412
415
|
if exc is not None and isinstance(exc, VeSyncError):
|
|
413
|
-
logger.
|
|
416
|
+
logger.error('Error updating device: %s', exc)
|
|
414
417
|
|
|
415
418
|
async def __aenter__(self) -> Self:
|
|
416
419
|
"""Asynchronous context manager enter."""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyvesync
|
|
3
|
-
Version: 3.1.
|
|
3
|
+
Version: 3.1.1
|
|
4
4
|
Summary: pyvesync is a library to manage Etekcity Devices, Cosori Air Fryers, and Levoit Air Purifiers run on the VeSync app.
|
|
5
5
|
Author: Mark Perdue
|
|
6
6
|
Author-email: Joe Trabulsy <webdjoe@gmail.com>
|
|
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
|