Ensure service calls are typed [a-j] (#63013)
* Ensure service calls are typed [a-j] * Adjust apns * Adjust arlo Co-authored-by: epenet <epenet@users.noreply.github.com>
This commit is contained in:
parent
c0b9a34901
commit
f724aea0bb
16 changed files with 74 additions and 59 deletions
|
@ -18,7 +18,7 @@ from homeassistant.const import (
|
||||||
EVENT_HOMEASSISTANT_STOP,
|
EVENT_HOMEASSISTANT_STOP,
|
||||||
Platform,
|
Platform,
|
||||||
)
|
)
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant, ServiceCall
|
||||||
from homeassistant.exceptions import ConfigEntryAuthFailed, ConfigEntryNotReady
|
from homeassistant.exceptions import ConfigEntryAuthFailed, ConfigEntryNotReady
|
||||||
from homeassistant.helpers import config_validation as cv
|
from homeassistant.helpers import config_validation as cv
|
||||||
from homeassistant.helpers.dispatcher import dispatcher_send
|
from homeassistant.helpers.dispatcher import dispatcher_send
|
||||||
|
@ -134,19 +134,19 @@ async def async_unload_entry(hass: HomeAssistant, config_entry: ConfigEntry) ->
|
||||||
def setup_hass_services(hass: HomeAssistant) -> None:
|
def setup_hass_services(hass: HomeAssistant) -> None:
|
||||||
"""Home Assistant services."""
|
"""Home Assistant services."""
|
||||||
|
|
||||||
def change_setting(call):
|
def change_setting(call: ServiceCall) -> None:
|
||||||
"""Change an Abode system setting."""
|
"""Change an Abode system setting."""
|
||||||
setting = call.data.get(ATTR_SETTING)
|
setting = call.data[ATTR_SETTING]
|
||||||
value = call.data.get(ATTR_VALUE)
|
value = call.data[ATTR_VALUE]
|
||||||
|
|
||||||
try:
|
try:
|
||||||
hass.data[DOMAIN].abode.set_setting(setting, value)
|
hass.data[DOMAIN].abode.set_setting(setting, value)
|
||||||
except AbodeException as ex:
|
except AbodeException as ex:
|
||||||
LOGGER.warning(ex)
|
LOGGER.warning(ex)
|
||||||
|
|
||||||
def capture_image(call):
|
def capture_image(call: ServiceCall) -> None:
|
||||||
"""Capture a new image."""
|
"""Capture a new image."""
|
||||||
entity_ids = call.data.get(ATTR_ENTITY_ID)
|
entity_ids = call.data[ATTR_ENTITY_ID]
|
||||||
|
|
||||||
target_entities = [
|
target_entities = [
|
||||||
entity_id
|
entity_id
|
||||||
|
@ -158,9 +158,9 @@ def setup_hass_services(hass: HomeAssistant) -> None:
|
||||||
signal = f"abode_camera_capture_{entity_id}"
|
signal = f"abode_camera_capture_{entity_id}"
|
||||||
dispatcher_send(hass, signal)
|
dispatcher_send(hass, signal)
|
||||||
|
|
||||||
def trigger_automation(call):
|
def trigger_automation(call: ServiceCall) -> None:
|
||||||
"""Trigger an Abode automation."""
|
"""Trigger an Abode automation."""
|
||||||
entity_ids = call.data.get(ATTR_ENTITY_ID)
|
entity_ids = call.data[ATTR_ENTITY_ID]
|
||||||
|
|
||||||
target_entities = [
|
target_entities = [
|
||||||
entity_id
|
entity_id
|
||||||
|
|
|
@ -16,6 +16,7 @@ from homeassistant.const import (
|
||||||
CONF_PORT,
|
CONF_PORT,
|
||||||
EVENT_HOMEASSISTANT_STOP,
|
EVENT_HOMEASSISTANT_STOP,
|
||||||
)
|
)
|
||||||
|
from homeassistant.core import ServiceCall
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
from homeassistant.helpers.entity import Entity
|
from homeassistant.helpers.entity import Entity
|
||||||
|
|
||||||
|
@ -119,7 +120,7 @@ def setup(hass, config):
|
||||||
hass.data[DATA_ADS] = ads
|
hass.data[DATA_ADS] = ads
|
||||||
hass.bus.listen(EVENT_HOMEASSISTANT_STOP, ads.shutdown)
|
hass.bus.listen(EVENT_HOMEASSISTANT_STOP, ads.shutdown)
|
||||||
|
|
||||||
def handle_write_data_by_name(call):
|
def handle_write_data_by_name(call: ServiceCall) -> None:
|
||||||
"""Write a value to the connected ADS device."""
|
"""Write a value to the connected ADS device."""
|
||||||
ads_var = call.data.get(CONF_ADS_VAR)
|
ads_var = call.data.get(CONF_ADS_VAR)
|
||||||
ads_type = call.data.get(CONF_ADS_TYPE)
|
ads_type = call.data.get(CONF_ADS_TYPE)
|
||||||
|
|
|
@ -16,6 +16,7 @@ from homeassistant.components.notify import (
|
||||||
)
|
)
|
||||||
from homeassistant.config import load_yaml_config_file
|
from homeassistant.config import load_yaml_config_file
|
||||||
from homeassistant.const import ATTR_NAME, CONF_NAME, CONF_PLATFORM
|
from homeassistant.const import ATTR_NAME, CONF_NAME, CONF_PLATFORM
|
||||||
|
from homeassistant.core import ServiceCall
|
||||||
from homeassistant.helpers import template as template_helper
|
from homeassistant.helpers import template as template_helper
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
from homeassistant.helpers.event import track_state_change
|
from homeassistant.helpers.event import track_state_change
|
||||||
|
@ -188,7 +189,7 @@ class ApnsNotificationService(BaseNotificationService):
|
||||||
for device in self.devices.values():
|
for device in self.devices.values():
|
||||||
_write_device(out, device)
|
_write_device(out, device)
|
||||||
|
|
||||||
def register(self, call):
|
def register(self, call: ServiceCall) -> None:
|
||||||
"""Register a device to receive push messages."""
|
"""Register a device to receive push messages."""
|
||||||
push_id = call.data.get(ATTR_PUSH_ID)
|
push_id = call.data.get(ATTR_PUSH_ID)
|
||||||
|
|
||||||
|
@ -204,14 +205,12 @@ class ApnsNotificationService(BaseNotificationService):
|
||||||
self.devices[push_id] = device
|
self.devices[push_id] = device
|
||||||
with open(self.yaml_path, "a", encoding="utf8") as out:
|
with open(self.yaml_path, "a", encoding="utf8") as out:
|
||||||
_write_device(out, device)
|
_write_device(out, device)
|
||||||
return True
|
return
|
||||||
|
|
||||||
if device != current_device:
|
if device != current_device:
|
||||||
self.devices[push_id] = device
|
self.devices[push_id] = device
|
||||||
self.write_devices()
|
self.write_devices()
|
||||||
|
|
||||||
return True
|
|
||||||
|
|
||||||
def send_message(self, message=None, **kwargs):
|
def send_message(self, message=None, **kwargs):
|
||||||
"""Send push message to registered devices."""
|
"""Send push message to registered devices."""
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
"""Support for Netgear Arlo IP cameras."""
|
"""Support for Netgear Arlo IP cameras."""
|
||||||
from datetime import timedelta
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from datetime import datetime, timedelta
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from pyarlo import PyArlo
|
from pyarlo import PyArlo
|
||||||
|
@ -7,6 +9,7 @@ from requests.exceptions import ConnectTimeout, HTTPError
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
|
|
||||||
from homeassistant.const import CONF_PASSWORD, CONF_SCAN_INTERVAL, CONF_USERNAME
|
from homeassistant.const import CONF_PASSWORD, CONF_SCAN_INTERVAL, CONF_USERNAME
|
||||||
|
from homeassistant.core import ServiceCall
|
||||||
from homeassistant.helpers import config_validation as cv
|
from homeassistant.helpers import config_validation as cv
|
||||||
from homeassistant.helpers.dispatcher import dispatcher_send
|
from homeassistant.helpers.dispatcher import dispatcher_send
|
||||||
from homeassistant.helpers.event import track_time_interval
|
from homeassistant.helpers.event import track_time_interval
|
||||||
|
@ -73,7 +76,7 @@ def setup(hass, config):
|
||||||
)
|
)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def hub_refresh(event_time):
|
def hub_refresh(_: ServiceCall | datetime) -> None:
|
||||||
"""Call ArloHub to refresh information."""
|
"""Call ArloHub to refresh information."""
|
||||||
_LOGGER.debug("Updating Arlo Hub component")
|
_LOGGER.debug("Updating Arlo Hub component")
|
||||||
hass.data[DATA_ARLO].update(update_cameras=True, update_base_station=True)
|
hass.data[DATA_ARLO].update(update_cameras=True, update_base_station=True)
|
||||||
|
|
|
@ -21,6 +21,7 @@ from homeassistant.const import (
|
||||||
STATE_OFF,
|
STATE_OFF,
|
||||||
STATE_ON,
|
STATE_ON,
|
||||||
)
|
)
|
||||||
|
from homeassistant.core import ServiceCall
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
|
|
||||||
from .const import DOMAIN, SERVICE_SETALLZONES
|
from .const import DOMAIN, SERVICE_SETALLZONES
|
||||||
|
@ -105,7 +106,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
|
||||||
|
|
||||||
add_entities(devices, True)
|
add_entities(devices, True)
|
||||||
|
|
||||||
def service_handle(service):
|
def service_handle(service: ServiceCall) -> None:
|
||||||
"""Handle for services."""
|
"""Handle for services."""
|
||||||
entity_ids = service.data.get(ATTR_ENTITY_ID)
|
entity_ids = service.data.get(ATTR_ENTITY_ID)
|
||||||
source = service.data.get(ATTR_SOURCE)
|
source = service.data.get(ATTR_SOURCE)
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
"""Demo platform for the Device tracker component."""
|
"""Demo platform for the Device tracker component."""
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
import random
|
import random
|
||||||
|
|
||||||
|
from homeassistant.core import ServiceCall
|
||||||
|
|
||||||
from .const import DOMAIN, SERVICE_RANDOMIZE_DEVICE_TRACKER_DATA
|
from .const import DOMAIN, SERVICE_RANDOMIZE_DEVICE_TRACKER_DATA
|
||||||
|
|
||||||
|
|
||||||
|
@ -21,7 +25,7 @@ def setup_scanner(hass, config, see, discovery_info=None):
|
||||||
battery=random.randrange(10, 90),
|
battery=random.randrange(10, 90),
|
||||||
)
|
)
|
||||||
|
|
||||||
def observe(call=None):
|
def observe(call: ServiceCall | None = None) -> None:
|
||||||
"""Observe three entities."""
|
"""Observe three entities."""
|
||||||
random_see("demo_paulus", "Paulus")
|
random_see("demo_paulus", "Paulus")
|
||||||
random_see("demo_anne_therese", "Anne Therese")
|
random_see("demo_anne_therese", "Anne Therese")
|
||||||
|
|
|
@ -8,6 +8,7 @@ import threading
|
||||||
import requests
|
import requests
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
|
|
||||||
|
from homeassistant.core import ServiceCall
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
from homeassistant.util import raise_if_invalid_filename, raise_if_invalid_path
|
from homeassistant.util import raise_if_invalid_filename, raise_if_invalid_path
|
||||||
|
|
||||||
|
@ -56,7 +57,7 @@ def setup(hass, config):
|
||||||
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def download_file(service):
|
def download_file(service: ServiceCall) -> None:
|
||||||
"""Start thread to download file specified in the URL."""
|
"""Start thread to download file specified in the URL."""
|
||||||
|
|
||||||
def do_download():
|
def do_download():
|
||||||
|
|
|
@ -11,6 +11,7 @@ from homeassistant.const import (
|
||||||
CONF_NAME,
|
CONF_NAME,
|
||||||
CONF_PORT,
|
CONF_PORT,
|
||||||
)
|
)
|
||||||
|
from homeassistant.core import ServiceCall
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
from homeassistant.helpers.discovery import load_platform
|
from homeassistant.helpers.discovery import load_platform
|
||||||
|
|
||||||
|
@ -107,7 +108,7 @@ class EbusdData:
|
||||||
_LOGGER.error(err)
|
_LOGGER.error(err)
|
||||||
raise RuntimeError(err) from err
|
raise RuntimeError(err) from err
|
||||||
|
|
||||||
def write(self, call):
|
def write(self, call: ServiceCall) -> None:
|
||||||
"""Call write methon on ebusd."""
|
"""Call write methon on ebusd."""
|
||||||
name = call.data.get("name")
|
name = call.data.get("name")
|
||||||
value = call.data.get("value")
|
value = call.data.get("value")
|
||||||
|
|
|
@ -23,7 +23,7 @@ from homeassistant.const import (
|
||||||
CONF_PORT,
|
CONF_PORT,
|
||||||
CONF_USERNAME,
|
CONF_USERNAME,
|
||||||
)
|
)
|
||||||
from homeassistant.core import split_entity_id
|
from homeassistant.core import ServiceCall, split_entity_id
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
|
|
||||||
from .const import DOMAIN, SERVICE_TEACH_FACE
|
from .const import DOMAIN, SERVICE_TEACH_FACE
|
||||||
|
@ -187,7 +187,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
|
||||||
hass.data[DATA_FACEBOX].append(facebox)
|
hass.data[DATA_FACEBOX].append(facebox)
|
||||||
add_entities(entities)
|
add_entities(entities)
|
||||||
|
|
||||||
def service_handle(service):
|
def service_handle(service: ServiceCall) -> None:
|
||||||
"""Handle for services."""
|
"""Handle for services."""
|
||||||
entity_ids = service.data.get("entity_id")
|
entity_ids = service.data.get("entity_id")
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ import voluptuous as vol
|
||||||
|
|
||||||
from homeassistant.components.http import HomeAssistantView
|
from homeassistant.components.http import HomeAssistantView
|
||||||
from homeassistant.const import CONF_ACCESS_TOKEN
|
from homeassistant.const import CONF_ACCESS_TOKEN
|
||||||
|
from homeassistant.core import ServiceCall
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
@ -51,7 +52,7 @@ def setup(hass, config):
|
||||||
"""Set up the Foursquare component."""
|
"""Set up the Foursquare component."""
|
||||||
config = config[DOMAIN]
|
config = config[DOMAIN]
|
||||||
|
|
||||||
def checkin_user(call):
|
def checkin_user(call: ServiceCall) -> None:
|
||||||
"""Check a user in on Swarm."""
|
"""Check a user in on Swarm."""
|
||||||
url = f"https://api.foursquare.com/v2/checkins/add?oauth_token={config[CONF_ACCESS_TOKEN]}&v=20160802&m=swarm"
|
url = f"https://api.foursquare.com/v2/checkins/add?oauth_token={config[CONF_ACCESS_TOKEN]}&v=20160802&m=swarm"
|
||||||
response = requests.post(url, data=call.data, timeout=10)
|
response = requests.post(url, data=call.data, timeout=10)
|
||||||
|
|
|
@ -24,6 +24,7 @@ from homeassistant.const import (
|
||||||
CONF_NAME,
|
CONF_NAME,
|
||||||
CONF_OFFSET,
|
CONF_OFFSET,
|
||||||
)
|
)
|
||||||
|
from homeassistant.core import ServiceCall
|
||||||
from homeassistant.helpers import discovery
|
from homeassistant.helpers import discovery
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
from homeassistant.helpers.entity import generate_entity_id
|
from homeassistant.helpers.entity import generate_entity_id
|
||||||
|
@ -267,7 +268,7 @@ def setup_services(
|
||||||
):
|
):
|
||||||
"""Set up the service listeners."""
|
"""Set up the service listeners."""
|
||||||
|
|
||||||
def _found_calendar(call):
|
def _found_calendar(call: ServiceCall) -> None:
|
||||||
"""Check if we know about a calendar and generate PLATFORM_DISCOVER."""
|
"""Check if we know about a calendar and generate PLATFORM_DISCOVER."""
|
||||||
calendar = get_calendar_info(hass, call.data)
|
calendar = get_calendar_info(hass, call.data)
|
||||||
if hass.data[DATA_INDEX].get(calendar[CONF_CAL_ID]) is not None:
|
if hass.data[DATA_INDEX].get(calendar[CONF_CAL_ID]) is not None:
|
||||||
|
@ -289,7 +290,7 @@ def setup_services(
|
||||||
|
|
||||||
hass.services.register(DOMAIN, SERVICE_FOUND_CALENDARS, _found_calendar)
|
hass.services.register(DOMAIN, SERVICE_FOUND_CALENDARS, _found_calendar)
|
||||||
|
|
||||||
def _scan_for_calendars(service):
|
def _scan_for_calendars(call: ServiceCall) -> None:
|
||||||
"""Scan for new calendars."""
|
"""Scan for new calendars."""
|
||||||
service = calendar_service.get()
|
service = calendar_service.get()
|
||||||
cal_list = service.calendarList()
|
cal_list = service.calendarList()
|
||||||
|
@ -300,7 +301,7 @@ def setup_services(
|
||||||
|
|
||||||
hass.services.register(DOMAIN, SERVICE_SCAN_CALENDARS, _scan_for_calendars)
|
hass.services.register(DOMAIN, SERVICE_SCAN_CALENDARS, _scan_for_calendars)
|
||||||
|
|
||||||
def _add_event(call):
|
def _add_event(call: ServiceCall) -> None:
|
||||||
"""Add a new event to calendar."""
|
"""Add a new event to calendar."""
|
||||||
service = calendar_service.get()
|
service = calendar_service.get()
|
||||||
start = {}
|
start = {}
|
||||||
|
|
|
@ -42,7 +42,7 @@ from homeassistant.const import (
|
||||||
STATE_PLAYING,
|
STATE_PLAYING,
|
||||||
STATE_UNAVAILABLE,
|
STATE_UNAVAILABLE,
|
||||||
)
|
)
|
||||||
from homeassistant.core import HomeAssistant, callback
|
from homeassistant.core import HomeAssistant, ServiceCall, callback
|
||||||
from homeassistant.helpers import discovery, event
|
from homeassistant.helpers import discovery, event
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
from homeassistant.helpers.entity import Entity
|
from homeassistant.helpers.entity import Entity
|
||||||
|
@ -230,7 +230,7 @@ def setup(hass: HomeAssistant, base_config: ConfigType) -> bool: # noqa: C901
|
||||||
|
|
||||||
hdmi_network.set_initialized_callback(_async_initialized_callback)
|
hdmi_network.set_initialized_callback(_async_initialized_callback)
|
||||||
|
|
||||||
def _volume(call):
|
def _volume(call: ServiceCall) -> None:
|
||||||
"""Increase/decrease volume and mute/unmute system."""
|
"""Increase/decrease volume and mute/unmute system."""
|
||||||
mute_key_mapping = {
|
mute_key_mapping = {
|
||||||
ATTR_TOGGLE: KEY_MUTE_TOGGLE,
|
ATTR_TOGGLE: KEY_MUTE_TOGGLE,
|
||||||
|
@ -264,7 +264,7 @@ def setup(hass: HomeAssistant, base_config: ConfigType) -> bool: # noqa: C901
|
||||||
hdmi_network.send_command(KeyPressCommand(cmd, dst=ADDR_AUDIOSYSTEM))
|
hdmi_network.send_command(KeyPressCommand(cmd, dst=ADDR_AUDIOSYSTEM))
|
||||||
hdmi_network.send_command(KeyReleaseCommand(dst=ADDR_AUDIOSYSTEM))
|
hdmi_network.send_command(KeyReleaseCommand(dst=ADDR_AUDIOSYSTEM))
|
||||||
|
|
||||||
def _tx(call):
|
def _tx(call: ServiceCall) -> None:
|
||||||
"""Send CEC command."""
|
"""Send CEC command."""
|
||||||
data = call.data
|
data = call.data
|
||||||
if ATTR_RAW in data:
|
if ATTR_RAW in data:
|
||||||
|
@ -282,7 +282,7 @@ def setup(hass: HomeAssistant, base_config: ConfigType) -> bool: # noqa: C901
|
||||||
cmd = data[ATTR_CMD]
|
cmd = data[ATTR_CMD]
|
||||||
else:
|
else:
|
||||||
_LOGGER.error("Attribute 'cmd' is missing")
|
_LOGGER.error("Attribute 'cmd' is missing")
|
||||||
return False
|
return
|
||||||
if ATTR_ATT in data:
|
if ATTR_ATT in data:
|
||||||
if isinstance(data[ATTR_ATT], (list,)):
|
if isinstance(data[ATTR_ATT], (list,)):
|
||||||
att = data[ATTR_ATT]
|
att = data[ATTR_ATT]
|
||||||
|
@ -293,13 +293,13 @@ def setup(hass: HomeAssistant, base_config: ConfigType) -> bool: # noqa: C901
|
||||||
command = CecCommand(cmd, dst, src, att)
|
command = CecCommand(cmd, dst, src, att)
|
||||||
hdmi_network.send_command(command)
|
hdmi_network.send_command(command)
|
||||||
|
|
||||||
def _standby(call):
|
def _standby(call: ServiceCall) -> None:
|
||||||
hdmi_network.standby()
|
hdmi_network.standby()
|
||||||
|
|
||||||
def _power_on(call):
|
def _power_on(call: ServiceCall) -> None:
|
||||||
hdmi_network.power_on()
|
hdmi_network.power_on()
|
||||||
|
|
||||||
def _select_device(call):
|
def _select_device(call: ServiceCall) -> None:
|
||||||
"""Select the active device."""
|
"""Select the active device."""
|
||||||
if not (addr := call.data[ATTR_DEVICE]):
|
if not (addr := call.data[ATTR_DEVICE]):
|
||||||
_LOGGER.error("Device not found: %s", call.data[ATTR_DEVICE])
|
_LOGGER.error("Device not found: %s", call.data[ATTR_DEVICE])
|
||||||
|
@ -322,7 +322,7 @@ def setup(hass: HomeAssistant, base_config: ConfigType) -> bool: # noqa: C901
|
||||||
hdmi_network.active_source(addr)
|
hdmi_network.active_source(addr)
|
||||||
_LOGGER.info("Selected %s (%s)", call.data[ATTR_DEVICE], addr)
|
_LOGGER.info("Selected %s (%s)", call.data[ATTR_DEVICE], addr)
|
||||||
|
|
||||||
def _update(call):
|
def _update(call: ServiceCall) -> None:
|
||||||
"""
|
"""
|
||||||
Update if device update is needed.
|
Update if device update is needed.
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,7 @@ from homeassistant.const import (
|
||||||
CONF_VERIFY_SSL,
|
CONF_VERIFY_SSL,
|
||||||
EVENT_HOMEASSISTANT_STOP,
|
EVENT_HOMEASSISTANT_STOP,
|
||||||
)
|
)
|
||||||
|
from homeassistant.core import ServiceCall
|
||||||
from homeassistant.helpers import discovery
|
from homeassistant.helpers import discovery
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
|
|
||||||
|
@ -260,7 +261,7 @@ def setup(hass, config):
|
||||||
for hub_name in conf[CONF_HOSTS]:
|
for hub_name in conf[CONF_HOSTS]:
|
||||||
entity_hubs.append(HMHub(hass, homematic, hub_name))
|
entity_hubs.append(HMHub(hass, homematic, hub_name))
|
||||||
|
|
||||||
def _hm_service_virtualkey(service):
|
def _hm_service_virtualkey(service: ServiceCall) -> None:
|
||||||
"""Service to handle virtualkey servicecalls."""
|
"""Service to handle virtualkey servicecalls."""
|
||||||
address = service.data.get(ATTR_ADDRESS)
|
address = service.data.get(ATTR_ADDRESS)
|
||||||
channel = service.data.get(ATTR_CHANNEL)
|
channel = service.data.get(ATTR_CHANNEL)
|
||||||
|
@ -292,7 +293,7 @@ def setup(hass, config):
|
||||||
schema=SCHEMA_SERVICE_VIRTUALKEY,
|
schema=SCHEMA_SERVICE_VIRTUALKEY,
|
||||||
)
|
)
|
||||||
|
|
||||||
def _service_handle_value(service):
|
def _service_handle_value(service: ServiceCall) -> None:
|
||||||
"""Service to call setValue method for HomeMatic system variable."""
|
"""Service to call setValue method for HomeMatic system variable."""
|
||||||
entity_ids = service.data.get(ATTR_ENTITY_ID)
|
entity_ids = service.data.get(ATTR_ENTITY_ID)
|
||||||
name = service.data[ATTR_NAME]
|
name = service.data[ATTR_NAME]
|
||||||
|
@ -319,7 +320,7 @@ def setup(hass, config):
|
||||||
schema=SCHEMA_SERVICE_SET_VARIABLE_VALUE,
|
schema=SCHEMA_SERVICE_SET_VARIABLE_VALUE,
|
||||||
)
|
)
|
||||||
|
|
||||||
def _service_handle_reconnect(service):
|
def _service_handle_reconnect(service: ServiceCall) -> None:
|
||||||
"""Service to reconnect all HomeMatic hubs."""
|
"""Service to reconnect all HomeMatic hubs."""
|
||||||
homematic.reconnect()
|
homematic.reconnect()
|
||||||
|
|
||||||
|
@ -330,12 +331,12 @@ def setup(hass, config):
|
||||||
schema=SCHEMA_SERVICE_RECONNECT,
|
schema=SCHEMA_SERVICE_RECONNECT,
|
||||||
)
|
)
|
||||||
|
|
||||||
def _service_handle_device(service):
|
def _service_handle_device(service: ServiceCall) -> None:
|
||||||
"""Service to call setValue method for HomeMatic devices."""
|
"""Service to call setValue method for HomeMatic devices."""
|
||||||
address = service.data.get(ATTR_ADDRESS)
|
address = service.data[ATTR_ADDRESS]
|
||||||
channel = service.data.get(ATTR_CHANNEL)
|
channel = service.data[ATTR_CHANNEL]
|
||||||
param = service.data.get(ATTR_PARAM)
|
param = service.data[ATTR_PARAM]
|
||||||
value = service.data.get(ATTR_VALUE)
|
value = service.data[ATTR_VALUE]
|
||||||
value_type = service.data.get(ATTR_VALUE_TYPE)
|
value_type = service.data.get(ATTR_VALUE_TYPE)
|
||||||
|
|
||||||
# Convert value into correct XML-RPC Type.
|
# Convert value into correct XML-RPC Type.
|
||||||
|
@ -368,7 +369,7 @@ def setup(hass, config):
|
||||||
schema=SCHEMA_SERVICE_SET_DEVICE_VALUE,
|
schema=SCHEMA_SERVICE_SET_DEVICE_VALUE,
|
||||||
)
|
)
|
||||||
|
|
||||||
def _service_handle_install_mode(service):
|
def _service_handle_install_mode(service: ServiceCall) -> None:
|
||||||
"""Service to set interface into install mode."""
|
"""Service to set interface into install mode."""
|
||||||
interface = service.data.get(ATTR_INTERFACE)
|
interface = service.data.get(ATTR_INTERFACE)
|
||||||
mode = service.data.get(ATTR_MODE)
|
mode = service.data.get(ATTR_MODE)
|
||||||
|
@ -384,15 +385,15 @@ def setup(hass, config):
|
||||||
schema=SCHEMA_SERVICE_SET_INSTALL_MODE,
|
schema=SCHEMA_SERVICE_SET_INSTALL_MODE,
|
||||||
)
|
)
|
||||||
|
|
||||||
def _service_put_paramset(service):
|
def _service_put_paramset(service: ServiceCall) -> None:
|
||||||
"""Service to call the putParamset method on a HomeMatic connection."""
|
"""Service to call the putParamset method on a HomeMatic connection."""
|
||||||
interface = service.data.get(ATTR_INTERFACE)
|
interface = service.data[ATTR_INTERFACE]
|
||||||
address = service.data.get(ATTR_ADDRESS)
|
address = service.data[ATTR_ADDRESS]
|
||||||
paramset_key = service.data.get(ATTR_PARAMSET_KEY)
|
paramset_key = service.data[ATTR_PARAMSET_KEY]
|
||||||
# When passing in the paramset from a YAML file we get an OrderedDict
|
# When passing in the paramset from a YAML file we get an OrderedDict
|
||||||
# here instead of a dict, so add this explicit cast.
|
# here instead of a dict, so add this explicit cast.
|
||||||
# The service schema makes sure that this cast works.
|
# The service schema makes sure that this cast works.
|
||||||
paramset = dict(service.data.get(ATTR_PARAMSET))
|
paramset = dict(service.data[ATTR_PARAMSET])
|
||||||
rx_mode = service.data.get(ATTR_RX_MODE)
|
rx_mode = service.data.get(ATTR_RX_MODE)
|
||||||
|
|
||||||
_LOGGER.debug(
|
_LOGGER.debug(
|
||||||
|
|
|
@ -26,6 +26,7 @@ from homeassistant.const import (
|
||||||
STATE_ALARM_ARMED_NIGHT,
|
STATE_ALARM_ARMED_NIGHT,
|
||||||
STATE_ALARM_DISARMED,
|
STATE_ALARM_DISARMED,
|
||||||
)
|
)
|
||||||
|
from homeassistant.core import ServiceCall
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
|
|
||||||
from . import ATTR_EVENT, DOMAIN, SERVICE_PUSH_ALARM_STATE, SERVICE_TRIGGER
|
from . import ATTR_EVENT, DOMAIN, SERVICE_PUSH_ALARM_STATE, SERVICE_TRIGGER
|
||||||
|
@ -99,7 +100,7 @@ def setup_platform(hass, config, add_entities, discovery_info=None):
|
||||||
hass.data[DATA_IFTTT_ALARM].append(alarmpanel)
|
hass.data[DATA_IFTTT_ALARM].append(alarmpanel)
|
||||||
add_entities([alarmpanel])
|
add_entities([alarmpanel])
|
||||||
|
|
||||||
async def push_state_update(service):
|
async def push_state_update(service: ServiceCall) -> None:
|
||||||
"""Set the service state as device state attribute."""
|
"""Set the service state as device state attribute."""
|
||||||
entity_ids = service.data.get(ATTR_ENTITY_ID)
|
entity_ids = service.data.get(ATTR_ENTITY_ID)
|
||||||
state = service.data.get(ATTR_STATE)
|
state = service.data.get(ATTR_STATE)
|
||||||
|
|
|
@ -19,7 +19,7 @@ from homeassistant.const import (
|
||||||
TEMP_CELSIUS,
|
TEMP_CELSIUS,
|
||||||
Platform,
|
Platform,
|
||||||
)
|
)
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant, ServiceCall
|
||||||
from homeassistant.helpers import discovery
|
from homeassistant.helpers import discovery
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
|
|
||||||
|
@ -354,28 +354,28 @@ def setup_service_functions(hass: HomeAssistant):
|
||||||
ihc_key = f"ihc{controller_id}"
|
ihc_key = f"ihc{controller_id}"
|
||||||
return hass.data[ihc_key][IHC_CONTROLLER]
|
return hass.data[ihc_key][IHC_CONTROLLER]
|
||||||
|
|
||||||
def set_runtime_value_bool(call):
|
def set_runtime_value_bool(call: ServiceCall) -> None:
|
||||||
"""Set a IHC runtime bool value service function."""
|
"""Set a IHC runtime bool value service function."""
|
||||||
ihc_id = call.data[ATTR_IHC_ID]
|
ihc_id = call.data[ATTR_IHC_ID]
|
||||||
value = call.data[ATTR_VALUE]
|
value = call.data[ATTR_VALUE]
|
||||||
ihc_controller = _get_controller(call)
|
ihc_controller = _get_controller(call)
|
||||||
ihc_controller.set_runtime_value_bool(ihc_id, value)
|
ihc_controller.set_runtime_value_bool(ihc_id, value)
|
||||||
|
|
||||||
def set_runtime_value_int(call):
|
def set_runtime_value_int(call: ServiceCall) -> None:
|
||||||
"""Set a IHC runtime integer value service function."""
|
"""Set a IHC runtime integer value service function."""
|
||||||
ihc_id = call.data[ATTR_IHC_ID]
|
ihc_id = call.data[ATTR_IHC_ID]
|
||||||
value = call.data[ATTR_VALUE]
|
value = call.data[ATTR_VALUE]
|
||||||
ihc_controller = _get_controller(call)
|
ihc_controller = _get_controller(call)
|
||||||
ihc_controller.set_runtime_value_int(ihc_id, value)
|
ihc_controller.set_runtime_value_int(ihc_id, value)
|
||||||
|
|
||||||
def set_runtime_value_float(call):
|
def set_runtime_value_float(call: ServiceCall) -> None:
|
||||||
"""Set a IHC runtime float value service function."""
|
"""Set a IHC runtime float value service function."""
|
||||||
ihc_id = call.data[ATTR_IHC_ID]
|
ihc_id = call.data[ATTR_IHC_ID]
|
||||||
value = call.data[ATTR_VALUE]
|
value = call.data[ATTR_VALUE]
|
||||||
ihc_controller = _get_controller(call)
|
ihc_controller = _get_controller(call)
|
||||||
ihc_controller.set_runtime_value_float(ihc_id, value)
|
ihc_controller.set_runtime_value_float(ihc_id, value)
|
||||||
|
|
||||||
async def async_pulse_runtime_input(call):
|
async def async_pulse_runtime_input(call: ServiceCall) -> None:
|
||||||
"""Pulse a IHC controller input function."""
|
"""Pulse a IHC controller input function."""
|
||||||
ihc_id = call.data[ATTR_IHC_ID]
|
ihc_id = call.data[ATTR_IHC_ID]
|
||||||
ihc_controller = _get_controller(call)
|
ihc_controller = _get_controller(call)
|
||||||
|
|
|
@ -13,6 +13,7 @@ from pyjoin import (
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
|
|
||||||
from homeassistant.const import CONF_API_KEY, CONF_DEVICE_ID, CONF_NAME
|
from homeassistant.const import CONF_API_KEY, CONF_DEVICE_ID, CONF_NAME
|
||||||
|
from homeassistant.core import ServiceCall
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
@ -44,7 +45,7 @@ CONFIG_SCHEMA = vol.Schema(
|
||||||
def register_device(hass, api_key, name, device_id, device_ids, device_names):
|
def register_device(hass, api_key, name, device_id, device_ids, device_names):
|
||||||
"""Register services for each join device listed."""
|
"""Register services for each join device listed."""
|
||||||
|
|
||||||
def ring_service(service):
|
def ring_service(service: ServiceCall) -> None:
|
||||||
"""Service to ring devices."""
|
"""Service to ring devices."""
|
||||||
ring_device(
|
ring_device(
|
||||||
api_key=api_key,
|
api_key=api_key,
|
||||||
|
@ -53,7 +54,7 @@ def register_device(hass, api_key, name, device_id, device_ids, device_names):
|
||||||
device_names=device_names,
|
device_names=device_names,
|
||||||
)
|
)
|
||||||
|
|
||||||
def set_wallpaper_service(service):
|
def set_wallpaper_service(service: ServiceCall) -> None:
|
||||||
"""Service to set wallpaper on devices."""
|
"""Service to set wallpaper on devices."""
|
||||||
set_wallpaper(
|
set_wallpaper(
|
||||||
api_key=api_key,
|
api_key=api_key,
|
||||||
|
@ -63,7 +64,7 @@ def register_device(hass, api_key, name, device_id, device_ids, device_names):
|
||||||
url=service.data.get("url"),
|
url=service.data.get("url"),
|
||||||
)
|
)
|
||||||
|
|
||||||
def send_file_service(service):
|
def send_file_service(service: ServiceCall) -> None:
|
||||||
"""Service to send files to devices."""
|
"""Service to send files to devices."""
|
||||||
send_file(
|
send_file(
|
||||||
api_key=api_key,
|
api_key=api_key,
|
||||||
|
@ -73,7 +74,7 @@ def register_device(hass, api_key, name, device_id, device_ids, device_names):
|
||||||
url=service.data.get("url"),
|
url=service.data.get("url"),
|
||||||
)
|
)
|
||||||
|
|
||||||
def send_url_service(service):
|
def send_url_service(service: ServiceCall) -> None:
|
||||||
"""Service to open url on devices."""
|
"""Service to open url on devices."""
|
||||||
send_url(
|
send_url(
|
||||||
api_key=api_key,
|
api_key=api_key,
|
||||||
|
@ -83,7 +84,7 @@ def register_device(hass, api_key, name, device_id, device_ids, device_names):
|
||||||
url=service.data.get("url"),
|
url=service.data.get("url"),
|
||||||
)
|
)
|
||||||
|
|
||||||
def send_tasker_service(service):
|
def send_tasker_service(service: ServiceCall) -> None:
|
||||||
"""Service to open url on devices."""
|
"""Service to open url on devices."""
|
||||||
send_notification(
|
send_notification(
|
||||||
api_key=api_key,
|
api_key=api_key,
|
||||||
|
@ -93,7 +94,7 @@ def register_device(hass, api_key, name, device_id, device_ids, device_names):
|
||||||
text=service.data.get("command"),
|
text=service.data.get("command"),
|
||||||
)
|
)
|
||||||
|
|
||||||
def send_sms_service(service):
|
def send_sms_service(service: ServiceCall) -> None:
|
||||||
"""Service to send sms from devices."""
|
"""Service to send sms from devices."""
|
||||||
send_sms(
|
send_sms(
|
||||||
device_id=device_id,
|
device_id=device_id,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue