Refactor config_flow, add support for Ecowitt configuration
parent
6edaec73d8
commit
e34f73a467
|
|
@ -13,6 +13,8 @@ from .const import (
|
|||
API_KEY,
|
||||
DEV_DBG,
|
||||
DOMAIN,
|
||||
ECOWITT,
|
||||
ECOWITT_WEBHOOK_ID,
|
||||
INVALID_CREDENTIALS,
|
||||
POCASI_CZ_API_ID,
|
||||
POCASI_CZ_API_KEY,
|
||||
|
|
@ -51,6 +53,8 @@ class ConfigOptionsFlowHandler(OptionsFlow):
|
|||
self.migrate_schema = {}
|
||||
self.pocasi_cz: dict[str, Any] = {}
|
||||
self.pocasi_cz_schema = {}
|
||||
self.ecowitt: dict[str, Any] = {}
|
||||
self.ecowitt_schema = {}
|
||||
|
||||
@property
|
||||
def config_entry(self):
|
||||
|
|
@ -133,10 +137,14 @@ class ConfigOptionsFlowHandler(OptionsFlow):
|
|||
): bool,
|
||||
}
|
||||
|
||||
self.ecowitt = {
|
||||
ECOWITT_WEBHOOK_ID: self.config_entry.options.get(ECOWITT_WEBHOOK_ID, "")
|
||||
}
|
||||
|
||||
async def async_step_init(self, user_input=None):
|
||||
"""Manage the options - show menu first."""
|
||||
return self.async_show_menu(
|
||||
step_id="init", menu_options=["basic", "windy", "pocasi"]
|
||||
step_id="init", menu_options=["basic", "ecowitt", "windy", "pocasi"]
|
||||
)
|
||||
|
||||
async def async_step_basic(self, user_input=None):
|
||||
|
|
@ -159,14 +167,7 @@ class ConfigOptionsFlowHandler(OptionsFlow):
|
|||
elif user_input[API_KEY] == user_input[API_ID]:
|
||||
errors["base"] = "valid_credentials_match"
|
||||
else:
|
||||
# retain windy data
|
||||
user_input.update(self.windy_data)
|
||||
|
||||
# retain sensors
|
||||
user_input.update(self.sensors)
|
||||
|
||||
# retain pocasi data
|
||||
user_input.update(self.pocasi_cz)
|
||||
self.retain_data(user_input)
|
||||
|
||||
return self.async_create_entry(title=DOMAIN, data=user_input)
|
||||
|
||||
|
|
@ -200,15 +201,7 @@ class ConfigOptionsFlowHandler(OptionsFlow):
|
|||
errors=errors,
|
||||
)
|
||||
|
||||
# retain user_data
|
||||
user_input.update(self.user_data)
|
||||
|
||||
# retain senors
|
||||
user_input.update(self.sensors)
|
||||
|
||||
# retain pocasi cz
|
||||
|
||||
user_input.update(self.pocasi_cz)
|
||||
self.retain_data(user_input)
|
||||
|
||||
return self.async_create_entry(title=DOMAIN, data=user_input)
|
||||
|
||||
|
|
@ -241,17 +234,23 @@ class ConfigOptionsFlowHandler(OptionsFlow):
|
|||
data_schema=vol.Schema(self.pocasi_cz_schema),
|
||||
errors=errors,
|
||||
)
|
||||
# retain user data
|
||||
user_input.update(self.user_data)
|
||||
|
||||
# retain senors
|
||||
user_input.update(self.sensors)
|
||||
|
||||
# retain windy
|
||||
user_input.update(self.windy_data)
|
||||
user_input = self.retain_data(user_input)
|
||||
|
||||
return self.async_create_entry(title=DOMAIN, data=user_input)
|
||||
|
||||
def retain_data(self, data: dict[str, Any]) -> dict[str, Any]:
|
||||
"""Retain user_data."""
|
||||
|
||||
return {
|
||||
**self.user_data,
|
||||
**self.windy_data,
|
||||
**self.pocasi_cz,
|
||||
**self.sensors,
|
||||
**self.ecowitt,
|
||||
**dict(data),
|
||||
}
|
||||
|
||||
|
||||
class ConfigFlowHandler(ConfigFlow, domain=DOMAIN):
|
||||
"""Handle a config flow for Sencor SWS 12500 Weather Station."""
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ DATABASE_PATH = "/config/home-assistant_v2.db"
|
|||
POCASI_CZ_URL: Final = "http://ms.pocasimeteo.cz"
|
||||
POCASI_CZ_SEND_MINIMUM: Final = 12 # minimal time to resend data
|
||||
|
||||
|
||||
ICON = "mdi:weather"
|
||||
|
||||
API_KEY = "API_KEY"
|
||||
|
|
@ -23,6 +24,9 @@ SENSOR_TO_MIGRATE: Final = "sensor_to_migrate"
|
|||
DEV_DBG: Final = "dev_debug_checkbox"
|
||||
WSLINK: Final = "wslink"
|
||||
|
||||
ECOWITT: Final = "ecowitt"
|
||||
ECOWITT_WEBHOOK_ID: Final = "ecowitt_webhook_id"
|
||||
|
||||
POCASI_CZ_API_KEY = "POCASI_CZ_API_KEY"
|
||||
POCASI_CZ_API_ID = "POCASI_CZ_API_ID"
|
||||
POCASI_CZ_SEND_INTERVAL = "POCASI_SEND_INTERVAL"
|
||||
|
|
|
|||
Loading…
Reference in New Issue