2022-10-10 12:11:55 +00:00
|
|
|
"""Services for the Fully Kiosk Browser integration."""
|
|
|
|
from __future__ import annotations
|
|
|
|
|
|
|
|
import voluptuous as vol
|
|
|
|
|
|
|
|
from homeassistant.const import ATTR_DEVICE_ID
|
|
|
|
from homeassistant.core import HomeAssistant, ServiceCall
|
|
|
|
import homeassistant.helpers.config_validation as cv
|
|
|
|
import homeassistant.helpers.device_registry as dr
|
|
|
|
|
2022-10-14 17:21:58 +00:00
|
|
|
from .const import (
|
|
|
|
ATTR_APPLICATION,
|
|
|
|
ATTR_URL,
|
|
|
|
DOMAIN,
|
|
|
|
SERVICE_LOAD_URL,
|
|
|
|
SERVICE_START_APPLICATION,
|
|
|
|
)
|
2022-10-10 12:11:55 +00:00
|
|
|
|
|
|
|
|
|
|
|
async def async_setup_services(hass: HomeAssistant) -> None:
|
|
|
|
"""Set up the services for the Fully Kiosk Browser integration."""
|
|
|
|
|
|
|
|
async def async_load_url(call: ServiceCall) -> None:
|
|
|
|
"""Load a URL on the Fully Kiosk Browser."""
|
|
|
|
registry = dr.async_get(hass)
|
|
|
|
for target in call.data[ATTR_DEVICE_ID]:
|
|
|
|
|
|
|
|
device = registry.async_get(target)
|
|
|
|
if device:
|
|
|
|
coordinator = hass.data[DOMAIN][list(device.config_entries)[0]]
|
|
|
|
await coordinator.fully.loadUrl(call.data[ATTR_URL])
|
|
|
|
|
2022-10-14 17:21:58 +00:00
|
|
|
async def async_start_app(call: ServiceCall) -> None:
|
|
|
|
"""Start an app on the device."""
|
|
|
|
registry = dr.async_get(hass)
|
|
|
|
for target in call.data[ATTR_DEVICE_ID]:
|
|
|
|
|
|
|
|
device = registry.async_get(target)
|
|
|
|
if device:
|
|
|
|
coordinator = hass.data[DOMAIN][list(device.config_entries)[0]]
|
|
|
|
await coordinator.fully.startApplication(call.data[ATTR_APPLICATION])
|
|
|
|
|
2022-10-10 12:11:55 +00:00
|
|
|
hass.services.async_register(
|
|
|
|
DOMAIN,
|
|
|
|
SERVICE_LOAD_URL,
|
|
|
|
async_load_url,
|
|
|
|
schema=vol.Schema(
|
|
|
|
vol.All(
|
|
|
|
{
|
|
|
|
vol.Required(ATTR_DEVICE_ID): cv.ensure_list,
|
|
|
|
vol.Required(
|
|
|
|
ATTR_URL,
|
|
|
|
): cv.string,
|
|
|
|
},
|
|
|
|
)
|
|
|
|
),
|
|
|
|
)
|
2022-10-14 17:21:58 +00:00
|
|
|
|
|
|
|
hass.services.async_register(
|
|
|
|
DOMAIN,
|
|
|
|
SERVICE_START_APPLICATION,
|
|
|
|
async_start_app,
|
|
|
|
schema=vol.Schema(
|
|
|
|
vol.All(
|
|
|
|
{
|
|
|
|
vol.Required(ATTR_DEVICE_ID): cv.ensure_list,
|
|
|
|
vol.Required(
|
|
|
|
ATTR_APPLICATION,
|
|
|
|
): cv.string,
|
|
|
|
},
|
|
|
|
)
|
|
|
|
),
|
|
|
|
)
|