Skip to content

Commit db245cd

Browse files
committed
Change detection logic to better accomodate unit id 0
1 parent 8ebdcb5 commit db245cd

File tree

8 files changed

+66
-58
lines changed

8 files changed

+66
-58
lines changed

custom_components/victron/binary_sensor.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -46,18 +46,19 @@ async def async_setup_entry(
4646
_LOGGER.debug("unit == " + str(slave) + " registerLedger == " + str(registerLedger) + " registerInfo ")
4747

4848
#VE.CAN device zero is present under unit 100. This seperates non system / settings entities into the seperate can device
49-
if slave == 100 and not register_name.startswith(("settings", "system")) :
50-
actual_id = 0
51-
else:
52-
actual_id = slave
49+
# if slave == 100 and not register_name.startswith(("settings", "system")) :
50+
# actual_id = 0
51+
# else:
52+
# actual_id = slave
5353

5454
if isinstance(registerInfo.entityType, BoolReadEntityType):
55-
descriptions.append(VictronEntityDescription(
55+
description = VictronEntityDescription(
5656
key=register_name,
5757
name=register_name.replace('_', ' '),
58-
slave=actual_id,
59-
))
60-
_LOGGER.debug("composed description == " + str(descriptions))
58+
slave=slave,
59+
)
60+
_LOGGER.debug("composed description == " + str(description))
61+
descriptions.append(description)
6162

6263
entities = []
6364
entity = {}

custom_components/victron/button.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39,20 +39,21 @@ async def async_setup_entry(
3939
if not config_entry.options[CONF_ADVANCED_OPTIONS]:
4040
continue
4141

42-
if slave == 100 and not register_name.startswith(("settings", "system")) :
43-
actual_id = 0
44-
else:
45-
actual_id = slave
42+
# if slave == 100 and not register_name.startswith(("settings", "system")) :
43+
# actual_id = 0
44+
# else:
45+
# actual_id = slave
4646

4747
if isinstance(registerInfo.entityType, ButtonWriteType):
48-
descriptions.append(VictronEntityDescription(
48+
description = VictronEntityDescription(
4949
key=register_name,
5050
name=register_name.replace('_', ' '),
51-
slave=actual_id,
51+
slave=slave,
5252
device_class=ButtonDeviceClass.RESTART,
5353
address=registerInfo.register,
54-
))
55-
_LOGGER.debug("composed description == " + str(descriptions))
54+
)
55+
_LOGGER.debug("composed description == " + str(description))
56+
descriptions.append(description)
5657

5758
entities = []
5859
entity = {}

custom_components/victron/const.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1345,7 +1345,7 @@ class system_battery_state(Enum):
13451345
"system_bus_charge_power": RegisterInfo(866, INT16, UnitOfPower.WATT)
13461346
}
13471347

1348-
valid_unit_ids = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
1348+
valid_unit_ids = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
13491349
11, 12, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
13501350
31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
13511351
44, 45, 46, 100, 101, 204, 205, 206, 207, 208, 209,

custom_components/victron/hub.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,24 +63,25 @@ def determine_present_devices(self):
6363
for key, register_definition in register_info_dict.items():
6464
#VE.CAN device zero is present under unit 100. This seperates non system / settings entities into the seperate can device
6565
if unit == 100 and not key.startswith(("settings", "system")) :
66-
actual_id = 0
67-
else:
68-
actual_id = unit
66+
continue
67+
# actual_id = 0
68+
# else:
69+
# actual_id = unit
6970

7071
try:
7172
address = self.get_first_register_id(register_definition)
7273
count = self.calculate_register_count(register_definition)
73-
result = self.read_holding_registers(actual_id, address, count)
74+
result = self.read_holding_registers(unit, address, count)
7475
if result.isError():
75-
_LOGGER.debug("result is error for unit: " + str(actual_id) + " address: " + str(address) + " count: " + str(count))
76+
_LOGGER.debug("result is error for unit: " + str(unit) + " address: " + str(address) + " count: " + str(count))
7677
else:
7778
working_registers.append(key)
7879
except Exception as e: # pylint: disable=broad-except
7980
_LOGGER.error(e)
8081

8182

8283
if len(working_registers) > 0:
83-
valid_devices[actual_id] = working_registers
84+
valid_devices[unit] = working_registers
8485
else:
8586
_LOGGER.debug("no registers found for unit: " + str(unit))
8687

custom_components/victron/number.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -63,16 +63,16 @@ async def async_setup_entry(
6363
for register_name, registerInfo in register_info_dict[name].items():
6464
_LOGGER.debug("unit == " + str(slave) + " registerLedger == " + str(registerLedger) + " registerInfo ")
6565

66-
if slave == 100 and not register_name.startswith(("settings", "system")) :
67-
actual_id = 0
68-
else:
69-
actual_id = slave
66+
# if slave == 100 and not register_name.startswith(("settings", "system")) :
67+
# actual_id = 0
68+
# else:
69+
# actual_id = slave
7070

7171
if isinstance(registerInfo.entityType, SliderWriteType):
72-
descriptions.append(VictronEntityDescription(
72+
description = VictronEntityDescription(
7373
key=register_name,
7474
name=register_name.replace('_', ' '),
75-
slave=actual_id,
75+
slave=slave,
7676
native_unit_of_measurement=registerInfo.unit,
7777
mode=NumberMode.SLIDER if config_entry.options[CONF_USE_SLIDERS] else NumberMode.BOX,
7878
native_min_value=determine_min_value(registerInfo.unit, config_entry.options, registerInfo.entityType.powerType, registerInfo.entityType.negative),
@@ -81,8 +81,9 @@ async def async_setup_entry(
8181
address=registerInfo.register,
8282
scale = registerInfo.scale,
8383
native_step = registerInfo.step
84-
))
84+
)
8585
_LOGGER.debug("composed description == " + str(descriptions))
86+
descriptions.append(description)
8687

8788
entities = []
8889
entity = {}

custom_components/victron/select.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -44,19 +44,21 @@ async def async_setup_entry(
4444
if isinstance(registerInfo.entityType, SelectWriteType):
4545
_LOGGER.debug("unit == " + str(slave) + " registerLedger == " + str(registerLedger) + " registerInfo ")
4646

47-
if slave == 100 and not register_name.startswith(("settings", "system")) :
48-
actual_id = 0
49-
else:
50-
actual_id = slave
51-
52-
descriptions.append(VictronEntityDescription(
47+
# if slave == 100 and not register_name.startswith(("settings", "system")) :
48+
# actual_id = 0
49+
# else:
50+
# actual_id = slave
51+
52+
description = VictronEntityDescription(
5353
key=register_name,
5454
name=register_name.replace('_', ' '),
55-
slave=actual_id,
55+
slave=slave,
5656
options=registerInfo.entityType.options,
5757
address=registerInfo.register,
58-
))
59-
_LOGGER.debug("composed description == " + str(descriptions))
58+
)
59+
60+
descriptions.append(description)
61+
_LOGGER.debug("composed description == " + str(description))
6062

6163
entities = []
6264
entity = {}

custom_components/victron/sensor.py

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -58,22 +58,23 @@ async def async_setup_entry(
5858
continue
5959

6060
#VE.CAN device zero is present under unit 100. This seperates non system / settings entities into the seperate can device
61-
if slave == 100 and not register_name.startswith(("settings", "system")) :
62-
actual_id = 0
63-
else:
64-
actual_id = slave
65-
66-
67-
descriptions.append(VictronEntityDescription(
61+
# if slave == 100 and not register_name.startswith(("settings", "system")) :
62+
# actual_id = 0
63+
# else:
64+
# actual_id = slave
65+
66+
description = VictronEntityDescription(
6867
key=register_name,
6968
name=register_name.replace('_', ' '),
7069
native_unit_of_measurement=registerInfo.unit,
7170
state_class=registerInfo.determine_stateclass(),
72-
slave=actual_id,
71+
slave=slave,
7372
device_class=determine_victron_device_class(register_name, registerInfo.unit),
7473
entity_type=registerInfo.entityType if isinstance(registerInfo.entityType, TextReadEntityType) else None
75-
))
76-
_LOGGER.debug("composed description == " + str(descriptions))
74+
)
75+
_LOGGER.debug("composed description == " + str(description))
76+
77+
descriptions.append(description)
7778

7879
entities = []
7980
entity = {}
@@ -137,7 +138,7 @@ def __init__(self, coordinator: victronEnergyDeviceUpdateCoordinator, descriptio
137138
self.entity_type = description.entity_type
138139

139140
self._attr_unique_id = f"{description.slave}_{self.description.key}"
140-
if description.slave not in (100, 225):
141+
if description.slave not in (0, 100, 225):
141142
self.entity_id = f"{SENSOR_DOMAIN}.{DOMAIN}_{self.description.key}_{description.slave}"
142143
else:
143144
self.entity_id = f"{SENSOR_DOMAIN}.{DOMAIN}_{self.description.key}"

custom_components/victron/switch.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,19 +40,20 @@ async def async_setup_entry(
4040
_LOGGER.debug("unit == " + str(slave) + " registerLedger == " + str(registerLedger) + " registerInfo ")
4141

4242
#VE.CAN device zero is present under unit 100. This seperates non system / settings entities into the seperate can device
43-
if slave == 100 and not register_name.startswith(("settings", "system")) :
44-
actual_id = 0
45-
else:
46-
actual_id = slave
43+
# if slave == 100 and not register_name.startswith(("settings", "system")) :
44+
# actual_id = 0
45+
# else:
46+
# actual_id = slave
4747

4848
if isinstance(registerInfo.entityType, SwitchWriteType):
49-
descriptions.append(VictronEntityDescription(
49+
description = VictronEntityDescription(
5050
key=register_name,
5151
name=register_name.replace('_', ' '),
52-
slave=actual_id,
52+
slave=slave,
5353
address=registerInfo.register,
54-
))
55-
_LOGGER.debug("composed description == " + str(descriptions))
54+
)
55+
descriptions.append(description)
56+
_LOGGER.debug("composed description == " + str(description))
5657

5758
entities = []
5859
entity = {}

0 commit comments

Comments
 (0)