1 """Support for Joaoapps Join services."""
14 import voluptuous
as vol
21 _LOGGER = logging.getLogger(__name__)
23 DOMAIN =
"joaoapps_join"
25 CONF_DEVICE_IDS =
"device_ids"
26 CONF_DEVICE_NAMES =
"device_names"
28 CONFIG_SCHEMA = vol.Schema(
34 vol.Required(CONF_API_KEY): cv.string,
35 vol.Optional(CONF_DEVICE_ID): cv.string,
36 vol.Optional(CONF_DEVICE_IDS): cv.string,
37 vol.Optional(CONF_DEVICE_NAMES): cv.string,
38 vol.Optional(CONF_NAME): cv.string,
43 extra=vol.ALLOW_EXTRA,
48 """Register services for each join device listed."""
50 def ring_service(service: ServiceCall) ->
None:
51 """Service to ring devices."""
55 device_ids=device_ids,
56 device_names=device_names,
59 def set_wallpaper_service(service: ServiceCall) ->
None:
60 """Service to set wallpaper on devices."""
64 device_ids=device_ids,
65 device_names=device_names,
66 url=service.data.get(
"url"),
69 def send_file_service(service: ServiceCall) ->
None:
70 """Service to send files to devices."""
74 device_ids=device_ids,
75 device_names=device_names,
76 url=service.data.get(
"url"),
79 def send_url_service(service: ServiceCall) ->
None:
80 """Service to open url on devices."""
84 device_ids=device_ids,
85 device_names=device_names,
86 url=service.data.get(
"url"),
89 def send_tasker_service(service: ServiceCall) ->
None:
90 """Service to open url on devices."""
94 device_ids=device_ids,
95 device_names=device_names,
96 text=service.data.get(
"command"),
99 def send_sms_service(service: ServiceCall) ->
None:
100 """Service to send sms from devices."""
103 device_ids=device_ids,
104 device_names=device_names,
105 sms_number=service.data.get(
"number"),
106 sms_text=service.data.get(
"message"),
110 hass.services.register(DOMAIN, f
"{name}ring", ring_service)
111 hass.services.register(DOMAIN, f
"{name}set_wallpaper", set_wallpaper_service)
112 hass.services.register(DOMAIN, f
"{name}send_sms", send_sms_service)
113 hass.services.register(DOMAIN, f
"{name}send_file", send_file_service)
114 hass.services.register(DOMAIN, f
"{name}send_url", send_url_service)
115 hass.services.register(DOMAIN, f
"{name}send_tasker", send_tasker_service)
118 def setup(hass: HomeAssistant, config: ConfigType) -> bool:
119 """Set up the Join services."""
120 for device
in config[DOMAIN]:
121 api_key = device.get(CONF_API_KEY)
122 device_id = device.get(CONF_DEVICE_ID)
123 device_ids = device.get(CONF_DEVICE_IDS)
124 device_names = device.get(CONF_DEVICE_NAMES)
125 name = device.get(CONF_NAME)
126 name = f
"{name.lower().replace(' ', '_')}_" if name
else ""
127 if api_key
and not get_devices(api_key):
128 _LOGGER.error(
"Error connecting to Join, check API key")
130 if device_id
is None and device_ids
is None and device_names
is None:
132 "No device was provided. Please specify device_id"
133 ", device_ids, or device_names"
137 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)
bool setup(HomeAssistant hass, ConfigType config)