mirror of
https://github.com/home-assistant/core.git
synced 2025-07-25 14:17:45 +00:00
Add KNX source address to Sensor and BinarySensor (#48857)
* Add source address to Sensor and BinarySensor * Fix typing * Review: Always use UTC time in state attributes * Review: Add missing UTC conversion in sensor
This commit is contained in:
parent
676af205e4
commit
21744790d3
@ -9,8 +9,9 @@ from homeassistant.components.binary_sensor import DEVICE_CLASSES, BinarySensorE
|
|||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers.entity import Entity
|
from homeassistant.helpers.entity import Entity
|
||||||
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
|
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
|
||||||
|
from homeassistant.util import dt
|
||||||
|
|
||||||
from .const import ATTR_COUNTER, DOMAIN
|
from .const import ATTR_COUNTER, ATTR_LAST_KNX_UPDATE, ATTR_SOURCE, DOMAIN
|
||||||
from .knx_entity import KnxEntity
|
from .knx_entity import KnxEntity
|
||||||
|
|
||||||
|
|
||||||
@ -51,9 +52,16 @@ class KNXBinarySensor(KnxEntity, BinarySensorEntity):
|
|||||||
@property
|
@property
|
||||||
def extra_state_attributes(self) -> dict[str, Any] | None:
|
def extra_state_attributes(self) -> dict[str, Any] | None:
|
||||||
"""Return device specific state attributes."""
|
"""Return device specific state attributes."""
|
||||||
|
attr: dict[str, Any] = {}
|
||||||
|
|
||||||
if self._device.counter is not None:
|
if self._device.counter is not None:
|
||||||
return {ATTR_COUNTER: self._device.counter}
|
attr[ATTR_COUNTER] = self._device.counter
|
||||||
return None
|
if self._device.last_telegram is not None:
|
||||||
|
attr[ATTR_SOURCE] = str(self._device.last_telegram.source_address)
|
||||||
|
attr[ATTR_LAST_KNX_UPDATE] = str(
|
||||||
|
dt.as_utc(self._device.last_telegram.timestamp)
|
||||||
|
)
|
||||||
|
return attr
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def force_update(self) -> bool:
|
def force_update(self) -> bool:
|
||||||
|
@ -26,6 +26,8 @@ CONF_SYNC_STATE = "sync_state"
|
|||||||
CONF_RESET_AFTER = "reset_after"
|
CONF_RESET_AFTER = "reset_after"
|
||||||
|
|
||||||
ATTR_COUNTER = "counter"
|
ATTR_COUNTER = "counter"
|
||||||
|
ATTR_SOURCE = "source"
|
||||||
|
ATTR_LAST_KNX_UPDATE = "last_knx_update"
|
||||||
|
|
||||||
|
|
||||||
class ColorTempModes(Enum):
|
class ColorTempModes(Enum):
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
"""Support for KNX/IP sensors."""
|
"""Support for KNX/IP sensors."""
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from typing import Callable, Iterable
|
from typing import Any, Callable, Iterable
|
||||||
|
|
||||||
from xknx.devices import Sensor as XknxSensor
|
from xknx.devices import Sensor as XknxSensor
|
||||||
|
|
||||||
@ -9,8 +9,9 @@ from homeassistant.components.sensor import DEVICE_CLASSES, SensorEntity
|
|||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers.entity import Entity
|
from homeassistant.helpers.entity import Entity
|
||||||
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType, StateType
|
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType, StateType
|
||||||
|
from homeassistant.util import dt
|
||||||
|
|
||||||
from .const import DOMAIN
|
from .const import ATTR_LAST_KNX_UPDATE, ATTR_SOURCE, DOMAIN
|
||||||
from .knx_entity import KnxEntity
|
from .knx_entity import KnxEntity
|
||||||
|
|
||||||
|
|
||||||
@ -54,6 +55,18 @@ class KNXSensor(KnxEntity, SensorEntity):
|
|||||||
return device_class
|
return device_class
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@property
|
||||||
|
def extra_state_attributes(self) -> dict[str, Any] | None:
|
||||||
|
"""Return device specific state attributes."""
|
||||||
|
attr: dict[str, Any] = {}
|
||||||
|
|
||||||
|
if self._device.last_telegram is not None:
|
||||||
|
attr[ATTR_SOURCE] = str(self._device.last_telegram.source_address)
|
||||||
|
attr[ATTR_LAST_KNX_UPDATE] = str(
|
||||||
|
dt.as_utc(self._device.last_telegram.timestamp)
|
||||||
|
)
|
||||||
|
return attr
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def force_update(self) -> bool:
|
def force_update(self) -> bool:
|
||||||
"""
|
"""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user