Add diagnostics to bsblan (#80957)

* 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>
This commit is contained in:
Willem-Jan van Rootselaar 2022-11-26 03:12:07 +01:00 committed by GitHub
parent 797dc51bc5
commit fb132f8a26
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 156 additions and 0 deletions

View file

@ -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(),
}

View file

@ -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
}
}
}

View file

@ -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
)