Add diagnostics platform to Smlight (#126423)
* Add diagnostics for Smlight * test diagnostics * Add log fixture and snapshot --------- Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>pull/126458/head
parent
90aa9aa98f
commit
f98b1d248a
|
@ -0,0 +1,25 @@
|
|||
"""Collect diagnostics for SMLIGHT devices."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Any
|
||||
|
||||
from pysmlight.const import Actions
|
||||
|
||||
from homeassistant.core import HomeAssistant
|
||||
|
||||
from . import SmConfigEntry
|
||||
|
||||
|
||||
async def async_get_config_entry_diagnostics(
|
||||
hass: HomeAssistant, config_entry: SmConfigEntry
|
||||
) -> dict[str, Any]:
|
||||
"""Return diagnostics for a config entry."""
|
||||
coordintator = config_entry.runtime_data.data
|
||||
info = await coordintator.client.get_info()
|
||||
log = await coordintator.client.get({"action": Actions.API_GET_LOG.value}) or "none"
|
||||
|
||||
return {
|
||||
"info": info.to_dict(),
|
||||
"log": log.split("\n"),
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
[04:28:51] setup | Starting firmware: v2.3.6\n[04:28:52] ConfigHelper | LittleFS mounted\n[04:28:52] ConfigHelper | load config\n[04:28:52] ConfigHelper | config open: Ok\n[04:28:52] setup | Config loaded\n[04:28:52] setup | Reboot reason: 3\n[04:28:52] setup | Coordinator mode: LAN\n[04:28:52] setup | Device type: SLZB-06P10\n[04:28:52] setup | Radio mode: \"ZB COORD\" Radio FW version: 20240716 Radio FW CH: PROD\n[04:28:52] Network | init\n[04:28:52] L_Y,L_B | status: 1\n[04:28:54] Network | EVENT_ETH_START\n[04:28:54] Network | EVENT_ETH_CONNECTED\n[04:28:54] Network | [MDNS] Started\n[04:28:54] Network | EVENT_ETH_GOT_IP\n[04:28:54] Network | ETH MAC: AA:BB:CC:DD:EE:FF IPv4: 192.168.0.11 GW: 192.168.0.1 Speed: 100Mbps DNS1: 192.168.0.1 DNS2: 0.0.0.0\n[04:28:54] Network | fireNetworkUp\n[04:28:54] taskZB | Waiting for zbChk\n[04:28:54] Web | Webserver started
|
|
@ -0,0 +1,27 @@
|
|||
# serializer version: 1
|
||||
# name: test_entry_diagnostics
|
||||
dict({
|
||||
'info': dict({
|
||||
'MAC': 'AA:BB:CC:DD:EE:FF',
|
||||
'coord_mode': 0,
|
||||
'device_ip': '192.168.1.161',
|
||||
'fs_total': 3456,
|
||||
'fw_channel': 'dev',
|
||||
'hostname': 'SLZB-06p7',
|
||||
'legacy_api': 0,
|
||||
'model': 'SLZB-06p7',
|
||||
'ram_total': 296,
|
||||
'sw_version': 'v2.3.6',
|
||||
'wifi_mode': 0,
|
||||
'zb_channel': 0,
|
||||
'zb_flash_size': 704,
|
||||
'zb_hw': 'CC2652P7',
|
||||
'zb_ram_size': 152,
|
||||
'zb_type': 0,
|
||||
'zb_version': '20240314',
|
||||
}),
|
||||
'log': list([
|
||||
'[04:28:51] setup | Starting firmware: v2.3.6\\n[04:28:52] ConfigHelper | LittleFS mounted\\n[04:28:52] ConfigHelper | load config\\n[04:28:52] ConfigHelper | config open: Ok\\n[04:28:52] setup | Config loaded\\n[04:28:52] setup | Reboot reason: 3\\n[04:28:52] setup | Coordinator mode: LAN\\n[04:28:52] setup | Device type: SLZB-06P10\\n[04:28:52] setup | Radio mode: \\"ZB COORD\\" Radio FW version: 20240716 Radio FW CH: PROD\\n[04:28:52] Network | init\\n[04:28:52] L_Y,L_B | status: 1\\n[04:28:54] Network | EVENT_ETH_START\\n[04:28:54] Network | EVENT_ETH_CONNECTED\\n[04:28:54] Network | [MDNS] Started\\n[04:28:54] Network | EVENT_ETH_GOT_IP\\n[04:28:54] Network | ETH MAC: AA:BB:CC:DD:EE:FF IPv4: 192.168.0.11 GW: 192.168.0.1 Speed: 100Mbps DNS1: 192.168.0.1 DNS2: 0.0.0.0\\n[04:28:54] Network | fireNetworkUp\\n[04:28:54] taskZB | Waiting for zbChk\\n[04:28:54] Web | Webserver started',
|
||||
]),
|
||||
})
|
||||
# ---
|
|
@ -0,0 +1,30 @@
|
|||
"""Test SMLIGHT diagnostics."""
|
||||
|
||||
from unittest.mock import MagicMock
|
||||
|
||||
from syrupy import SnapshotAssertion
|
||||
|
||||
from homeassistant.components.smlight.const import DOMAIN
|
||||
from homeassistant.core import HomeAssistant
|
||||
|
||||
from .conftest import setup_integration
|
||||
|
||||
from tests.common import MockConfigEntry, load_fixture
|
||||
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,
|
||||
mock_config_entry: MockConfigEntry,
|
||||
mock_smlight_client: MagicMock,
|
||||
snapshot: SnapshotAssertion,
|
||||
) -> None:
|
||||
"""Test config entry diagnostics."""
|
||||
mock_smlight_client.get.return_value = load_fixture("logs.txt", DOMAIN)
|
||||
entry = await setup_integration(hass, mock_config_entry)
|
||||
|
||||
result = await get_diagnostics_for_config_entry(hass, hass_client, entry)
|
||||
|
||||
assert result == snapshot
|
Loading…
Reference in New Issue