PyViCare 2.35.0__tar.gz → 2.37.0__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 (29) hide show
  1. {pyvicare-2.35.0 → pyvicare-2.37.0}/PKG-INFO +2 -3
  2. pyvicare-2.37.0/PyViCare/PyViCareDevice.py +44 -0
  3. {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCareDeviceConfig.py +1 -0
  4. {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCareVentilationDevice.py +16 -0
  5. {pyvicare-2.35.0 → pyvicare-2.37.0}/pyproject.toml +7 -3
  6. pyvicare-2.35.0/PyViCare/PyViCareDevice.py +0 -23
  7. {pyvicare-2.35.0 → pyvicare-2.37.0}/LICENSE +0 -0
  8. {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/Feature.py +0 -0
  9. {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCare.py +0 -0
  10. {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCareAbstractOAuthManager.py +0 -0
  11. {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCareBrowserOAuthManager.py +0 -0
  12. {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCareCachedService.py +0 -0
  13. {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCareElectricalEnergySystem.py +0 -0
  14. {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCareFuelCell.py +0 -0
  15. {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCareGateway.py +0 -0
  16. {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCareGazBoiler.py +0 -0
  17. {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCareHeatCurveCalculation.py +0 -0
  18. {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCareHeatPump.py +0 -0
  19. {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCareHeatingDevice.py +0 -0
  20. {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCareHybrid.py +0 -0
  21. {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCareOAuthManager.py +0 -0
  22. {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCareOilBoiler.py +0 -0
  23. {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCarePelletsBoiler.py +0 -0
  24. {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCareRadiatorActuator.py +0 -0
  25. {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCareRoomSensor.py +0 -0
  26. {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCareService.py +0 -0
  27. {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCareUtils.py +0 -0
  28. {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/__init__.py +0 -0
  29. {pyvicare-2.35.0 → pyvicare-2.37.0}/README.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PyViCare
3
- Version: 2.35.0
3
+ Version: 2.37.0
4
4
  Summary: Library to communicate with the Viessmann ViCare API.
5
5
  Home-page: https://github.com/openviess/PyViCare
6
6
  License: Apache-2.0
@@ -9,13 +9,12 @@ Author: Simon Gillet
9
9
  Author-email: mail+pyvicare@gillet.ninja
10
10
  Maintainer: Christopher Fenner
11
11
  Maintainer-email: fenner.christopher@gmail.com
12
- Requires-Python: >=3.8,<4.0
12
+ Requires-Python: >=3.9,<4.0
13
13
  Classifier: Intended Audience :: Developers
14
14
  Classifier: License :: OSI Approved :: Apache Software License
15
15
  Classifier: Natural Language :: English
16
16
  Classifier: Operating System :: OS Independent
17
17
  Classifier: Programming Language :: Python :: 3
18
- Classifier: Programming Language :: Python :: 3.8
19
18
  Classifier: Programming Language :: Python :: 3.9
20
19
  Classifier: Programming Language :: Python :: 3.10
21
20
  Classifier: Programming Language :: Python :: 3.11
@@ -0,0 +1,44 @@
1
+ from typing import Any
2
+
3
+ from PyViCare.PyViCareService import ViCareService
4
+ from PyViCare.PyViCareUtils import PyViCareNotSupportedFeatureError, handleNotSupported
5
+
6
+
7
+ class Device:
8
+ """This is the base class for all simple devices.
9
+ This class connects to the Viessmann ViCare API.
10
+ The authentication is done through OAuth2.
11
+ Note that currently, a new token is generated for each run.
12
+ """
13
+
14
+ def __init__(self, service: ViCareService) -> None:
15
+ self.service = service
16
+
17
+ @handleNotSupported
18
+ def getSerial(self):
19
+ return self.service.getProperty("device.serial")["properties"]["value"]["value"]
20
+
21
+ @handleNotSupported
22
+ def getDeviceErrors(self) -> list[Any]:
23
+ return list[Any](self.service.getProperty("device.messages.errors.raw")["properties"]["entries"]["value"])
24
+
25
+ def isLegacyDevice(self) -> bool:
26
+ return self.service.hasRoles(["type:legacy"])
27
+
28
+ def isE3Device(self) -> bool:
29
+ return self.service.hasRoles(["type:E3"])
30
+
31
+ def isDomesticHotWaterDevice(self):
32
+ return self._isTypeDevice("heating.dhw")
33
+
34
+ def isSolarThermalDevice(self):
35
+ return self._isTypeDevice("heating.solar")
36
+
37
+ def isVentilationDevice(self):
38
+ return self._isTypeDevice("ventilation")
39
+
40
+ def _isTypeDevice(self, deviceType: str):
41
+ try:
42
+ return self.service.getProperty(deviceType)["isEnabled"] and self.service.getProperty(deviceType)["properties"]["active"]["value"]
43
+ except PyViCareNotSupportedFeatureError:
44
+ return False
@@ -84,6 +84,7 @@ class PyViCareDeviceConfig:
84
84
  (self.asPelletsBoiler, r"Vitoligno|Ecotronic|VBC550P", []),
85
85
  (self.asElectricalEnergySystem, r"E3_VitoCharge_03", ["type:ees"]),
86
86
  (self.asVentilation, r"E3_ViAir", ["type:ventilation"]),
87
+ (self.asVentilation, r"E3_ViAir", ["type:ventilation;central"]),
87
88
  (self.asVentilation, r"E3_VitoPure", ["type:ventilation;purifier"]),
88
89
  (self.asRadiatorActuator, r"E3_RadiatorActuator", ["type:radiator"]),
89
90
  (self.asRoomSensor, r"E3_RoomSensor", ["type:climateSensor"]),
@@ -74,6 +74,10 @@ class VentilationDevice(Device):
74
74
  """
75
75
  return self.service.setProperty(f"ventilation.operating.programs.{program}", "deactivate", {})
76
76
 
77
+ @handleNotSupported
78
+ def getPermanentLevels(self) -> list[str]:
79
+ return list[str](self.service.getProperty("ventilation.operating.modes.permanent")["commands"]["setLevel"]["params"]["level"]["constraints"]["enum"])
80
+
77
81
  @handleAPICommandErrors
78
82
  def setPermanentLevel(self, level: str):
79
83
  return self.service.setProperty("ventilation.operating.modes.permanent", "setLevel", {'level': level})
@@ -91,3 +95,15 @@ class VentilationDevice(Device):
91
95
  "sat": properties["entries"]["value"]["sat"],
92
96
  "sun": properties["entries"]["value"]["sun"]
93
97
  }
98
+
99
+ @handleNotSupported
100
+ def getVentilationDemand(self) -> str:
101
+ return str(self.service.getProperty("ventilation.operating.state")["properties"]["demand"]["value"])
102
+
103
+ @handleNotSupported
104
+ def getVentilationLevel(self) -> str:
105
+ return str(self.service.getProperty("ventilation.operating.state")["properties"]["level"]["value"])
106
+
107
+ @handleNotSupported
108
+ def getVentilationReason(self) -> str:
109
+ return str(self.service.getProperty("ventilation.operating.state")["properties"]["reason"]["value"])
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "PyViCare"
3
- version = "2.35.0"
3
+ version = "2.37.0"
4
4
  description = "Library to communicate with the Viessmann ViCare API."
5
5
  authors = [
6
6
  "Simon Gillet <mail+pyvicare@gillet.ninja>"
@@ -23,6 +23,10 @@ keywords = [
23
23
  classifiers = [
24
24
  "Intended Audience :: Developers",
25
25
  "Natural Language :: English",
26
+ "Programming Language :: Python :: 3.9",
27
+ "Programming Language :: Python :: 3.10",
28
+ "Programming Language :: Python :: 3.11",
29
+ "Programming Language :: Python :: 3.12",
26
30
  "Programming Language :: Python :: 3",
27
31
  "License :: OSI Approved :: Apache Software License",
28
32
  "Topic :: Software Development :: Libraries :: Python Modules",
@@ -38,7 +42,7 @@ Changelog = "https://github.com/openviess/PyViCare/releases"
38
42
 
39
43
  [tool.poetry.dependencies]
40
44
  authlib = ">1.2.0"
41
- python = "^3.8"
45
+ python = "^3.9"
42
46
  requests = ">=2.31.0"
43
47
 
44
48
  [tool.poetry.group.dev.dependencies]
@@ -46,7 +50,7 @@ codespell = "^2.3.0"
46
50
  mypy = "^1.11.2"
47
51
  pylint = "^3.2.6"
48
52
  pytest = "^8.3.2"
49
- pytest-cov = "^5.0.0"
53
+ pytest-cov = "^6.0.0"
50
54
  ruff = "^0.7.0"
51
55
  types-requests = ">=2.31"
52
56
 
@@ -1,23 +0,0 @@
1
- from PyViCare.PyViCareService import ViCareService
2
- from PyViCare.PyViCareUtils import handleNotSupported
3
-
4
-
5
- class Device:
6
- """This is the base class for all simple devices.
7
- This class connects to the Viessmann ViCare API.
8
- The authentication is done through OAuth2.
9
- Note that currently, a new token is generated for each run.
10
- """
11
-
12
- def __init__(self, service: ViCareService) -> None:
13
- self.service = service
14
-
15
- @handleNotSupported
16
- def getSerial(self):
17
- return self.service.getProperty("device.serial")["properties"]["value"]["value"]
18
-
19
- def isLegacyDevice(self) -> bool:
20
- return self.service.hasRoles(["type:legacy"])
21
-
22
- def isE3Device(self) -> bool:
23
- return self.service.hasRoles(["type:E3"])
File without changes
File without changes
File without changes