Skip to content

Commit

Permalink
Add diagnostics to bsblan (#80957)
Browse files Browse the repository at this point in the history
* add diagnostics to bsblan

* add device info

check firmware.

* add test for diagnostics

* Update tests/components/bsblan/test_diagnostics.py

Co-authored-by: Aarni Koskela <akx@iki.fi>

* add fixture for diagnostics test

Co-authored-by: Aarni Koskela <akx@iki.fi>
  • Loading branch information
liudger and akx committed Nov 26, 2022
1 parent 797dc51 commit fb132f8
Show file tree
Hide file tree
Showing 3 changed files with 156 additions and 0 deletions.
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": "&deg;C",
"desc": "",
"value": "18.5",
"dataType": 0
},
"target_temperature_high": {
"name": "Komfortsollwert Maximum",
"unit": "&deg;C",
"desc": "",
"value": "23.0",
"dataType": 0
},
"target_temperature_low": {
"name": "Room temp reduced setpoint",
"unit": "&deg;C",
"desc": "",
"value": "17.0",
"dataType": 0
},
"min_temp": {
"name": "Room temp frost protection setpoint",
"unit": "&deg;C",
"desc": "",
"value": "8.0",
"dataType": 0
},
"max_temp": {
"name": "Summer/winter changeover temp heat circuit 1",
"unit": "&deg;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": "&deg;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": "&deg;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
)

0 comments on commit fb132f8

Please sign in to comment.