Skip to content

Commit e655628

Browse files
author
Sven ten Raa
committed
split the VE.CAN 0 device into its own device and set the actual unit id of 0 for the entities
1 parent 2ae9338 commit e655628

File tree

6 files changed

+54
-18
lines changed

6 files changed

+54
-18
lines changed

custom_components/victron/binary_sensor.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,15 @@ def __init__(self, coordinator: victronEnergyDeviceUpdateCoordinator, descriptio
8282
self._attr_device_class = description.device_class
8383
self._attr_name = f"{description.name}"
8484

85-
self._attr_unique_id = f"{description.slave}_{self.description.key}"
86-
if description.slave not in (100, 225):
87-
self.entity_id = f"{BINARY_SENSOR_DOMAIN}.{DOMAIN}_{self.description.key}_{description.slave}"
85+
#VE.CAN device zero is present under unit 100. This seperates non system / settings entities into the seperate can device
86+
if description.slave == 100 and not description.key.startswith(("settings", "system")) :
87+
actual_id = 0
88+
else:
89+
actual_id = description.slave
90+
91+
self._attr_unique_id = f"{actual_id}_{self.description.key}"
92+
if actual_id not in (100, 225):
93+
self.entity_id = f"{BINARY_SENSOR_DOMAIN}.{DOMAIN}_{self.description.key}_{actual_id}"
8894
else:
8995
self.entity_id = f"{BINARY_SENSOR_DOMAIN}.{DOMAIN}_{self.description.key}"
9096

custom_components/victron/button.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,15 @@ def __init__(self, coordinator: victronEnergyDeviceUpdateCoordinator, descriptio
7979
self._attr_device_class = description.device_class
8080
self._attr_name = f"{description.name}"
8181

82-
self._attr_unique_id = f"{description.slave}_{self.description.key}"
83-
if description.slave not in (100, 225):
84-
self.entity_id = f"{BUTTON_DOMAIN}.{DOMAIN}_{self.description.key}_{description.slave}"
82+
#VE.CAN device zero is present under unit 100. This seperates non system / settings entities into the seperate can device
83+
if description.slave == 100 and not description.key.startswith(("settings", "system")) :
84+
actual_id = 0
85+
else:
86+
actual_id = description.slave
87+
88+
self._attr_unique_id = f"{actual_id}_{self.description.key}"
89+
if actual_id not in (100, 225):
90+
self.entity_id = f"{BUTTON_DOMAIN}.{DOMAIN}_{self.description.key}_{actual_id}"
8591
else:
8692
self.entity_id = f"{BUTTON_DOMAIN}.{DOMAIN}_{self.description.key}"
8793

custom_components/victron/number.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -161,11 +161,17 @@ def __init__(self, coordinator: victronEnergyDeviceUpdateCoordinator, descriptio
161161

162162
self.data_key = str(self.description.slave) + "." + str(self.description.key)
163163

164+
#VE.CAN device zero is present under unit 100. This seperates non system / settings entities into the seperate can device
165+
if description.slave == 100 and not description.key.startswith(("settings", "system")) :
166+
actual_id = 0
167+
else:
168+
actual_id = description.slave
169+
164170
self._attr_native_value = self.description.value_fn(self.coordinator.processed_data(), self.description.slave, self.description.key)
165171

166-
self._attr_unique_id = f"{self.description.slave}_{self.description.key}"
167-
if self.description.slave not in (100, 225):
168-
self.entity_id = f"{NUMBER_DOMAIN}.{DOMAIN}_{self.description.key}_{self.description.slave}"
172+
self._attr_unique_id = f"{actual_id}_{self.description.key}"
173+
if actual_id not in (100, 225):
174+
self.entity_id = f"{NUMBER_DOMAIN}.{DOMAIN}_{self.description.key}_{actual_id}"
169175
else:
170176
self.entity_id = f"{NUMBER_DOMAIN}.{DOMAIN}_{self.description.key}"
171177

custom_components/victron/select.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,15 @@ def __init__(self, hass: HomeAssistant, coordinator: victronEnergyDeviceUpdateCo
8383
#this needs to be changed to allow multiple of the same type
8484
self._attr_name = f"{description.name}"
8585

86-
self._attr_unique_id = f"{self.description.slave}_{self.description.key}"
87-
if self.description.slave not in (100, 225):
88-
self.entity_id = f"{SELECT_DOMAIN}.{DOMAIN}_{self.description.key}_{self.description.slave}"
86+
#VE.CAN device zero is present under unit 100. This seperates non system / settings entities into the seperate can device
87+
if description.slave == 100 and not description.key.startswith(("settings", "system")) :
88+
actual_id = 0
89+
else:
90+
actual_id = description.slave
91+
92+
self._attr_unique_id = f"{actual_id}_{self.description.key}"
93+
if actual_id not in (100, 225):
94+
self.entity_id = f"{SELECT_DOMAIN}.{DOMAIN}_{self.description.key}_{actual_id}"
8995
else:
9096
self.entity_id = f"{SELECT_DOMAIN}.{DOMAIN}_{self.description.key}"
9197

custom_components/victron/sensor.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -128,9 +128,15 @@ def __init__(self, coordinator: victronEnergyDeviceUpdateCoordinator, descriptio
128128
self._attr_state_class = description.state_class
129129
self.entity_type = description.entity_type
130130

131-
self._attr_unique_id = f"{description.slave}_{self.description.key}"
132-
if description.slave not in (100, 225):
133-
self.entity_id = f"{SENSOR_DOMAIN}.{DOMAIN}_{self.description.key}_{description.slave}"
131+
#VE.CAN device zero is present under unit 100. This seperates non system / settings entities into the seperate can device
132+
if description.slave == 100 and not description.key.startswith(("settings", "system")) :
133+
actual_id = 0
134+
else:
135+
actual_id = description.slave
136+
137+
self._attr_unique_id = f"{actual_id}_{self.description.key}"
138+
if actual_id not in (100, 225):
139+
self.entity_id = f"{SENSOR_DOMAIN}.{DOMAIN}_{self.description.key}_{actual_id}"
134140
else:
135141
self.entity_id = f"{SENSOR_DOMAIN}.{DOMAIN}_{self.description.key}"
136142

custom_components/victron/switch.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,15 @@ def __init__(self, hass: HomeAssistant, coordinator: victronEnergyDeviceUpdateCo
7777
self._attr_name = f"{description.name}"
7878
self.data_key = str(self.description.slave) + "." + str(self.description.key)
7979

80-
self._attr_unique_id = f"{self.description.slave}_{self.description.key}"
81-
if self.description.slave not in (100, 225):
82-
self.entity_id = f"{SWITCH_DOMAIN}.{DOMAIN}_{self.description.key}_{self.description.slave}"
80+
#VE.CAN device zero is present under unit 100. This seperates non system / settings entities into the seperate can device
81+
if description.slave == 100 and not description.key.startswith(("settings", "system")) :
82+
actual_id = 0
83+
else:
84+
actual_id = description.slave
85+
86+
self._attr_unique_id = f"{actual_id}_{self.description.key}"
87+
if actual_id not in (100, 225):
88+
self.entity_id = f"{SWITCH_DOMAIN}.{DOMAIN}_{self.description.key}_{actual_id}"
8389
else:
8490
self.entity_id = f"{SWITCH_DOMAIN}.{DOMAIN}_{self.description.key}"
8591

0 commit comments

Comments
 (0)