Add diagnostics for CentriConnect (#175046)

This commit is contained in:
Greg Haines
2026-06-30 08:36:10 +02:00
committed by GitHub
parent cf1e0f0aa5
commit feadcc057d
4 changed files with 87 additions and 1 deletions
@@ -0,0 +1,26 @@
"""Diagnostics platform for CentriConnect/MyPropane API integration."""
from typing import Any
from homeassistant.components.diagnostics import async_redact_data
from homeassistant.core import HomeAssistant
from . import CentriConnectConfigEntry
TO_REDACT = {"Latitude", "Longitude", "Altitude"}
async def async_get_config_entry_diagnostics(
hass: HomeAssistant, entry: CentriConnectConfigEntry
) -> dict[str, Any]:
"""Return diagnostics for the provided config entry."""
coord = entry.runtime_data
return {
"device_info": {
"device_id": coord.device_info.device_id,
"device_name": coord.device_info.device_name,
"hardware_version": coord.device_info.hardware_version,
"lte_version": coord.device_info.lte_version,
},
"tank_data": async_redact_data(coord.data.raw_data, TO_REDACT),
}
@@ -47,7 +47,7 @@ rules:
# Gold
devices: done
diagnostics: todo
diagnostics: done
discovery:
status: exempt
comment: This is a cloud polling integration with no local discovery mechanism.
@@ -0,0 +1,31 @@
# serializer version: 1
# name: test_entry_diagnostics
dict({
'device_info': dict({
'device_id': '123a4b5c-678d-9e0f-a123-4b567c8d901e',
'device_name': 'My Tank',
'hardware_version': '4.1',
'lte_version': '1.1.2',
}),
'tank_data': dict({
'AlertStatus': 'No Alert',
'Altitude': '**REDACTED**',
'BatteryVolts': 4.19,
'DeviceID': '123a4b5c-678d-9e0f-a123-4b567c8d901e',
'DeviceName': 'My Tank',
'DeviceTempCelsius': 17.0,
'DeviceTempFahrenheit': 63.0,
'LastPostTimeIso': '2026-02-27 22:00:31.000',
'Latitude': '**REDACTED**',
'Longitude': '**REDACTED**',
'NextPostTimeIso': '2026-02-28 10:00:00.000',
'SignalQualLTE': -107.0,
'SolarVolts': 2.46,
'TankLevel': 75.0,
'TankSize': 1000,
'TankSizeUnit': 'Gallons',
'VersionHW': '4.1',
'VersionLTE': '1.1.2',
}),
})
# ---
@@ -0,0 +1,29 @@
"""Tests for the diagnostics data provided by the CentriConnect/MyPropane integration."""
from unittest.mock import AsyncMock
from syrupy.assertion import SnapshotAssertion
from homeassistant.core import HomeAssistant
from . import setup_integration
from tests.common import MockConfigEntry
from tests.components.diagnostics import get_diagnostics_for_config_entry
from tests.typing import ClientSessionGenerator
async def test_entry_diagnostics(
hass: HomeAssistant,
mock_config_entry: MockConfigEntry,
mock_centriconnect_client: AsyncMock,
hass_client: ClientSessionGenerator,
snapshot: SnapshotAssertion,
) -> None:
"""Test config entry diagnostics."""
await setup_integration(hass, mock_config_entry)
result = await get_diagnostics_for_config_entry(
hass, hass_client, mock_config_entry
)
assert result == snapshot