PyViCare 2.40.0__tar.gz → 2.41.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.
- {pyvicare-2.40.0 → pyvicare-2.41.1}/PKG-INFO +8 -3
- {pyvicare-2.40.0 → pyvicare-2.41.1}/PyViCare/PyViCareHeatPump.py +94 -0
- {pyvicare-2.40.0 → pyvicare-2.41.1}/README.md +5 -0
- {pyvicare-2.40.0 → pyvicare-2.41.1}/pyproject.toml +2 -2
- {pyvicare-2.40.0 → pyvicare-2.41.1}/LICENSE +0 -0
- {pyvicare-2.40.0 → pyvicare-2.41.1}/PyViCare/Feature.py +0 -0
- {pyvicare-2.40.0 → pyvicare-2.41.1}/PyViCare/PyViCare.py +0 -0
- {pyvicare-2.40.0 → pyvicare-2.41.1}/PyViCare/PyViCareAbstractOAuthManager.py +0 -0
- {pyvicare-2.40.0 → pyvicare-2.41.1}/PyViCare/PyViCareBrowserOAuthManager.py +0 -0
- {pyvicare-2.40.0 → pyvicare-2.41.1}/PyViCare/PyViCareCachedService.py +0 -0
- {pyvicare-2.40.0 → pyvicare-2.41.1}/PyViCare/PyViCareDevice.py +0 -0
- {pyvicare-2.40.0 → pyvicare-2.41.1}/PyViCare/PyViCareDeviceConfig.py +0 -0
- {pyvicare-2.40.0 → pyvicare-2.41.1}/PyViCare/PyViCareElectricalEnergySystem.py +0 -0
- {pyvicare-2.40.0 → pyvicare-2.41.1}/PyViCare/PyViCareFuelCell.py +0 -0
- {pyvicare-2.40.0 → pyvicare-2.41.1}/PyViCare/PyViCareGateway.py +0 -0
- {pyvicare-2.40.0 → pyvicare-2.41.1}/PyViCare/PyViCareGazBoiler.py +0 -0
- {pyvicare-2.40.0 → pyvicare-2.41.1}/PyViCare/PyViCareHeatCurveCalculation.py +0 -0
- {pyvicare-2.40.0 → pyvicare-2.41.1}/PyViCare/PyViCareHeatingDevice.py +0 -0
- {pyvicare-2.40.0 → pyvicare-2.41.1}/PyViCare/PyViCareHybrid.py +0 -0
- {pyvicare-2.40.0 → pyvicare-2.41.1}/PyViCare/PyViCareOAuthManager.py +0 -0
- {pyvicare-2.40.0 → pyvicare-2.41.1}/PyViCare/PyViCareOilBoiler.py +0 -0
- {pyvicare-2.40.0 → pyvicare-2.41.1}/PyViCare/PyViCarePelletsBoiler.py +0 -0
- {pyvicare-2.40.0 → pyvicare-2.41.1}/PyViCare/PyViCareRadiatorActuator.py +0 -0
- {pyvicare-2.40.0 → pyvicare-2.41.1}/PyViCare/PyViCareRoomSensor.py +0 -0
- {pyvicare-2.40.0 → pyvicare-2.41.1}/PyViCare/PyViCareService.py +0 -0
- {pyvicare-2.40.0 → pyvicare-2.41.1}/PyViCare/PyViCareUtils.py +0 -0
- {pyvicare-2.40.0 → pyvicare-2.41.1}/PyViCare/PyViCareVentilationDevice.py +0 -0
- {pyvicare-2.40.0 → pyvicare-2.41.1}/PyViCare/__init__.py +0 -0
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
2
|
Name: PyViCare
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.41.1
|
|
4
4
|
Summary: Library to communicate with the Viessmann ViCare API.
|
|
5
|
-
Home-page: https://github.com/openviess/PyViCare
|
|
6
5
|
License: Apache-2.0
|
|
7
6
|
Keywords: viessmann,vicare,api
|
|
8
7
|
Author: Simon Gillet
|
|
@@ -27,6 +26,7 @@ Requires-Dist: requests (>=2.31.0)
|
|
|
27
26
|
Project-URL: Bug Tracker, https://github.com/openviess/PyViCare/issues
|
|
28
27
|
Project-URL: Changelog, https://github.com/openviess/PyViCare/releases
|
|
29
28
|
Project-URL: Documentation, https://github.com/openviess/PyViCare
|
|
29
|
+
Project-URL: Homepage, https://github.com/openviess/PyViCare
|
|
30
30
|
Project-URL: Repository, https://github.com/openviess/PyViCare
|
|
31
31
|
Description-Content-Type: text/markdown
|
|
32
32
|
|
|
@@ -200,6 +200,11 @@ vicare.initWithCredentials(email, password, client_id, "token.save")
|
|
|
200
200
|
|
|
201
201
|
with open(f"dump.json", mode='w') as output:
|
|
202
202
|
output.write(vicare.devices[0].dump_secure())
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
To make the test data comparable with future updates, it must be sorted. No worries, this can be done automatically using [`jq`](https://jqlang.github.io/jq/).
|
|
203
206
|
|
|
207
|
+
```sh
|
|
208
|
+
jq ".data|=sort_by(.feature)" --sort-keys testData.json > testDataSorted.json
|
|
204
209
|
```
|
|
205
210
|
|
|
@@ -240,6 +240,64 @@ class HeatPump(HeatingDevice, VentilationDevice):
|
|
|
240
240
|
"""
|
|
241
241
|
return self.service.setProperty("heating.dhw.temperature.hysteresis", "setHysteresisSwitchOffValue", {'hysteresis': temperature})
|
|
242
242
|
|
|
243
|
+
@handleNotSupported
|
|
244
|
+
def getSupplyPressureUnit(self) -> str:
|
|
245
|
+
# Returns heating supply pressure unit (e.g. bar)
|
|
246
|
+
return str(self.service.getProperty("heating.sensors.pressure.supply")["properties"]["value"]["unit"])
|
|
247
|
+
|
|
248
|
+
@handleNotSupported
|
|
249
|
+
def getSupplyPressure(self) -> float:
|
|
250
|
+
# Returns heating supply pressure
|
|
251
|
+
return float(self.service.getProperty("heating.sensors.pressure.supply")["properties"]["value"]["value"])
|
|
252
|
+
|
|
253
|
+
@handleNotSupported
|
|
254
|
+
def getSeasonalPerformanceFactorDHW(self) -> float:
|
|
255
|
+
return float(self.service.getProperty("heating.spf.dhw")["properties"]["value"]["value"])
|
|
256
|
+
|
|
257
|
+
@handleNotSupported
|
|
258
|
+
def getSeasonalPerformanceFactorHeating(self) -> float:
|
|
259
|
+
return float(self.service.getProperty("heating.spf.heating")["properties"]["value"]["value"])
|
|
260
|
+
|
|
261
|
+
@handleNotSupported
|
|
262
|
+
def getSeasonalPerformanceFactorTotal(self) -> float:
|
|
263
|
+
return float(self.service.getProperty("heating.spf.total")["properties"]["value"]["value"])
|
|
264
|
+
|
|
265
|
+
@handleNotSupported
|
|
266
|
+
def getHeatingRodStarts(self) -> int:
|
|
267
|
+
return int(self.service.getProperty("heating.heatingRod.statistics")["properties"]["starts"]["value"])
|
|
268
|
+
|
|
269
|
+
@handleNotSupported
|
|
270
|
+
def getHeatingRodHours(self) -> int:
|
|
271
|
+
return int(self.service.getProperty("heating.heatingRod.statistics")["properties"]["hours"]["value"])
|
|
272
|
+
|
|
273
|
+
@handleNotSupported
|
|
274
|
+
def getHeatingRodHeatProductionCurrent(self) -> float:
|
|
275
|
+
return float(self.service.getProperty("heating.heatingRod.heat.production.current")["properties"]["value"]["value"])
|
|
276
|
+
|
|
277
|
+
@handleNotSupported
|
|
278
|
+
def getHeatingRodHeatProductionCurrentUnit(self) -> str:
|
|
279
|
+
return str(self.service.getProperty("heating.heatingRod.heat.production.current")["properties"]["value"]["unit"])
|
|
280
|
+
|
|
281
|
+
@handleNotSupported
|
|
282
|
+
def getHeatingRodPowerConsumptionCurrent(self) -> float:
|
|
283
|
+
return float(self.service.getProperty("heating.heatingRod.power.consumption.current")["properties"]["value"]["value"])
|
|
284
|
+
|
|
285
|
+
@handleNotSupported
|
|
286
|
+
def getHeatingRodPowerConsumptionCurrentUnit(self) -> str:
|
|
287
|
+
return str(self.service.getProperty("heating.heatingRod.power.consumption.current")["properties"]["value"]["unit"])
|
|
288
|
+
|
|
289
|
+
@handleNotSupported
|
|
290
|
+
def getHeatingRodPowerConsumptionDHWThisYear(self) -> float:
|
|
291
|
+
return float(self.service.getProperty("heating.heatingRod.power.consumption.dhw")["properties"]["year"]["value"][0])
|
|
292
|
+
|
|
293
|
+
@handleNotSupported
|
|
294
|
+
def getHeatingRodPowerConsumptionHeatingThisYear(self) -> float:
|
|
295
|
+
return float(self.service.getProperty("heating.heatingRod.power.consumption.heating")["properties"]["year"]["value"][0])
|
|
296
|
+
|
|
297
|
+
@handleNotSupported
|
|
298
|
+
def getHeatingRodPowerConsumptionTotalThisYear(self) -> float:
|
|
299
|
+
return float(self.service.getProperty("heating.heatingRod.power.consumption.total")["properties"]["year"]["value"][0])
|
|
300
|
+
|
|
243
301
|
|
|
244
302
|
class Compressor(HeatingDeviceWithComponent):
|
|
245
303
|
|
|
@@ -282,3 +340,39 @@ class Compressor(HeatingDeviceWithComponent):
|
|
|
282
340
|
@handleNotSupported
|
|
283
341
|
def getPhase(self):
|
|
284
342
|
return self.service.getProperty(f"heating.compressors.{self.compressor}")["properties"]["phase"]["value"]
|
|
343
|
+
|
|
344
|
+
@handleNotSupported
|
|
345
|
+
def getHeatProductionCurrent(self) -> float:
|
|
346
|
+
return float(self.service.getProperty(f"heating.compressors.{self.compressor}.heat.production.current")["properties"]["value"]["value"])
|
|
347
|
+
|
|
348
|
+
@handleNotSupported
|
|
349
|
+
def getHeatProductionCurrentUnit(self) -> str:
|
|
350
|
+
return str(self.service.getProperty(f"heating.compressors.{self.compressor}.heat.production.current")["properties"]["value"]["unit"])
|
|
351
|
+
|
|
352
|
+
@handleNotSupported
|
|
353
|
+
def getPowerConsumptionCurrent(self) -> float:
|
|
354
|
+
return float(self.service.getProperty(f"heating.compressors.{self.compressor}.power.consumption.current")["properties"]["value"]["value"])
|
|
355
|
+
|
|
356
|
+
@handleNotSupported
|
|
357
|
+
def getPowerConsumptionCurrentUnit(self) -> str:
|
|
358
|
+
return str(self.service.getProperty(f"heating.compressors.{self.compressor}.power.consumption.current")["properties"]["value"]["unit"])
|
|
359
|
+
|
|
360
|
+
@handleNotSupported
|
|
361
|
+
def getPowerConsumptionDHWThisYear(self) -> float:
|
|
362
|
+
return float(self.service.getProperty(f"heating.compressors.{self.compressor}.power.consumption.dhw")["properties"]["year"]["value"][0])
|
|
363
|
+
|
|
364
|
+
@handleNotSupported
|
|
365
|
+
def getPowerConsumptionHeatingThisYear(self) -> float:
|
|
366
|
+
return float(self.service.getProperty(f"heating.compressors.{self.compressor}.power.consumption.heating")["properties"]["year"]["value"][0])
|
|
367
|
+
|
|
368
|
+
@handleNotSupported
|
|
369
|
+
def getPowerConsumptionCoolingThisYear(self) -> float:
|
|
370
|
+
return float(self.service.getProperty(f"heating.compressors.{self.compressor}.power.consumption.cooling")["properties"]["year"]["value"][0])
|
|
371
|
+
|
|
372
|
+
@handleNotSupported
|
|
373
|
+
def getPowerConsumptionTotalThisYear(self) -> float:
|
|
374
|
+
return float(self.service.getProperty(f"heating.compressors.{self.compressor}.power.consumption.total")["properties"]["year"]["value"][0])
|
|
375
|
+
|
|
376
|
+
@handleNotSupported
|
|
377
|
+
def getPowerConsumptionTotalUnit(self) -> str:
|
|
378
|
+
return str(self.service.getProperty(f"heating.compressors.{self.compressor}.power.consumption.total")["properties"]["year"]["unit"])
|
|
@@ -168,5 +168,10 @@ vicare.initWithCredentials(email, password, client_id, "token.save")
|
|
|
168
168
|
|
|
169
169
|
with open(f"dump.json", mode='w') as output:
|
|
170
170
|
output.write(vicare.devices[0].dump_secure())
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
To make the test data comparable with future updates, it must be sorted. No worries, this can be done automatically using [`jq`](https://jqlang.github.io/jq/).
|
|
171
174
|
|
|
175
|
+
```sh
|
|
176
|
+
jq ".data|=sort_by(.feature)" --sort-keys testData.json > testDataSorted.json
|
|
172
177
|
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "PyViCare"
|
|
3
|
-
version = "2.
|
|
3
|
+
version = "2.41.1"
|
|
4
4
|
description = "Library to communicate with the Viessmann ViCare API."
|
|
5
5
|
authors = [
|
|
6
6
|
"Simon Gillet <mail+pyvicare@gillet.ninja>"
|
|
@@ -52,7 +52,7 @@ mypy = "^1.11.2"
|
|
|
52
52
|
pylint = "^3.2.6"
|
|
53
53
|
pytest = "^8.3.2"
|
|
54
54
|
pytest-cov = "^6.0.0"
|
|
55
|
-
ruff = "^0.
|
|
55
|
+
ruff = "^0.9.0"
|
|
56
56
|
types-deprecated = "^1.2.15.20241117"
|
|
57
57
|
types-requests = ">=2.31"
|
|
58
58
|
|
|
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
|