Improve diagnostic handling in HomeWizard Energy (#102935)

This commit is contained in:
Franck Nijhof 2023-10-27 23:27:17 +02:00 committed by GitHub
parent fd1c1dba7c
commit 8e112c04fb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 97 additions and 77 deletions

View File

@ -28,18 +28,23 @@ async def async_get_config_entry_diagnostics(
"""Return diagnostics for a config entry.""" """Return diagnostics for a config entry."""
coordinator: HWEnergyDeviceUpdateCoordinator = hass.data[DOMAIN][entry.entry_id] coordinator: HWEnergyDeviceUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]
meter_data = { state: dict[str, Any] | None = None
if coordinator.data.state:
state = asdict(coordinator.data.state)
system: dict[str, Any] | None = None
if coordinator.data.system:
system = asdict(coordinator.data.system)
return async_redact_data(
{
"entry": async_redact_data(entry.data, TO_REDACT),
"data": {
"device": asdict(coordinator.data.device), "device": asdict(coordinator.data.device),
"data": asdict(coordinator.data.data), "data": asdict(coordinator.data.data),
"state": asdict(coordinator.data.state) "state": state,
if coordinator.data.state is not None "system": system,
else None, },
"system": asdict(coordinator.data.system) },
if coordinator.data.system is not None TO_REDACT,
else None, )
}
return {
"entry": async_redact_data(entry.data, TO_REDACT),
"data": async_redact_data(meter_data, TO_REDACT),
}

View File

@ -0,0 +1,71 @@
# serializer version: 1
# name: test_diagnostics
dict({
'data': dict({
'data': dict({
'active_current_l1_a': -4,
'active_current_l2_a': 2,
'active_current_l3_a': 0,
'active_frequency_hz': 50,
'active_liter_lpm': 12.345,
'active_power_average_w': 123.0,
'active_power_l1_w': -123,
'active_power_l2_w': 456,
'active_power_l3_w': 123.456,
'active_power_w': -123,
'active_tariff': 2,
'active_voltage_l1_v': 230.111,
'active_voltage_l2_v': 230.222,
'active_voltage_l3_v': 230.333,
'any_power_fail_count': 4,
'external_devices': None,
'gas_timestamp': '2021-03-14T11:22:33',
'gas_unique_id': '**REDACTED**',
'long_power_fail_count': 5,
'meter_model': 'ISKRA 2M550T-101',
'monthly_power_peak_timestamp': '2023-01-01T08:00:10',
'monthly_power_peak_w': 1111.0,
'smr_version': 50,
'total_gas_m3': 1122.333,
'total_liter_m3': 1234.567,
'total_power_export_kwh': 13086.777,
'total_power_export_t1_kwh': 4321.333,
'total_power_export_t2_kwh': 8765.444,
'total_power_export_t3_kwh': None,
'total_power_export_t4_kwh': None,
'total_power_import_kwh': 13779.338,
'total_power_import_t1_kwh': 10830.511,
'total_power_import_t2_kwh': 2948.827,
'total_power_import_t3_kwh': None,
'total_power_import_t4_kwh': None,
'unique_meter_id': '**REDACTED**',
'voltage_sag_l1_count': 1,
'voltage_sag_l2_count': 2,
'voltage_sag_l3_count': 3,
'voltage_swell_l1_count': 4,
'voltage_swell_l2_count': 5,
'voltage_swell_l3_count': 6,
'wifi_ssid': '**REDACTED**',
'wifi_strength': 100,
}),
'device': dict({
'api_version': 'v1',
'firmware_version': '2.11',
'product_name': 'P1 Meter',
'product_type': 'HWE-SKT',
'serial': '**REDACTED**',
}),
'state': dict({
'brightness': 255,
'power_on': True,
'switch_lock': False,
}),
'system': dict({
'cloud_enabled': True,
}),
}),
'entry': dict({
'ip_address': '**REDACTED**',
}),
})
# ---

View File

@ -1,6 +1,7 @@
"""Tests for diagnostics data.""" """Tests for diagnostics data."""
from homeassistant.components.diagnostics import REDACTED from syrupy.assertion import SnapshotAssertion
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
@ -12,67 +13,10 @@ async def test_diagnostics(
hass: HomeAssistant, hass: HomeAssistant,
hass_client: ClientSessionGenerator, hass_client: ClientSessionGenerator,
init_integration: MockConfigEntry, init_integration: MockConfigEntry,
snapshot: SnapshotAssertion,
) -> None: ) -> None:
"""Test diagnostics.""" """Test diagnostics."""
assert await get_diagnostics_for_config_entry( assert (
hass, hass_client, init_integration await get_diagnostics_for_config_entry(hass, hass_client, init_integration)
) == { == snapshot
"entry": {"ip_address": REDACTED}, )
"data": {
"device": {
"product_name": "P1 Meter",
"product_type": "HWE-SKT",
"serial": REDACTED,
"api_version": "v1",
"firmware_version": "2.11",
},
"data": {
"wifi_ssid": REDACTED,
"wifi_strength": 100,
"smr_version": 50,
"meter_model": "ISKRA 2M550T-101",
"unique_meter_id": REDACTED,
"active_tariff": 2,
"total_power_import_kwh": 13779.338,
"total_power_import_t1_kwh": 10830.511,
"total_power_import_t2_kwh": 2948.827,
"total_power_import_t3_kwh": None,
"total_power_import_t4_kwh": None,
"total_power_export_kwh": 13086.777,
"total_power_export_t1_kwh": 4321.333,
"total_power_export_t2_kwh": 8765.444,
"total_power_export_t3_kwh": None,
"total_power_export_t4_kwh": None,
"active_power_w": -123,
"active_power_l1_w": -123,
"active_power_l2_w": 456,
"active_power_l3_w": 123.456,
"active_voltage_l1_v": 230.111,
"active_voltage_l2_v": 230.222,
"active_voltage_l3_v": 230.333,
"active_current_l1_a": -4,
"active_current_l2_a": 2,
"active_current_l3_a": 0,
"active_frequency_hz": 50,
"voltage_sag_l1_count": 1,
"voltage_sag_l2_count": 2,
"voltage_sag_l3_count": 3,
"voltage_swell_l1_count": 4,
"voltage_swell_l2_count": 5,
"voltage_swell_l3_count": 6,
"any_power_fail_count": 4,
"long_power_fail_count": 5,
"active_power_average_w": 123.0,
"monthly_power_peak_w": 1111.0,
"monthly_power_peak_timestamp": "2023-01-01T08:00:10",
"total_gas_m3": 1122.333,
"gas_timestamp": "2021-03-14T11:22:33",
"gas_unique_id": REDACTED,
"active_liter_lpm": 12.345,
"total_liter_m3": 1234.567,
"external_devices": None,
},
"state": {"power_on": True, "switch_lock": False, "brightness": 255},
"system": {"cloud_enabled": True},
},
}