Skip to content

Commit b57ca14

Browse files
authored
Show underfloor heating devices in ViCare integration (home-assistant#154541)
1 parent b3e16bd commit b57ca14

File tree

8 files changed

+621
-86
lines changed

8 files changed

+621
-86
lines changed

homeassistant/components/vicare/const.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@
2121
"Heatbox2_SRC",
2222
"E3_TCU10_x07",
2323
"E3_TCU41_x04",
24-
"E3_FloorHeatingCircuitChannel",
25-
"E3_FloorHeatingCircuitDistributorBox",
2624
"E3_RoomControl_One_522",
2725
]
2826

homeassistant/components/vicare/entity.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,19 @@ def __init__(
2929
gateway_serial = device_config.getConfig().serial
3030
device_id = device_config.getId()
3131
model = device_config.getModel().replace("_", " ")
32+
via_device_identifier: tuple[str, str] = ("", "")
3233

3334
identifier = (
3435
f"{gateway_serial}_{device_serial.replace('-', '_')}"
3536
if device_serial is not None
3637
else f"{gateway_serial}_{device_id}"
3738
)
3839

40+
if device_serial is not None and device_serial.startswith("zigbee-"):
41+
parts = device_serial.split("-")
42+
if len(parts) == 3: # expect format zigbee-<zigbee-ieee>-<channel-id>
43+
via_device_identifier = (DOMAIN, f"{gateway_serial}_zigbee_{parts[1]}")
44+
3945
self._api: PyViCareDevice | PyViCareHeatingDeviceComponent = (
4046
component if component else device
4147
)
@@ -50,4 +56,5 @@ def __init__(
5056
manufacturer="Viessmann",
5157
model=model,
5258
configuration_url=VIESSMANN_DEVELOPER_PORTAL,
59+
via_device=via_device_identifier,
5360
)
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
{
2+
"data": [
3+
{
4+
"apiVersion": 1,
5+
"commands": {
6+
"setName": {
7+
"isExecutable": true,
8+
"name": "setName",
9+
"params": {
10+
"name": {
11+
"constraints": {
12+
"maxLength": 40,
13+
"minLength": 1,
14+
"regEx": "^[\\p{L}0-9]+( [\\p{L}0-9]+)*$"
15+
},
16+
"required": true,
17+
"type": "string"
18+
}
19+
},
20+
"uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/zigbee-################-2/features/device.name/commands/setName"
21+
}
22+
},
23+
"deviceId": "zigbee-################-2",
24+
"feature": "device.name",
25+
"gatewayId": "################",
26+
"isEnabled": true,
27+
"isReady": true,
28+
"properties": {
29+
"name": {
30+
"type": "string",
31+
"value": "Zone EG Bad"
32+
}
33+
},
34+
"timestamp": "2025-10-05T14:18:35.990Z",
35+
"uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/zigbee-################-2/features/device.name"
36+
},
37+
{
38+
"apiVersion": 1,
39+
"commands": {},
40+
"deviceId": "zigbee-################-2",
41+
"feature": "fht.valve",
42+
"gatewayId": "################",
43+
"isEnabled": true,
44+
"isReady": true,
45+
"properties": {
46+
"type": {
47+
"type": "string",
48+
"value": "normallyClosed"
49+
}
50+
},
51+
"timestamp": "2025-10-05T14:18:35.990Z",
52+
"uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/zigbee-################-2/features/fht.valve"
53+
},
54+
{
55+
"apiVersion": 1,
56+
"commands": {},
57+
"deviceId": "zigbee-################-2",
58+
"feature": "fht.valve.state",
59+
"gatewayId": "################",
60+
"isEnabled": true,
61+
"isReady": true,
62+
"properties": {
63+
"status": {
64+
"type": "string",
65+
"value": "closed"
66+
}
67+
},
68+
"timestamp": "2025-10-05T14:18:35.990Z",
69+
"uri": "https://api.viessmann-climatesolutions.com/iot/v2/features/installations/#######/gateways/################/devices/zigbee-################-2/features/fht.valve.state"
70+
}
71+
]
72+
}

0 commit comments

Comments
 (0)