1 """Constants used by vizio component."""
3 from pyvizio.const
import (
4 DEVICE_CLASS_SPEAKER
as VIZIO_DEVICE_CLASS_SPEAKER,
5 DEVICE_CLASS_TV
as VIZIO_DEVICE_CLASS_TV,
7 import voluptuous
as vol
10 MediaPlayerDeviceClass,
11 MediaPlayerEntityFeature,
24 SERVICE_UPDATE_SETTING =
"update_setting"
26 ATTR_SETTING_TYPE =
"setting_type"
27 ATTR_SETTING_NAME =
"setting_name"
28 ATTR_NEW_VALUE =
"new_value"
30 UPDATE_SETTING_SCHEMA: VolDictType = {
31 vol.Required(ATTR_SETTING_TYPE): vol.All(cv.string, vol.Lower, cv.slugify),
32 vol.Required(ATTR_SETTING_NAME): vol.All(cv.string, vol.Lower, cv.slugify),
33 vol.Required(ATTR_NEW_VALUE): vol.Any(vol.Coerce(int), cv.string),
36 CONF_ADDITIONAL_CONFIGS =
"additional_configs"
37 CONF_APP_ID =
"APP_ID"
39 CONF_APPS_TO_INCLUDE_OR_EXCLUDE =
"apps_to_include_or_exclude"
40 CONF_CONFIG =
"config"
41 CONF_INCLUDE_OR_EXCLUDE =
"include_or_exclude"
42 CONF_NAME_SPACE =
"NAME_SPACE"
43 CONF_MESSAGE =
"MESSAGE"
44 CONF_VOLUME_STEP =
"volume_step"
46 DEFAULT_DEVICE_CLASS = MediaPlayerDeviceClass.TV
47 DEFAULT_NAME =
"Vizio SmartCast"
49 DEFAULT_VOLUME_STEP = 1
55 COMMON_SUPPORTED_COMMANDS = (
56 MediaPlayerEntityFeature.PAUSE
57 | MediaPlayerEntityFeature.PLAY
58 | MediaPlayerEntityFeature.SELECT_SOURCE
59 | MediaPlayerEntityFeature.TURN_ON
60 | MediaPlayerEntityFeature.TURN_OFF
61 | MediaPlayerEntityFeature.VOLUME_MUTE
62 | MediaPlayerEntityFeature.VOLUME_SET
63 | MediaPlayerEntityFeature.VOLUME_STEP
66 SUPPORTED_COMMANDS = {
67 MediaPlayerDeviceClass.SPEAKER: COMMON_SUPPORTED_COMMANDS,
68 MediaPlayerDeviceClass.TV: (
69 COMMON_SUPPORTED_COMMANDS
70 | MediaPlayerEntityFeature.NEXT_TRACK
71 | MediaPlayerEntityFeature.PREVIOUS_TRACK
75 VIZIO_SOUND_MODE =
"eq"
76 VIZIO_AUDIO_SETTINGS =
"audio"
78 VIZIO_VOLUME =
"volume"
83 VIZIO_DEVICE_CLASSES = {
84 MediaPlayerDeviceClass.SPEAKER: VIZIO_DEVICE_CLASS_SPEAKER,
85 MediaPlayerDeviceClass.TV: VIZIO_DEVICE_CLASS_TV,
89 vol.Required(CONF_HOST): cv.string,
90 vol.Optional(CONF_ACCESS_TOKEN): cv.string,
91 vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
92 vol.Optional(CONF_DEVICE_CLASS, default=DEFAULT_DEVICE_CLASS): vol.All(
95 vol.In([MediaPlayerDeviceClass.TV, MediaPlayerDeviceClass.SPEAKER]),
97 vol.Optional(CONF_VOLUME_STEP, default=DEFAULT_VOLUME_STEP): vol.All(
98 vol.Coerce(int), vol.Range(min=1, max=10)
100 vol.Optional(CONF_APPS): vol.All(
102 vol.Exclusive(CONF_INCLUDE,
"apps_filter"): vol.All(
103 cv.ensure_list, [cv.string]
105 vol.Exclusive(CONF_EXCLUDE,
"apps_filter"): vol.All(
106 cv.ensure_list, [cv.string]
108 vol.Optional(CONF_ADDITIONAL_CONFIGS): vol.All(
112 vol.Required(CONF_NAME): cv.string,
113 vol.Required(CONF_CONFIG): {
114 vol.Required(CONF_APP_ID): cv.string,
115 vol.Required(CONF_NAME_SPACE): vol.Coerce(int),
116 vol.Optional(CONF_MESSAGE, default=
None): vol.Or(
124 cv.has_at_least_one_key(CONF_INCLUDE, CONF_EXCLUDE, CONF_ADDITIONAL_CONFIGS),