Add diagnostics feature to incomfort integration (#136009)
parent
04eb86e5a0
commit
5ffae140af
|
@ -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,
|
||||
}
|
|
@ -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,
|
||||
}),
|
||||
}),
|
||||
})
|
||||
# ---
|
|
@ -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…
Reference in New Issue