chore: initial baseline before refactoring
Initial snapshot of Home Assistant config (HAOS 2026.4.4)
prior to dashboard restructuring and helper YAML migration.
Pre-commit cleanup applied:
- Removed blueprints/switch_manager/ (9.4 MB stale, component already gone)
- Removed .storage/switch_manager
- Removed home-assistant.log.{1,old,fault}
- Removed zigbee2mqtt/configuration_backup_v{1..4}.yaml
- Removed zigbee2mqtt/database.db.tmp.2024-09-27 (1.5y old)
- Created empty themes/ to satisfy configuration.yaml include
.gitignore uses allowlist strategy for .storage/ to keep
all tokens, keys, and PINs out of version control.
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
"""__init__.py: The PowerOcean integration."""
|
||||
from __future__ import annotations
|
||||
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers import device_registry as dr
|
||||
|
||||
from .const import DOMAIN, PLATFORMS, _LOGGER, DOMAIN, ISSUE_URL_ERROR_MESSAGE, STARTUP_MESSAGE
|
||||
from .ecoflow import Ecoflow
|
||||
|
||||
|
||||
_LOGGER.info(STARTUP_MESSAGE)
|
||||
|
||||
|
||||
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
||||
"""Set up PowerOcean from a config entry."""
|
||||
|
||||
# Setup DOMAIN as default
|
||||
hass.data.setdefault(DOMAIN, {})
|
||||
|
||||
# Setup device specific sensor list (used in updates) on HASS so it is available within integration (reuqired for unload)
|
||||
hass.data[DOMAIN]["device_specific_sensors"] = {}
|
||||
|
||||
# Store an instance of the API instance in hass.data[domain]
|
||||
user_input = entry.data["user_input"] # This user_input object was stored after the device
|
||||
# was setup and has the user/pass/serial info
|
||||
device_info = entry.data.get("device_info") # This device_info object was stored after the device
|
||||
# was setup and has the name and serial needed etc.
|
||||
options = entry.data["options"] # These are the options during setup, including custom device name
|
||||
ecoflow = Ecoflow(user_input["serialnumber"], user_input["username"], user_input["password"])
|
||||
|
||||
if device_info:
|
||||
ecoflow.device = device_info # Store the device information
|
||||
ecoflow.options = options # Store the options
|
||||
hass.data[DOMAIN][entry.entry_id] = ecoflow
|
||||
|
||||
# Forward to sensor platform
|
||||
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
|
||||
|
||||
# Get the device registry
|
||||
device_registry = dr.async_get(hass)
|
||||
|
||||
# Fetching device info from device registry
|
||||
# During the config flow, the device info is saved in the entry's data under 'device_info' key.
|
||||
device_info = entry.data.get("device_info")
|
||||
|
||||
# If the device_info was provided, register the device
|
||||
if device_info:
|
||||
device_registry.async_get_or_create(
|
||||
config_entry_id=entry.entry_id,
|
||||
identifiers={(DOMAIN, device_info["serial"])},
|
||||
manufacturer=device_info.get("vendor", "ECOFLOW"),
|
||||
serial_number=device_info.get("serial"),
|
||||
name=options.get("custom_device_name"), # Custom device name from user step 2 (options)
|
||||
model=device_info.get("product"),
|
||||
sw_version=device_info.get("version"),
|
||||
configuration_url="https://api-e.ecoflow.com",
|
||||
suggested_area="Boiler Room",
|
||||
)
|
||||
|
||||
return True
|
||||
|
||||
|
||||
async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
||||
"""Unload a config entry."""
|
||||
# Unload all platforms associated with this entry
|
||||
unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
|
||||
|
||||
if unload_ok:
|
||||
# Clean up hass.data if any reference exists
|
||||
hass.data[DOMAIN].pop(entry.entry_id, None)
|
||||
|
||||
# Additionally, clear the device-specific sensors list if it exists
|
||||
device_id = entry.data.get("device_info").get("serial")
|
||||
device_name = entry.data.get("options").get("custom_device_name")
|
||||
if device_id in hass.data.get(DOMAIN, {}).get("device_specific_sensors", {}):
|
||||
hass.data[DOMAIN]["device_specific_sensors"].pop(device_id, None)
|
||||
_LOGGER.debug(
|
||||
f"{device_id}: Cleared sensor update list for device with custom name '{device_name}'"
|
||||
)
|
||||
|
||||
return unload_ok
|
||||
|
||||
|
||||
async def update_listener(hass: HomeAssistant, entry: ConfigEntry) -> None:
|
||||
await hass.config_entries.async_reload(entry.entry_id)
|
||||
Reference in New Issue
Block a user