Skip to content

Commit

Permalink
Added diagnostics support
Browse files Browse the repository at this point in the history
  • Loading branch information
kukulich committed Feb 3, 2022
1 parent 6ef56c5 commit cec458b
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 8 deletions.
41 changes: 41 additions & 0 deletions custom_components/jablotron100/diagnostics.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
from __future__ import annotations

from homeassistant.components.diagnostics import async_redact_data
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_PASSWORD
from homeassistant.core import HomeAssistant
from .const import CONF_DEVICES, DOMAIN, DATA_JABLOTRON
from .jablotron import Jablotron

async def async_get_config_entry_diagnostics(
hass: HomeAssistant, config_entry: ConfigEntry
) -> dict:
jablotron_instance: Jablotron = hass.data[DOMAIN][config_entry.entry_id][DATA_JABLOTRON]

configuration = async_redact_data(config_entry.data, CONF_PASSWORD)
del configuration[CONF_DEVICES]

central_unit = jablotron_instance.central_unit()

devices = []
device_number = 1
for device_type in config_entry.data[CONF_DEVICES]:
devices.append({
"number": device_number,
"type": device_type,
"wireless": jablotron_instance.is_wireless_device(device_number),
"battery": jablotron_instance.is_device_with_battery(device_number),
})

device_number += 1

return {
"central_unit": {
"model": central_unit.model,
"firmware_version": central_unit.firmware_version,
"hardware_version": central_unit.hardware_version,
},
"configuration": configuration,
"options": {key:value for key, value in config_entry.options.items()},
"devices": devices,
}
16 changes: 8 additions & 8 deletions custom_components/jablotron100/jablotron.py
Original file line number Diff line number Diff line change
Expand Up @@ -768,15 +768,15 @@ def _create_devices(self) -> None:
STATE_OFF,
))

if self._is_wireless_device(device_number):
if self.is_wireless_device(device_number):
self._device_signal_strength_sensors.append(self._create_device_sensor(
hass_device,
self._get_device_signal_strength_sensor_id(device_number),
self._get_device_signal_strength_sensor_name(device_number),
self._devices_data[device_id][DEVICE_DATA_SIGNAL_STRENGTH],
))

if self._is_device_with_battery(device_number):
if self.is_device_with_battery(device_number):
self._device_battery_level_sensors.append(self._create_device_sensor(
hass_device,
self._get_device_battery_level_sensor_id(device_number),
Expand Down Expand Up @@ -992,7 +992,7 @@ def _keepalive(self):
packets.append(self.create_packet_command(JABLOTRON_COMMAND_GET_DEVICE_INFO, self.int_to_bytes(gsm_device_number)))

for device_number in self._get_numbers_of_not_ignored_devices():
if self._is_wireless_device(device_number):
if self.is_wireless_device(device_number):
packets.append(self.create_packet_command(JABLOTRON_COMMAND_GET_DEVICE_INFO, self.int_to_bytes(device_number)))

if len(packets) > 0:
Expand Down Expand Up @@ -1075,15 +1075,15 @@ def _is_device_ignored(self, number: int) -> bool:
DEVICE_EMPTY,
)

def _is_wireless_device(self, number: int) -> bool:
def is_wireless_device(self, number: int) -> bool:
device_id = self._get_device_id(number)

if device_id not in self._devices_data:
return False

return self._devices_data[device_id][DEVICE_DATA_CONNECTION] == DEVICE_CONNECTION_WIRELESS

def _is_device_with_battery(self, number: int) -> bool:
def is_device_with_battery(self, number: int) -> bool:
if number == DEVICE_CENTRAL_UNIT_NUMBER:
return True

Expand Down Expand Up @@ -1240,7 +1240,7 @@ def _parse_device_state_packet(self, packet: bytes) -> None:
else:
LOGGER.error("Unknown state packet of device {}: {}".format(device_number, self.format_packet_to_string(packet)))

if self._is_wireless_device(device_number):
if self.is_wireless_device(device_number):
device_signal_strength = self.bytes_to_int(packet[10:11]) * JABLOTRON_SIGNAL_STRENGTH_STEP
self._update_state(
self._get_device_signal_strength_sensor_id(device_number),
Expand Down Expand Up @@ -1277,7 +1277,7 @@ def _parse_device_secondary_state_packet(self, packet: bytes) -> None:
elif device_type == DEVICE_ELECTRICITY_METER_WITH_PULSE_OUTPUT:
self._parse_device_electricity_meter_with_pulse_secondary_state_packet(packet, device_number)

if self._is_device_with_battery(device_number):
if self.is_device_with_battery(device_number):
self._update_state(
self._get_device_battery_level_sensor_id(device_number),
self._parse_device_battery_level_from_device_secondary_state_packet(packet),
Expand Down Expand Up @@ -1529,7 +1529,7 @@ def _create_device_hass_device(self, device_number: int) -> JablotronHassDevice:
device_type = self._get_device_type(device_number)

battery_level: int | None = None
if self._is_device_with_battery(device_number):
if self.is_device_with_battery(device_number):
battery_level = self._devices_data[device_id][DEVICE_DATA_BATTERY_LEVEL]

return JablotronHassDevice(
Expand Down

0 comments on commit cec458b

Please sign in to comment.