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.
Files changed (59) hide show
  1. {pyvesync-3.1.0/src/pyvesync.egg-info → pyvesync-3.1.1}/PKG-INFO +1 -1
  2. {pyvesync-3.1.0 → pyvesync-3.1.1}/pyproject.toml +1 -1
  3. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/device_map.py +4 -4
  4. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/devices/vesynchumidifier.py +1 -0
  5. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/devices/vesyncpurifier.py +2 -1
  6. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/models/purifier_models.py +1 -1
  7. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/vesync.py +4 -1
  8. {pyvesync-3.1.0 → pyvesync-3.1.1/src/pyvesync.egg-info}/PKG-INFO +1 -1
  9. {pyvesync-3.1.0 → pyvesync-3.1.1}/LICENSE +0 -0
  10. {pyvesync-3.1.0 → pyvesync-3.1.1}/MANIFEST.in +0 -0
  11. {pyvesync-3.1.0 → pyvesync-3.1.1}/README.md +0 -0
  12. {pyvesync-3.1.0 → pyvesync-3.1.1}/requirements.txt +0 -0
  13. {pyvesync-3.1.0 → pyvesync-3.1.1}/setup.cfg +0 -0
  14. {pyvesync-3.1.0 → pyvesync-3.1.1}/setup.py +0 -0
  15. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/__init__.py +0 -0
  16. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/auth.py +0 -0
  17. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/base_devices/__init__.py +0 -0
  18. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/base_devices/bulb_base.py +0 -0
  19. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/base_devices/fan_base.py +0 -0
  20. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/base_devices/fryer_base.py +0 -0
  21. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/base_devices/humidifier_base.py +0 -0
  22. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/base_devices/outlet_base.py +0 -0
  23. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/base_devices/purifier_base.py +0 -0
  24. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/base_devices/switch_base.py +0 -0
  25. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/base_devices/thermostat_base.py +0 -0
  26. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/base_devices/vesyncbasedevice.py +0 -0
  27. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/const.py +0 -0
  28. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/device_container.py +0 -0
  29. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/devices/__init__.py +0 -0
  30. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/devices/vesyncbulb.py +0 -0
  31. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/devices/vesyncfan.py +0 -0
  32. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/devices/vesynckitchen.py +0 -0
  33. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/devices/vesyncoutlet.py +0 -0
  34. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/devices/vesyncswitch.py +0 -0
  35. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/devices/vesyncthermostat.py +0 -0
  36. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/models/__init__.py +0 -0
  37. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/models/base_models.py +0 -0
  38. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/models/bulb_models.py +0 -0
  39. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/models/bypass_models.py +0 -0
  40. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/models/fan_models.py +0 -0
  41. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/models/fryer_models.py +0 -0
  42. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/models/home_models.py +0 -0
  43. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/models/humidifier_models.py +0 -0
  44. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/models/outlet_models.py +0 -0
  45. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/models/switch_models.py +0 -0
  46. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/models/thermostat_models.py +0 -0
  47. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/models/vesync_models.py +0 -0
  48. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/utils/__init__.py +0 -0
  49. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/utils/colors.py +0 -0
  50. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/utils/device_mixins.py +0 -0
  51. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/utils/enum_utils.py +0 -0
  52. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/utils/errors.py +0 -0
  53. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/utils/helpers.py +0 -0
  54. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/utils/logs.py +0 -0
  55. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync/vesynchome.py +0 -0
  56. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync.egg-info/SOURCES.txt +0 -0
  57. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync.egg-info/dependency_links.txt +0 -0
  58. {pyvesync-3.1.0 → pyvesync-3.1.1}/src/pyvesync.egg-info/requires.txt +0 -0
  59. {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.0
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.0"
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, 5)),
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='VeSyncAirBaseV2',
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-F422_WJP', 'LTF-F422S-WUS'],
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: str | None = None
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.debug('Error updating device: %s', exc)
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.0
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