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.
- {pyvicare-2.35.0 → pyvicare-2.37.0}/PKG-INFO +2 -3
- pyvicare-2.37.0/PyViCare/PyViCareDevice.py +44 -0
- {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCareDeviceConfig.py +1 -0
- {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCareVentilationDevice.py +16 -0
- {pyvicare-2.35.0 → pyvicare-2.37.0}/pyproject.toml +7 -3
- pyvicare-2.35.0/PyViCare/PyViCareDevice.py +0 -23
- {pyvicare-2.35.0 → pyvicare-2.37.0}/LICENSE +0 -0
- {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/Feature.py +0 -0
- {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCare.py +0 -0
- {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCareAbstractOAuthManager.py +0 -0
- {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCareBrowserOAuthManager.py +0 -0
- {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCareCachedService.py +0 -0
- {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCareElectricalEnergySystem.py +0 -0
- {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCareFuelCell.py +0 -0
- {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCareGateway.py +0 -0
- {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCareGazBoiler.py +0 -0
- {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCareHeatCurveCalculation.py +0 -0
- {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCareHeatPump.py +0 -0
- {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCareHeatingDevice.py +0 -0
- {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCareHybrid.py +0 -0
- {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCareOAuthManager.py +0 -0
- {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCareOilBoiler.py +0 -0
- {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCarePelletsBoiler.py +0 -0
- {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCareRadiatorActuator.py +0 -0
- {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCareRoomSensor.py +0 -0
- {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCareService.py +0 -0
- {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/PyViCareUtils.py +0 -0
- {pyvicare-2.35.0 → pyvicare-2.37.0}/PyViCare/__init__.py +0 -0
- {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.
|
|
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.
|
|
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.
|
|
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.
|
|
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 = "^
|
|
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
|
|
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
|