Add diagnostics platform to airgradient (#126886)

pull/126782/head
Joost Lekkerkerker 2024-09-27 11:35:35 +02:00 committed by Franck Nijhof
parent 2749b1f057
commit ec66c7e534
No known key found for this signature in database
GPG Key ID: D62583BA8AB11CA3
3 changed files with 89 additions and 0 deletions

View File

@ -0,0 +1,18 @@
"""Diagnostics support for Airgradient."""
from __future__ import annotations
from dataclasses import asdict
from typing import Any
from homeassistant.core import HomeAssistant
from . import AirGradientConfigEntry
async def async_get_config_entry_diagnostics(
hass: HomeAssistant, entry: AirGradientConfigEntry
) -> dict[str, Any]:
"""Return diagnostics for a config entry."""
return asdict(entry.runtime_data.data)

View File

@ -0,0 +1,42 @@
# serializer version: 1
# name: test_diagnostics_polling_instance
dict({
'config': dict({
'co2_automatic_baseline_calibration_days': 8,
'configuration_control': 'local',
'country': 'DE',
'display_brightness': 0,
'led_bar_brightness': 100,
'led_bar_mode': 'co2',
'nox_learning_offset': 12,
'pm_standard': 'ugm3',
'post_data_to_airgradient': True,
'temperature_unit': 'c',
'tvoc_learning_offset': 12,
}),
'measures': dict({
'ambient_temperature': 22.17,
'boot_time': 28,
'compensated_ambient_temperature': 22.17,
'compensated_pm02': None,
'compensated_relative_humidity': 47.0,
'firmware_version': '3.1.1',
'model': 'I-9PSL',
'nitrogen_index': 1,
'pm003_count': 270,
'pm01': 22,
'pm02': 34,
'pm10': 41,
'raw_ambient_temperature': 27.96,
'raw_nitrogen': 16931,
'raw_pm02': 34,
'raw_relative_humidity': 48.0,
'raw_total_volatile_organic_component': 31792,
'rco2': 778,
'relative_humidity': 47.0,
'serial_number': '84fce612f5b8',
'signal_strength': -52,
'total_volatile_organic_component_index': 99,
}),
})
# ---

View File

@ -0,0 +1,29 @@
"""Tests for the diagnostics data provided by the AirGradient integration."""
from unittest.mock import AsyncMock
from syrupy 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_diagnostics_polling_instance(
hass: HomeAssistant,
hass_client: ClientSessionGenerator,
mock_airgradient_client: AsyncMock,
mock_config_entry: MockConfigEntry,
snapshot: SnapshotAssertion,
) -> None:
"""Test diagnostics."""
await setup_integration(hass, mock_config_entry)
assert (
await get_diagnostics_for_config_entry(hass, hass_client, mock_config_entry)
== snapshot
)