diff --git a/homeassistant/components/pvoutput/diagnostics.py b/homeassistant/components/pvoutput/diagnostics.py new file mode 100644 index 00000000000..2aff3b20442 --- /dev/null +++ b/homeassistant/components/pvoutput/diagnostics.py @@ -0,0 +1,21 @@ +"""Diagnostics support for PVOutput.""" +from __future__ import annotations + +import json +from typing import Any + +from homeassistant.config_entries import ConfigEntry +from homeassistant.core import HomeAssistant + +from .const import DOMAIN +from .coordinator import PVOutputDataUpdateCoordinator + + +async def async_get_config_entry_diagnostics( + hass: HomeAssistant, entry: ConfigEntry +) -> dict[str, Any]: + """Return diagnostics for a config entry.""" + coordinator: PVOutputDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id] + # Round-trip via JSON to trigger serialization + data: dict[str, Any] = json.loads(coordinator.data.json()) + return data diff --git a/tests/components/pvoutput/test_diagnostics.py b/tests/components/pvoutput/test_diagnostics.py new file mode 100644 index 00000000000..529e9b4e575 --- /dev/null +++ b/tests/components/pvoutput/test_diagnostics.py @@ -0,0 +1,28 @@ +"""Tests for the diagnostics data provided by the PVOutput integration.""" +from aiohttp import ClientSession + +from homeassistant.core import HomeAssistant + +from tests.common import MockConfigEntry +from tests.components.diagnostics import get_diagnostics_for_config_entry + + +async def test_diagnostics( + hass: HomeAssistant, + hass_client: ClientSession, + init_integration: MockConfigEntry, +): + """Test diagnostics.""" + assert await get_diagnostics_for_config_entry( + hass, hass_client, init_integration + ) == { + "energy_consumption": 1000, + "energy_generation": 500, + "normalized_output": 0.5, + "power_consumption": 2500, + "power_generation": 1500, + "reported_date": "2021-12-29", + "reported_time": "22:37:00", + "temperature": 20.2, + "voltage": 220.5, + }