Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion PyViCare/PyViCare.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,8 @@ def __loadInstallations(self):

SUPPORTED_DEVICE_TYPES = [
"heating", "zigbee", "vitoconnect", "electricityStorage",
"tcu", "ventilation", "roomControl",
"tcu", "ventilation", "roomControl", "systemController",
"outdoorUnit",
]

def __extract_all_devices(self):
Expand Down
2 changes: 1 addition & 1 deletion PyViCare/PyViCareDeviceConfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ def asAutoDetectDevice(self):
(self.asPelletsBoiler, r"Vitoligno|Ecotronic|VBC550P", []),
(self.asOilBoiler, r"Vitoladens|Vitoradial|Vitorondens|VPlusH|V200KW2_6", []),
(self.asGazBoiler, r"Vitodens|VScotH|Vitocrossal|VDensH|Vitopend|VPendH|OT_Heating_System", ["type:boiler"]),
(self.asHeatPump, r"Vitocal|VBC70|V200WO1A|CU401B", ["type:heatpump"]),
(self.asHeatPump, r"Vitocal|VBC70|V200WO1A|CU401B|OBNG_SCU|OBNG_OCU", ["type:heatpump"]),
(self.asElectricalEnergySystem, r"E3_VitoCharge_03", ["type:ees"]), # ees, it this a typo?
(self.asElectricalEnergySystem, r"E3_VitoCharge_05", ["type:ess"]),
(self.asVentilation, r"E3_ViAir", ["type:ventilation"]),
Expand Down
20 changes: 19 additions & 1 deletion check_deprecations.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,13 @@
RESPONSE_DIR = ROOT / "tests" / "response"
PYVICARE_DIR = ROOT / "PyViCare"

# Deprecated features we knowingly keep reading, with the reason. Only for cases where the
# replacement cannot be used yet, not to silence work we owe.
IGNORED_IN_CODE = {
"heating.sensors.volumetricFlow.allengra":
"replacement heating.secondaryCircuit.sensors.volumetricFlow is on no known device",
}


def load_database():
"""Load the deprecation database, or return empty if it doesn't exist."""
Expand Down Expand Up @@ -205,6 +212,7 @@ def report(db):
today = date.today()

used_in_code = []
ignored = []
past_due = []
upcoming = []

Expand Down Expand Up @@ -234,7 +242,10 @@ def report(db):
"is_past_due": is_past_due,
}

if code_files:
if code_files and feature in IGNORED_IN_CODE:
entry["reason"] = IGNORED_IN_CODE[feature]
ignored.append(entry)
elif code_files:
used_in_code.append(entry)
elif is_past_due:
past_due.append(entry)
Expand Down Expand Up @@ -277,6 +288,12 @@ def collapse_entries(entries):
for entry in collapse_entries(used_in_code):
print_entry(entry)

if ignored:
print("=== Used in code, ignored on purpose ===\n")
for entry in collapse_entries(ignored):
print_entry(entry)
print(f" Reason: {entry['reason']}\n")

if past_due:
print(f"=== Past removal date (not used in code): {len(past_due)} features ===\n")
for entry in collapse_entries(past_due):
Expand All @@ -292,6 +309,7 @@ def collapse_entries(entries):
print("=== Summary ===")
print(f"{total} deprecated features in database")
print(f"{in_code} used in code {'(ACTION NEEDED)' if in_code else '(clean)'}")
print(f"{len(ignored)} used in code but ignored")
print(f"{len(past_due)} past removal date")
print(f"{len(upcoming)} upcoming")

Expand Down
58 changes: 44 additions & 14 deletions tests/deprecated_features.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"_meta": {
"description": "Known deprecated Viessmann API features, merged from test data and device dumps.",
"updated": "2026-06-10",
"feature_count": 107
"updated": "2026-09-10",
"feature_count": 109
},
"features": {
"heating.buffer.hysteresis": {
Expand Down Expand Up @@ -30,7 +30,8 @@
"Vitodens200W_B2HF.json",
"VitovalorPT2.json",
"dump:device_0_features.json",
"Vitocal252A.json"
"Vitocal252A.json",
"Vitocal200A_SystemController.json"
]
},
"heating.buffer.sensors.temperature.top": {
Expand Down Expand Up @@ -226,7 +227,8 @@
"Vitocal250A.json",
"Vitopure350.json",
"Vitocal252A.json",
"VitosetAqua.json"
"VitosetAqua.json",
"Vitocal200A_SystemController.json"
]
},
"heating.dhw.comfort": {
Expand Down Expand Up @@ -262,7 +264,8 @@
"Vitoladens300-C_J3RA.json",
"VitovalorPT2.json",
"dump:device_0_features.json",
"Vitocal252A.json"
"Vitocal252A.json",
"Vitocal200A_SystemController.json"
]
},
"heating.dhw.sensors.temperature.hotWaterStorage.bottom": {
Expand Down Expand Up @@ -316,7 +319,8 @@
"Vitocal333G-with-Vitovent300F.json",
"VitovalorPT2.json",
"dump:device_0_features.json",
"Vitocal252A.json"
"Vitocal252A.json",
"Vitocal200A_SystemController.json"
]
},
"heating.external.lock": {
Expand All @@ -328,7 +332,8 @@
"Vitocal222S.json",
"Vitocal250A.json",
"VitovalorPT2.json",
"Vitocal252A.json"
"Vitocal252A.json",
"Vitocal200A_SystemController.json"
]
},
"heating.fuelCell.electricalEnergyConsumption.value": {
Expand Down Expand Up @@ -421,6 +426,15 @@
"VitovalorPT2.json"
]
},
"heating.heatingRod": {
"removalDate": "2026-06-30",
"info": "replaced by heating.heatingRod.heating",
"firstSeenIn": "Vitocal200A_SystemController.json",
"firstSeenOn": "2026-09-10",
"sources": [
"Vitocal200A_SystemController.json"
]
},
"heating.noise.reduction.operating.programs.active": {
"removalDate": "2024-09-15",
"info": "replaced by heating.noise.reduction.operating.state",
Expand All @@ -429,7 +443,8 @@
"sources": [
"Vitocal222S.json",
"Vitocal250A.json",
"Vitocal252A.json"
"Vitocal252A.json",
"Vitocal200A_SystemController.json"
]
},
"heating.noise.reduction.operating.programs.maxReduced": {
Expand All @@ -440,7 +455,8 @@
"sources": [
"Vitocal222S.json",
"Vitocal250A.json",
"Vitocal252A.json"
"Vitocal252A.json",
"Vitocal200A_SystemController.json"
]
},
"heating.noise.reduction.operating.programs.notReduced": {
Expand All @@ -451,7 +467,8 @@
"sources": [
"Vitocal222S.json",
"Vitocal250A.json",
"Vitocal252A.json"
"Vitocal252A.json",
"Vitocal200A_SystemController.json"
]
},
"heating.noise.reduction.operating.programs.slightlyReduced": {
Expand All @@ -462,7 +479,8 @@
"sources": [
"Vitocal222S.json",
"Vitocal250A.json",
"Vitocal252A.json"
"Vitocal252A.json",
"Vitocal200A_SystemController.json"
]
},
"heating.scop.dhw": {
Expand All @@ -473,7 +491,8 @@
"sources": [
"Vitocal222S.json",
"Vitocal250A.json",
"Vitocal252A.json"
"Vitocal252A.json",
"Vitocal200A_SystemController.json"
]
},
"heating.scop.heating": {
Expand All @@ -484,7 +503,8 @@
"sources": [
"Vitocal222S.json",
"Vitocal250A.json",
"Vitocal252A.json"
"Vitocal252A.json",
"Vitocal200A_SystemController.json"
]
},
"heating.scop.total": {
Expand All @@ -495,7 +515,17 @@
"sources": [
"Vitocal222S.json",
"Vitocal250A.json",
"Vitocal252A.json"
"Vitocal252A.json",
"Vitocal200A_SystemController.json"
]
},
"heating.sensors.volumetricFlow.allengra": {
"removalDate": "2027-06-15",
"info": "replaced by heating.secondaryCircuit.sensors.volumetricFlow",
"firstSeenIn": "Vitocal200A_OutdoorUnit.json",
"firstSeenOn": "2026-09-10",
"sources": [
"Vitocal200A_OutdoorUnit.json"
]
},
"rooms.0.configuration.window.openState": {
Expand Down
Loading
Loading