From 103fe9e0ba4d5b602f6173a88055e347303715be Mon Sep 17 00:00:00 2001 From: Duco Sebel <74970928+DCSBL@users.noreply.github.com> Date: Tue, 1 Feb 2022 01:08:58 +0100 Subject: [PATCH] Add HomeWizard diagnostics (#65297) Co-authored-by: Paulus Schoutsen --- .coveragerc | 1 + .../components/homewizard/diagnostics.py | 34 +++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 homeassistant/components/homewizard/diagnostics.py diff --git a/.coveragerc b/.coveragerc index 049e6a37904..01906614e15 100644 --- a/.coveragerc +++ b/.coveragerc @@ -464,6 +464,7 @@ omit = homeassistant/components/homematic/* homeassistant/components/home_plus_control/api.py homeassistant/components/home_plus_control/switch.py + homeassistant/components/homewizard/diagnostics.py homeassistant/components/homeworks/* homeassistant/components/honeywell/__init__.py homeassistant/components/honeywell/climate.py diff --git a/homeassistant/components/homewizard/diagnostics.py b/homeassistant/components/homewizard/diagnostics.py new file mode 100644 index 00000000000..3dd55933291 --- /dev/null +++ b/homeassistant/components/homewizard/diagnostics.py @@ -0,0 +1,34 @@ +"""Diagnostics support for P1 Monitor.""" +from __future__ import annotations + +from typing import Any + +from homeassistant.components.diagnostics import async_redact_data +from homeassistant.config_entries import ConfigEntry +from homeassistant.const import CONF_IP_ADDRESS +from homeassistant.core import HomeAssistant + +from .const import DOMAIN +from .coordinator import HWEnergyDeviceUpdateCoordinator + +TO_REDACT = {CONF_IP_ADDRESS, "serial", "wifi_ssid"} + + +async def async_get_config_entry_diagnostics( + hass: HomeAssistant, entry: ConfigEntry +) -> dict[str, Any]: + """Return diagnostics for a config entry.""" + coordinator: HWEnergyDeviceUpdateCoordinator = hass.data[DOMAIN][entry.entry_id] + + meter_data = { + "device": coordinator.api.device.todict(), + "data": coordinator.api.data.todict(), + "state": coordinator.api.state.todict() + if coordinator.api.state is not None + else None, + } + + return { + "entry": async_redact_data(entry.data, TO_REDACT), + "data": async_redact_data(meter_data, TO_REDACT), + }