Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add diagnostics to bsblan #80957

Merged
merged 5 commits into from Nov 26, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
22 changes: 22 additions & 0 deletions homeassistant/components/bsblan/diagnostics.py
@@ -0,0 +1,22 @@
"""Diagnostics support for BSBLan."""
from __future__ import annotations

from typing import Any

from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant

from . import HomeAssistantBSBLANData
from .const import DOMAIN


async def async_get_config_entry_diagnostics(
hass: HomeAssistant, entry: ConfigEntry
) -> dict[str, Any]:
"""Return diagnostics for a config entry."""
data: HomeAssistantBSBLANData = hass.data[DOMAIN][entry.entry_id]
return {
"info": data.info.dict(),
"device": data.device.dict(),
"state": data.coordinator.data.dict(),
}
110 changes: 110 additions & 0 deletions tests/components/bsblan/fixtures/diagnostics.json
@@ -0,0 +1,110 @@
{
"info": {
"device_identification": {
"name": "Gerte-Identifikation",
"unit": "",
"desc": "",
"value": "RVS21.831F/127",
"dataType": 7
},
"controller_family": {
"name": "Device family",
"unit": "",
"desc": "",
"value": "211",
"dataType": 0
},
"controller_variant": {
"name": "Device variant",
"unit": "",
"desc": "",
"value": "127",
"dataType": 0
}
},
"device": {
"name": "BSB-LAN",
"version": "1.0.38-20200730234859",
"MAC": "00:80:41:19:69:90",
"uptime": 969402857
},
"state": {
"hvac_mode": {
"name": "Operating mode",
"unit": "",
"desc": "Komfort",
"value": "heat",
"dataType": 1
},
"hvac_mode2": {
"name": "Operating mode",
"unit": "",
"desc": "Reduziert",
"value": "2",
"dataType": 1
},
"target_temperature": {
"name": "Room temperature Comfort setpoint",
"unit": "°C",
"desc": "",
"value": "18.5",
"dataType": 0
},
"target_temperature_high": {
"name": "Komfortsollwert Maximum",
"unit": "°C",
"desc": "",
"value": "23.0",
"dataType": 0
},
"target_temperature_low": {
"name": "Room temp reduced setpoint",
"unit": "°C",
"desc": "",
"value": "17.0",
"dataType": 0
},
"min_temp": {
"name": "Room temp frost protection setpoint",
"unit": "°C",
"desc": "",
"value": "8.0",
"dataType": 0
},
"max_temp": {
"name": "Summer/winter changeover temp heat circuit 1",
"unit": "°C",
"desc": "",
"value": "20.0",
"dataType": 0
},
"hvac_action": {
"name": "Status heating circuit 1",
"unit": "",
"desc": "Raumtemp\u2019begrenzung",
"value": "122",
"dataType": 1
},
"current_temperature": {
"name": "Room temp 1 actual value",
"unit": "°C",
"desc": "",
"value": "18.6",
"dataType": 0
},
"room1_thermostat_mode": {
"name": "Raumthermostat 1",
"unit": "",
"desc": "Kein Bedarf",
"value": "0",
"dataType": 1
},
"outside_temperature": {
"name": "Outside temp sensor local",
"unit": "°C",
"desc": "",
"value": "6.1",
"dataType": 0
}
}
}
24 changes: 24 additions & 0 deletions tests/components/bsblan/test_diagnostics.py
@@ -0,0 +1,24 @@
"""Tests for the diagnostics data provided by the BSBLan integration."""
import json

from aiohttp import ClientSession

from homeassistant.core import HomeAssistant

from tests.common import MockConfigEntry, load_fixture
from tests.components.diagnostics import get_diagnostics_for_config_entry


async def test_diagnostics(
hass: HomeAssistant,
hass_client: ClientSession,
init_integration: MockConfigEntry,
):
"""Test diagnostics."""

diagnostics_fixture = json.loads(load_fixture("bsblan/diagnostics.json"))

assert (
await get_diagnostics_for_config_entry(hass, hass_client, init_integration)
== diagnostics_fixture
)