mirror of
https://github.com/home-assistant/core.git
synced 2025-07-22 20:57:21 +00:00
Add diagnostics feature to incomfort integration (#136009)
This commit is contained in:
parent
04eb86e5a0
commit
5ffae140af
45
homeassistant/components/incomfort/diagnostics.py
Normal file
45
homeassistant/components/incomfort/diagnostics.py
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
"""Diagnostics support for InComfort integration."""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
|
from homeassistant.components.diagnostics import async_redact_data
|
||||||
|
from homeassistant.const import CONF_PASSWORD
|
||||||
|
from homeassistant.core import HomeAssistant, callback
|
||||||
|
|
||||||
|
from . import InComfortConfigEntry
|
||||||
|
|
||||||
|
REDACT_CONFIG = {CONF_PASSWORD}
|
||||||
|
|
||||||
|
|
||||||
|
async def async_get_config_entry_diagnostics(
|
||||||
|
hass: HomeAssistant, entry: InComfortConfigEntry
|
||||||
|
) -> dict[str, Any]:
|
||||||
|
"""Return diagnostics for a config entry."""
|
||||||
|
return _async_get_diagnostics(hass, entry)
|
||||||
|
|
||||||
|
|
||||||
|
@callback
|
||||||
|
def _async_get_diagnostics(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
entry: InComfortConfigEntry,
|
||||||
|
) -> dict[str, Any]:
|
||||||
|
"""Return diagnostics for a config entry."""
|
||||||
|
redacted_config = async_redact_data(entry.data | entry.options, REDACT_CONFIG)
|
||||||
|
coordinator = entry.runtime_data
|
||||||
|
|
||||||
|
nr_heaters = len(coordinator.incomfort_data.heaters)
|
||||||
|
status: dict[str, Any] = {
|
||||||
|
f"heater_{n}": coordinator.incomfort_data.heaters[n].status
|
||||||
|
for n in range(nr_heaters)
|
||||||
|
}
|
||||||
|
for n in range(nr_heaters):
|
||||||
|
status[f"heater_{n}"]["rooms"] = {
|
||||||
|
n: dict(coordinator.incomfort_data.heaters[n].rooms[m].status)
|
||||||
|
for m in range(len(coordinator.incomfort_data.heaters[n].rooms))
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
"config": redacted_config,
|
||||||
|
"gateway": status,
|
||||||
|
}
|
35
tests/components/incomfort/snapshots/test_diagnostics.ambr
Normal file
35
tests/components/incomfort/snapshots/test_diagnostics.ambr
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
# serializer version: 1
|
||||||
|
# name: test_entry_diagnostics
|
||||||
|
dict({
|
||||||
|
'config': dict({
|
||||||
|
'host': '192.168.1.12',
|
||||||
|
'password': '**REDACTED**',
|
||||||
|
'username': 'admin',
|
||||||
|
}),
|
||||||
|
'gateway': dict({
|
||||||
|
'heater_0': dict({
|
||||||
|
'display_code': 126,
|
||||||
|
'display_text': 'standby',
|
||||||
|
'fault_code': None,
|
||||||
|
'heater_temp': 35.34,
|
||||||
|
'is_burning': False,
|
||||||
|
'is_failed': False,
|
||||||
|
'is_pumping': False,
|
||||||
|
'is_tapping': False,
|
||||||
|
'nodenr': 249,
|
||||||
|
'pressure': 1.86,
|
||||||
|
'rf_message_rssi': 30,
|
||||||
|
'rfstatus_cntr': 0,
|
||||||
|
'rooms': dict({
|
||||||
|
'0': dict({
|
||||||
|
'override': 18.0,
|
||||||
|
'room_temp': 21.42,
|
||||||
|
'setpoint': 18.0,
|
||||||
|
}),
|
||||||
|
}),
|
||||||
|
'serial_no': 'c0ffeec0ffee',
|
||||||
|
'tap_temp': 30.21,
|
||||||
|
}),
|
||||||
|
}),
|
||||||
|
})
|
||||||
|
# ---
|
24
tests/components/incomfort/test_diagnostics.py
Normal file
24
tests/components/incomfort/test_diagnostics.py
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
"""Test diagnostics for the Intergas InComfort integration."""
|
||||||
|
|
||||||
|
from unittest.mock import MagicMock
|
||||||
|
|
||||||
|
from homeassistant.core import HomeAssistant
|
||||||
|
|
||||||
|
from tests.common import MockConfigEntry, SnapshotAssertion
|
||||||
|
from tests.components.diagnostics import get_diagnostics_for_config_entry
|
||||||
|
from tests.typing import ClientSessionGenerator
|
||||||
|
|
||||||
|
|
||||||
|
async def test_entry_diagnostics(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
hass_client: ClientSessionGenerator,
|
||||||
|
snapshot: SnapshotAssertion,
|
||||||
|
mock_incomfort: MagicMock,
|
||||||
|
mock_config_entry: MockConfigEntry,
|
||||||
|
) -> None:
|
||||||
|
"""Test the incomfort integration diagnostics."""
|
||||||
|
await hass.config_entries.async_setup(mock_config_entry.entry_id)
|
||||||
|
|
||||||
|
snapshot.assert_match(
|
||||||
|
await get_diagnostics_for_config_entry(hass, hass_client, mock_config_entry)
|
||||||
|
)
|
Loading…
x
Reference in New Issue
Block a user