* Add logbook and device trigger platforms to Shelly Add `logbook` platform for describing “shelly.click” event Add `device_trigger` platform for adding automation based on click events: Example of logbook event: Shelly 'single' click event for Test I3 channel 3 was fired. (Test I3 is the name of the device) Example of automation triggers: First button triple clicked First button long clicked and then single clicked First button double clicked First button long clicked First button single clicked and then long clicked First button single clicked Second button triple clicked .. Second button single clicked * Fix codespell * Remove pylint added for debug * Add tests * Rebase * Fix Rebase & Apply PR review suggestions Fix tests after rebasing Use `INPUTS_EVENTS_DICT` for input triggers Apply PR suggestions
37 lines
1 KiB
Python
37 lines
1 KiB
Python
"""Describe Shelly logbook events."""
|
|
|
|
from homeassistant.const import ATTR_DEVICE_ID
|
|
from homeassistant.core import callback
|
|
|
|
from .const import (
|
|
ATTR_CHANNEL,
|
|
ATTR_CLICK_TYPE,
|
|
ATTR_DEVICE,
|
|
DOMAIN,
|
|
EVENT_SHELLY_CLICK,
|
|
)
|
|
from .utils import get_device_name, get_device_wrapper
|
|
|
|
|
|
@callback
|
|
def async_describe_events(hass, async_describe_event):
|
|
"""Describe logbook events."""
|
|
|
|
@callback
|
|
def async_describe_shelly_click_event(event):
|
|
"""Describe shelly.click logbook event."""
|
|
wrapper = get_device_wrapper(hass, event.data[ATTR_DEVICE_ID])
|
|
if wrapper:
|
|
device_name = get_device_name(wrapper.device)
|
|
else:
|
|
device_name = event.data[ATTR_DEVICE]
|
|
|
|
channel = event.data[ATTR_CHANNEL]
|
|
click_type = event.data[ATTR_CLICK_TYPE]
|
|
|
|
return {
|
|
"name": "Shelly",
|
|
"message": f"'{click_type}' click event for {device_name} channel {channel} was fired.",
|
|
}
|
|
|
|
async_describe_event(DOMAIN, EVENT_SHELLY_CLICK, async_describe_shelly_click_event)
|