diff --git a/.github/workflows/precommit.yaml b/.github/workflows/precommit.yaml index 3131084..1080d36 100644 --- a/.github/workflows/precommit.yaml +++ b/.github/workflows/precommit.yaml @@ -9,7 +9,7 @@ on: jobs: precommit: - runs-on: "ubuntu-latest" + runs-on: "ubuntu-slim" name: Pre-commit steps: - name: Check out the repository diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index beebe03..04e6b49 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -9,7 +9,7 @@ on: jobs: tests: - runs-on: "ubuntu-latest" + runs-on: "ubuntu-slim" name: Run tests strategy: fail-fast: false diff --git a/custom_components/daikin_onecta/diagnostics.py b/custom_components/daikin_onecta/diagnostics.py index d1fb8c9..9a8c7c1 100644 --- a/custom_components/daikin_onecta/diagnostics.py +++ b/custom_components/daikin_onecta/diagnostics.py @@ -3,6 +3,7 @@ from typing import Any +from homeassistant.components.diagnostics import async_redact_data from homeassistant.config_entries import ConfigEntry from homeassistant.core import HomeAssistant from homeassistant.helpers import entity_registry as er @@ -10,9 +11,10 @@ from .coordinator import OnectaRuntimeData +REDACT_KEYS = {"serialNumber", "macAddress"} -async def async_get_config_entry_diagnostics(hass: HomeAssistant, config_entry: ConfigEntry) -> dict[str, Any]: - """Return diagnostics for a config entry.""" + +def get_entities(hass: HomeAssistant, config_entry: ConfigEntry): entity_registry = er.async_get(hass) entities_data: dict[str, dict[str, Any]] = {} @@ -31,18 +33,23 @@ async def async_get_config_entry_diagnostics(hass: HomeAssistant, config_entry: if state: entity_info["state"] = state.state - entity_info["attributes"] = dict(state.attributes) + entity_info["attributes"] = async_redact_data(dict(state.attributes), REDACT_KEYS) entities_data[entity_id] = entity_info + return entities_data + + +async def async_get_config_entry_diagnostics(hass: HomeAssistant, config_entry: ConfigEntry) -> dict[str, Any]: + """Return diagnostics for a config entry.""" onecta_data: OnectaRuntimeData = config_entry.runtime_data daikin_api = onecta_data.daikin_api return { - "json_data": daikin_api.json_data, + "json_data": async_redact_data(daikin_api.json_data, REDACT_KEYS), "rate_limits": daikin_api.rate_limits, "options": config_entry.options, "oauth2_token_valid": daikin_api.session.valid_token, - "entities": entities_data, + "entities": get_entities(hass, config_entry), } @@ -54,8 +61,9 @@ async def async_get_device_diagnostics(hass: HomeAssistant, config_entry: Config daikin_api = onecta_data.daikin_api daikin_device = onecta_data.devices.get(dev_id) if daikin_device is not None: - data["device_json_data"] = daikin_device.daikin_data + data["device_json_data"] = async_redact_data(daikin_device.daikin_data, REDACT_KEYS) data["rate_limits"] = daikin_api.rate_limits data["options"] = config_entry.options data["oauth2_token_valid"] = daikin_api.session.valid_token + data["entities"] = get_entities(hass, config_entry) return data