mirror of
https://github.com/home-assistant/core.git
synced 2025-04-23 08:47:57 +00:00
Add better message to deCONZ event logbook when information is available (#45545)
* Add better message when information is available * Fix pylint
This commit is contained in:
parent
d110d42913
commit
622906965d
@ -8,7 +8,107 @@ from homeassistant.helpers.event import Event
|
||||
|
||||
from .const import DOMAIN as DECONZ_DOMAIN
|
||||
from .deconz_event import CONF_DECONZ_EVENT, DeconzEvent
|
||||
from .device_trigger import _get_deconz_event_from_device_id
|
||||
from .device_trigger import (
|
||||
CONF_BOTH_BUTTONS,
|
||||
CONF_BOTTOM_BUTTONS,
|
||||
CONF_BUTTON_1,
|
||||
CONF_BUTTON_2,
|
||||
CONF_BUTTON_3,
|
||||
CONF_BUTTON_4,
|
||||
CONF_CLOSE,
|
||||
CONF_DIM_DOWN,
|
||||
CONF_DIM_UP,
|
||||
CONF_DOUBLE_PRESS,
|
||||
CONF_DOUBLE_TAP,
|
||||
CONF_LEFT,
|
||||
CONF_LONG_PRESS,
|
||||
CONF_LONG_RELEASE,
|
||||
CONF_MOVE,
|
||||
CONF_OPEN,
|
||||
CONF_QUADRUPLE_PRESS,
|
||||
CONF_QUINTUPLE_PRESS,
|
||||
CONF_RIGHT,
|
||||
CONF_ROTATE_FROM_SIDE_1,
|
||||
CONF_ROTATE_FROM_SIDE_2,
|
||||
CONF_ROTATE_FROM_SIDE_3,
|
||||
CONF_ROTATE_FROM_SIDE_4,
|
||||
CONF_ROTATE_FROM_SIDE_5,
|
||||
CONF_ROTATE_FROM_SIDE_6,
|
||||
CONF_ROTATED,
|
||||
CONF_ROTATED_FAST,
|
||||
CONF_ROTATION_STOPPED,
|
||||
CONF_SHAKE,
|
||||
CONF_SHORT_PRESS,
|
||||
CONF_SHORT_RELEASE,
|
||||
CONF_SIDE_1,
|
||||
CONF_SIDE_2,
|
||||
CONF_SIDE_3,
|
||||
CONF_SIDE_4,
|
||||
CONF_SIDE_5,
|
||||
CONF_SIDE_6,
|
||||
CONF_TOP_BUTTONS,
|
||||
CONF_TRIPLE_PRESS,
|
||||
CONF_TURN_OFF,
|
||||
CONF_TURN_ON,
|
||||
REMOTES,
|
||||
_get_deconz_event_from_device_id,
|
||||
)
|
||||
|
||||
ACTIONS = {
|
||||
CONF_SHORT_PRESS: "Short press",
|
||||
CONF_SHORT_RELEASE: "Short release",
|
||||
CONF_LONG_PRESS: "Long press",
|
||||
CONF_LONG_RELEASE: "Long release",
|
||||
CONF_DOUBLE_PRESS: "Double press",
|
||||
CONF_TRIPLE_PRESS: "Triple press",
|
||||
CONF_QUADRUPLE_PRESS: "Quadruple press",
|
||||
CONF_QUINTUPLE_PRESS: "Quintuple press",
|
||||
CONF_ROTATED: "Rotated",
|
||||
CONF_ROTATED_FAST: "Rotated fast",
|
||||
CONF_ROTATION_STOPPED: "Rotated stopped",
|
||||
CONF_MOVE: "Move",
|
||||
CONF_DOUBLE_TAP: "Double tap",
|
||||
CONF_SHAKE: "Shake",
|
||||
CONF_ROTATE_FROM_SIDE_1: "Rotate from side 1",
|
||||
CONF_ROTATE_FROM_SIDE_2: "Rotate from side 2",
|
||||
CONF_ROTATE_FROM_SIDE_3: "Rotate from side 3",
|
||||
CONF_ROTATE_FROM_SIDE_4: "Rotate from side 4",
|
||||
CONF_ROTATE_FROM_SIDE_5: "Rotate from side 5",
|
||||
CONF_ROTATE_FROM_SIDE_6: "Rotate from side 6",
|
||||
}
|
||||
|
||||
INTERFACES = {
|
||||
CONF_TURN_ON: "Turn on",
|
||||
CONF_TURN_OFF: "Turn off",
|
||||
CONF_DIM_UP: "Dim up",
|
||||
CONF_DIM_DOWN: "Dim down",
|
||||
CONF_LEFT: "Left",
|
||||
CONF_RIGHT: "Right",
|
||||
CONF_OPEN: "Open",
|
||||
CONF_CLOSE: "Close",
|
||||
CONF_BOTH_BUTTONS: "Both buttons",
|
||||
CONF_TOP_BUTTONS: "Top buttons",
|
||||
CONF_BOTTOM_BUTTONS: "Bottom buttons",
|
||||
CONF_BUTTON_1: "Button 1",
|
||||
CONF_BUTTON_2: "Button 2",
|
||||
CONF_BUTTON_3: "Button 3",
|
||||
CONF_BUTTON_4: "Button 4",
|
||||
CONF_SIDE_1: "Side 1",
|
||||
CONF_SIDE_2: "Side 2",
|
||||
CONF_SIDE_3: "Side 3",
|
||||
CONF_SIDE_4: "Side 4",
|
||||
CONF_SIDE_5: "Side 5",
|
||||
CONF_SIDE_6: "Side 6",
|
||||
}
|
||||
|
||||
|
||||
def _get_device_event_description(modelid: str, event: str) -> tuple:
|
||||
"""Get device event description."""
|
||||
device_event_descriptions: dict = REMOTES[modelid]
|
||||
|
||||
for event_type_tuple, event_dict in device_event_descriptions.items():
|
||||
if event == event_dict[CONF_EVENT]:
|
||||
return event_type_tuple
|
||||
|
||||
|
||||
@callback
|
||||
@ -25,9 +125,19 @@ def async_describe_events(
|
||||
hass, event.data[ATTR_DEVICE_ID]
|
||||
)
|
||||
|
||||
if deconz_event.device.modelid not in REMOTES:
|
||||
return {
|
||||
"name": f"{deconz_event.device.name}",
|
||||
"message": f"fired event '{event.data[CONF_EVENT]}'.",
|
||||
}
|
||||
|
||||
action, interface = _get_device_event_description(
|
||||
deconz_event.device.modelid, event.data[CONF_EVENT]
|
||||
)
|
||||
|
||||
return {
|
||||
"name": f"{deconz_event.device.name}",
|
||||
"message": f"fired event '{event.data[CONF_EVENT]}'.",
|
||||
"message": f"'{ACTIONS[action]}' event for '{INTERFACES[interface]}' was fired.",
|
||||
}
|
||||
|
||||
async_describe_event(DECONZ_DOMAIN, CONF_DECONZ_EVENT, async_describe_deconz_event)
|
||||
|
@ -24,35 +24,56 @@ async def test_humanifying_deconz_event(hass):
|
||||
"state": {"buttonevent": 1000},
|
||||
"config": {},
|
||||
"uniqueid": "00:00:00:00:00:00:00:01-00",
|
||||
}
|
||||
},
|
||||
"1": {
|
||||
"id": "Hue remote id",
|
||||
"name": "Hue remote",
|
||||
"type": "ZHASwitch",
|
||||
"modelid": "RWL021",
|
||||
"state": {"buttonevent": 1000},
|
||||
"config": {},
|
||||
"uniqueid": "00:00:00:00:00:00:00:02-00",
|
||||
},
|
||||
}
|
||||
config_entry = await setup_deconz_integration(hass, get_state_response=data)
|
||||
gateway = get_gateway_from_config_entry(hass, config_entry)
|
||||
event = gateway.events[0]
|
||||
|
||||
hass.config.components.add("recorder")
|
||||
assert await async_setup_component(hass, "logbook", {})
|
||||
entity_attr_cache = logbook.EntityAttributeCache(hass)
|
||||
|
||||
event1 = list(
|
||||
events = list(
|
||||
logbook.humanify(
|
||||
hass,
|
||||
[
|
||||
MockLazyEventPartialState(
|
||||
CONF_DECONZ_EVENT,
|
||||
{
|
||||
CONF_DEVICE_ID: event.device_id,
|
||||
CONF_DEVICE_ID: gateway.events[0].device_id,
|
||||
CONF_EVENT: 2000,
|
||||
CONF_ID: event.event_id,
|
||||
CONF_UNIQUE_ID: event.serial,
|
||||
CONF_ID: gateway.events[0].event_id,
|
||||
CONF_UNIQUE_ID: gateway.events[0].serial,
|
||||
},
|
||||
),
|
||||
MockLazyEventPartialState(
|
||||
CONF_DECONZ_EVENT,
|
||||
{
|
||||
CONF_DEVICE_ID: gateway.events[1].device_id,
|
||||
CONF_EVENT: 2001,
|
||||
CONF_ID: gateway.events[1].event_id,
|
||||
CONF_UNIQUE_ID: gateway.events[1].serial,
|
||||
},
|
||||
),
|
||||
],
|
||||
entity_attr_cache,
|
||||
{},
|
||||
)
|
||||
)[0]
|
||||
)
|
||||
|
||||
assert event1["name"] == "Switch 1"
|
||||
assert event1["domain"] == "deconz"
|
||||
assert event1["message"] == "fired event '2000'."
|
||||
assert events[0]["name"] == "Switch 1"
|
||||
assert events[0]["domain"] == "deconz"
|
||||
assert events[0]["message"] == "fired event '2000'."
|
||||
|
||||
assert events[1]["name"] == "Hue remote"
|
||||
assert events[1]["domain"] == "deconz"
|
||||
assert events[1]["message"] == "'Long press' event for 'Dim up' was fired."
|
||||
|
Loading…
x
Reference in New Issue
Block a user