Skip to content

Commit 6e733d9

Browse files
committed
Now reconfigure flow fires an event!
1 parent f1c95f3 commit 6e733d9

File tree

4 files changed

+32
-12
lines changed

4 files changed

+32
-12
lines changed

custom_components/powersensor/PowersensorHouseholdEntity.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ def device_info(self) -> DeviceInfo:
9393
'identifiers': {(DOMAIN, "vhh")},
9494
'manufacturer': "Powersensor",
9595
'model': "Virtual",
96-
'name': "Powersensor Household View",
96+
'name': "Powersensor Household View 🏠",
9797
}
9898

9999
async def async_added_to_hass(self):

custom_components/powersensor/PowersensorSensorEntity.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,19 +78,19 @@ def _ensure_matching_prefix(self):
7878
def _rename_based_on_role(self):
7979
if self._device_name == self._default_device_name():
8080
if self.role =='house-net':
81-
self._device_name = "Powersensor Mains Sensor"
81+
self._device_name = "Powersensor Mains Sensor"
8282
self._ensure_matching_prefix()
8383
return True
8484
elif self.role == 'water':
85-
self._device_name = "Powersensor Water Sensor"
85+
self._device_name = "Powersensor Water Sensor"
8686
self._ensure_matching_prefix()
8787
return True
8888
elif self.role == 'solar':
89-
self._device_name = "Powersensor Solar Sensor"
89+
self._device_name = "Powersensor Solar Sensor"
9090
self._ensure_matching_prefix()
9191
return True
9292
return False
9393

9494
def _default_device_name(self):
95-
return f'Powersensor Sensor (ID: {self._mac})'
95+
return f'Powersensor Sensor (ID: {self._mac})'
9696

custom_components/powersensor/config_flow.py

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@
55
from homeassistant import config_entries
66
from homeassistant.config_entries import ConfigFlowResult
77
from homeassistant.data_entry_flow import FlowResult
8+
from homeassistant.helpers.dispatcher import async_dispatcher_send
89
from homeassistant.helpers.service_info import zeroconf
910
from homeassistant.const import CONF_HOST, CONF_PORT
11+
from homeassistant.helpers.selector import selector
1012

1113
from .const import DEFAULT_PORT, DOMAIN
1214

@@ -92,6 +94,12 @@ async def async_step_reconfigure(self, user_input: dict | None = None)->FlowResu
9294
entry = self.hass.config_entries.async_get_entry(self.context["entry_id"])
9395

9496
if user_input is not None:
97+
# @todo: better handling of mac association
98+
for key, role in user_input.items():
99+
mac= key[33:-2]
100+
_LOGGER.debug(f"Sending {mac}, {role} to {DOMAIN}_update_role")
101+
async_dispatcher_send(self.hass, f"{DOMAIN}_update_role",
102+
mac, role) # default role
95103
await self.hass.config_entries.async_reload(entry.entry_id)
96104
return self.async_abort(reason="Powersensor role updates successful!")
97105

@@ -100,19 +108,26 @@ async def async_step_reconfigure(self, user_input: dict | None = None)->FlowResu
100108
for sensor_mac in dispatcher.sensors:
101109
role = entry.data.get('roles', {}).get(sensor_mac, None)
102110
if not role:
103-
sensor_roles[vol.Optional(f"device_type_{sensor_mac}")] = vol.In(
104-
["house-net", "solar", "water", "appliance", "none"] # Your supported types
111+
sensor_roles[vol.Optional(f"Powersensor Sensor [Mac Address: {sensor_mac}]")] = vol.In(
112+
["house-net", "solar", "water", "appliance", "none"]
105113
)
106114
else:
107-
sensor_roles[vol.Optional(f"device_type_{sensor_mac}", description={"suggested_value": role})] = vol.In(
108-
["house-net", "solar", "water", "appliance", "none"] # Your supported types
109-
)
115+
sensor_roles[vol.Optional(f"Powersensor Sensor [Mac Address: {sensor_mac}]", description={"suggested_value": role})] = selector({
116+
"select" : {
117+
"options" : ["house-net", "solar", "water", "appliance", "none"] ,
118+
"mode" : "dropdown"
119+
}
120+
})
121+
122+
# if not sensor_roles:
123+
# return self.async_abort(reason="no_sensors_found_without_roles")
110124

111125
return self.async_show_form(
112126
step_id="reconfigure",
113127
data_schema=vol.Schema(sensor_roles),
114128
description_placeholders={
115-
"device_count": str(len(sensor_roles))
129+
"device_count": str(len(sensor_roles)),
130+
"docs_url" : "https://dius.github.io/homeassistant-powersensor/data.html#virtual-household"
116131
}
117132
)
118133

custom_components/powersensor/translations/en.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@
1212
"discovery_confirm": {
1313
"description": "Do you want to add Powersensor to Home Assistant?",
1414
"title": "Powersensor plugs discovered"
15+
},
16+
"reconfigure" : {
17+
"title" : "Update sensor roles",
18+
"description": "Note: Roles provided by sensors will override user settings"
1519
}
1620
},
1721
"error": {
@@ -22,7 +26,8 @@
2226
"no_devices_found": "No devices found on the network",
2327
"single_instance_allowed": "Already configured. Only a single configuration possible.",
2428
"already_configured": "Device is already configured",
25-
"cannot_connect": "Failed to connect"
29+
"cannot_connect": "Failed to connect",
30+
"no_sensors_found_without_roles": "All sensors have roles provided!"
2631
}
2732
}
2833
}

0 commit comments

Comments
 (0)