Skip to content
Open
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
27 changes: 27 additions & 0 deletions custom_components/panasonic_cc/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@
DEFAULT_ENERGY_FETCH_INTERVAL,
DEFAULT_ENABLE_DAILY_ENERGY_SENSOR,
CONF_USE_PANASONIC_PRESET_NAMES,
DEFAULT_USE_PANASONIC_PRESET_NAMES,
CONF_FORCE_ENABLE_NANOE,
DEFAULT_FORCE_ENABLE_NANOE,
PANASONIC_DEVICES,
COMPONENT_TYPES,
STARTUP,
Expand Down Expand Up @@ -76,6 +79,30 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry):
if PANASONIC_DEVICES not in hass.data:
hass.data[PANASONIC_DEVICES] = []

# Migrate initial setup options from entry.data to entry.options
# so that all consumers can read from entry.options consistently.
if not entry.options:
hass.config_entries.async_update_entry(
entry,
options={
CONF_ENABLE_DAILY_ENERGY_SENSOR: conf.get(
CONF_ENABLE_DAILY_ENERGY_SENSOR, DEFAULT_ENABLE_DAILY_ENERGY_SENSOR
),
CONF_FORCE_ENABLE_NANOE: conf.get(
CONF_FORCE_ENABLE_NANOE, DEFAULT_FORCE_ENABLE_NANOE
),
CONF_USE_PANASONIC_PRESET_NAMES: conf.get(
CONF_USE_PANASONIC_PRESET_NAMES, DEFAULT_USE_PANASONIC_PRESET_NAMES
),
CONF_DEVICE_FETCH_INTERVAL: conf.get(
CONF_DEVICE_FETCH_INTERVAL, DEFAULT_DEVICE_FETCH_INTERVAL
),
CONF_ENERGY_FETCH_INTERVAL: conf.get(
CONF_ENERGY_FETCH_INTERVAL, DEFAULT_ENERGY_FETCH_INTERVAL
),
},
)

username = conf[CONF_USERNAME]
password = conf[CONF_PASSWORD]
enable_daily_energy_sensor = entry.options.get(CONF_ENABLE_DAILY_ENERGY_SENSOR, DEFAULT_ENABLE_DAILY_ENERGY_SENSOR)
Expand Down
32 changes: 14 additions & 18 deletions custom_components/panasonic_cc/config_flow.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,31 +40,31 @@ class FlowHandler(config_entries.ConfigFlow, domain=PANASONIC_DOMAIN):
@callback
def async_get_options_flow(config_entry):
"""Get the options flow for this handler."""
return PanasonicOptionsFlowHandler(config_entry)
return PanasonicOptionsFlowHandler()
Comment thread
maileys marked this conversation as resolved.

async def _create_entry(self, username, password):
async def _create_entry(self, user_input):
"""Register new entry."""
# Check if ip already is registered
for entry in self._async_current_entries():
if entry.data[KEY_DOMAIN] == PANASONIC_DOMAIN:
return self.async_abort(reason="already_configured")
Comment thread
maileys marked this conversation as resolved.

return self.async_create_entry(title="", data={
CONF_USERNAME: username,
CONF_PASSWORD: password,
CONF_USERNAME: user_input[CONF_USERNAME],
CONF_PASSWORD: user_input[CONF_PASSWORD],
CONF_FORCE_OUTSIDE_SENSOR: False,
CONF_FORCE_ENABLE_NANOE: DEFAULT_FORCE_ENABLE_NANOE,
CONF_ENABLE_DAILY_ENERGY_SENSOR: DEFAULT_ENABLE_DAILY_ENERGY_SENSOR,
CONF_USE_PANASONIC_PRESET_NAMES: DEFAULT_USE_PANASONIC_PRESET_NAMES,
CONF_DEVICE_FETCH_INTERVAL: DEFAULT_DEVICE_FETCH_INTERVAL,
CONF_ENERGY_FETCH_INTERVAL: DEFAULT_ENERGY_FETCH_INTERVAL,
CONF_FORCE_ENABLE_NANOE: user_input.get(CONF_FORCE_ENABLE_NANOE, DEFAULT_FORCE_ENABLE_NANOE),
CONF_ENABLE_DAILY_ENERGY_SENSOR: user_input.get(CONF_ENABLE_DAILY_ENERGY_SENSOR, DEFAULT_ENABLE_DAILY_ENERGY_SENSOR),
CONF_USE_PANASONIC_PRESET_NAMES: user_input.get(CONF_USE_PANASONIC_PRESET_NAMES, DEFAULT_USE_PANASONIC_PRESET_NAMES),
CONF_DEVICE_FETCH_INTERVAL: user_input.get(CONF_DEVICE_FETCH_INTERVAL, DEFAULT_DEVICE_FETCH_INTERVAL),
CONF_ENERGY_FETCH_INTERVAL: user_input.get(CONF_ENERGY_FETCH_INTERVAL, DEFAULT_ENERGY_FETCH_INTERVAL),
})

async def _create_device(self, username, password):
async def _create_device(self, user_input):
"""Create device."""
try:
client = async_get_clientsession(self.hass)
api = ApiClient(username, password, client)
api = ApiClient(user_input[CONF_USERNAME], user_input[CONF_PASSWORD], client)
await api.start_session()
devices = api.get_devices()

Expand All @@ -82,7 +82,7 @@ async def _create_device(self, username, password):
_LOGGER.exception("Unexpected error creating device", e)
return self.async_abort(reason="device_fail")

return await self._create_entry(username, password)
return await self._create_entry(user_input)

async def async_step_user(self, user_input=None):
"""User initiated config flow."""
Expand Down Expand Up @@ -114,14 +114,14 @@ async def async_step_user(self, user_input=None):
): int,
})
)
return await self._create_device(user_input[CONF_USERNAME], user_input[CONF_PASSWORD])
return await self._create_device(user_input)

async def async_step_import(self, user_input):
"""Import a config entry."""
username = user_input.get(CONF_USERNAME)
if not username:
return await self.async_step_user()
return await self._create_device(username, user_input[CONF_PASSWORD])
return await self._create_device(user_input)

async def async_step_reconfigure(
self, entry_data: Mapping[str, Any]
Expand Down Expand Up @@ -186,10 +186,6 @@ async def async_step_reconfigure_confirm(
class PanasonicOptionsFlowHandler(config_entries.OptionsFlow):
"""Handle Panasonic options."""

def __init__(self, config_entry):
"""Initialize Panasonic options flow."""
self.config_entry = config_entry

async def async_step_init(
self, user_input: Optional[Dict[str, Any]] = None
) -> config_entries.ConfigFlowResult:
Expand Down
Loading