Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
DOMAIN = "input_boolean"
ENTITY_ID_FORMAT = DOMAIN + ".{}"
_LOGGER = logging.getLogger(__name__)
CONF_INITIAL = "initial"
CONFIG_SCHEMA = vol.Schema(
{
DOMAIN: cv.schema_with_slug_keys(
vol.Any(
{
vol.Optional(CONF_NAME): cv.string,
vol.Optional(CONF_INITIAL): cv.boolean,
vol.Optional(CONF_ICON): cv.icon,
},
None,
)
)
},
extra=vol.ALLOW_EXTRA,
)
RELOAD_SERVICE_SCHEMA = vol.Schema({})
@bind_hass
def is_on(hass, entity_id):
"""Test if input_boolean is True."""
return hass.states.is_state(entity_id, STATE_ON)
'pmd': 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8IS0tIENyZWF0b3I6IENvcmVsRFJBVyBYNiAtLT4NCjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWw6c3BhY2U9InByZXNlcnZlIiB3aWR0aD0iNS4zNjExMWluIiBoZWlnaHQ9IjUuMzYxMTFpbiIgdmVyc2lvbj0iMS4xIiBzdHlsZT0ic2hhcGUtcmVuZGVyaW5nOmdlb21ldHJpY1ByZWNpc2lvbjsgdGV4dC1yZW5kZXJpbmc6Z2VvbWV0cmljUHJlY2lzaW9uOyBpbWFnZS1yZW5kZXJpbmc6b3B0aW1pemVRdWFsaXR5OyBmaWxsLXJ1bGU6ZXZlbm9kZDsgY2xpcC1ydWxlOmV2ZW5vZGQiDQp2aWV3Qm94PSIwIDAgNTM2MSA1MzYxIg0KIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4NCiA8ZGVmcz4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCiAgIDwhW0NEQVRBWw0KICAgIC5maWwwIHtmaWxsOiMyMzFGMjA7ZmlsbC1ydWxlOm5vbnplcm99DQogICBdXT4NCiAgPC9zdHlsZT4NCiA8L2RlZnM+DQogPGcgaWQ9IkxheWVyX3gwMDIwXzEiPg0KICA8bWV0YWRhdGEgaWQ9IkNvcmVsQ29ycElEXzBDb3JlbC1MYXllciIvPg0KICA8cGF0aCBjbGFzcz0iZmlsMCIgZD0iTTI2NzkgMTM4Yy0xNDAxLDAgLTI1NDEsMTE0MCAtMjU0MSwyNTQxIDAsMTQwMSAxMTQwLDI1NDEgMjU0MSwyNTQxIDE0MDEsMCAyNTQxLC0xMTQwIDI1NDEsLTI1NDEgMCwtMTQwMSAtMTE0MCwtMjU0MSAtMjU0MSwtMjU0MXptMCA1MjIwYy0xNDc3LDAgLTI2NzksLTEyMDIgLTI2NzksLTI2NzkgMCwtMTQ3NyAxMjAyLC0yNjc5IDI2NzksLTI2NzkgMTQ3NywwIDI2NzksMTIwMiAyNjc5LDI2NzkgMCwxNDc3IC0xMjAyLDI2NzkgLTI2NzksMjY3OXoiLz4NCiAgPHBhdGggY2xhc3M9ImZpbDAiIGQ9Ik0yNzY0IDc3NmMwLDAgMTU4LC0zNCAyODQsNGwtMjg0IC00eiIvPg0KICA8cGF0aCBjbGFzcz0iZmlsMCIgZD0iTTM3NTcgMjc3N2MwLDAgLTI4MSwtNzUgLTU3NiwybDU3NiAtMnoiLz4NCiAgPHBhdGggY2xhc3M9ImZpbDAiIGQ9Ik0zNzQ4IDQwODZsLTQyIDkyYzAsMCAtMTk2LDYwIC00ODcsLTExbC00MCAtODVjMCwwIDMwNCw5NCA1NjgsNXoiLz4NCiAgPHBhdGggY2xhc3M9ImZpbDAiIGQ9Ik0xNzAyIDI0NTVsLTE4MCAtMjY2IDQzMyA4MSAtMjUzIDE4NHptMjk5IC0xNzZjLTUsLTIzIC0yMywtNDAgLTQ2LC00NGwtNDMzIC04MWMtMjMsLTQgLTQ3LDYgLTU5LDI1IC0xMywyMCAtMTMsNDUgMCw2NWwxODAgMjY2YzksMTMgMjMsMjIgMzgsMjUgMywxIDcsMSAxMCwxIDEyLDAgMjQsLTQgMzQsLTExbDI1MyAtMTg0YzE5LC0xNCAyOCwtMzcgMjMsLTYweiIvPg0KICA8cGF0aCBjbGFzcz0iZmlsMCIgZD0iTTI3MzUgMzk0MmM0OSwwIDkzLC04IDkzLC04IDI2LC01IDUyLDkgNjMsMzIgMiwyIDksNSAyMiw1bDggMGM5LDAgMjAsMSAzMiwxIDY1LDAgODYsLTEwIDkwLC0xMyAxMCwtMjEgMzIsLTMzIDU1LC0zMiAxLDAgMjAsMSA0NSwxbC0yMSAxMTZjLTQyLDM5IC0xMTUsNDQgLTE3MCw0NCAtMTMsMCAtMjYsMCAtMzYsLTFsLTggMGMtNDYsLTEgLTc3LC0xNyAtOTYsLTM0IC0yMSwyIC00OSw1IC03OSw1bTU5NyAtMTMxOWM1LC04MiA5LC0xNTcgMTQsLTIxOSA1LC03NiA5LC0xMzcgOSwtMTYyIDAsLTEyIDAsLTI4IDEsLTQ3IDQsLTE1NyAxNCwtNTczIC0xNzMsLTgxNiAtMTUwLC0xOTUgLTE5MiwtMzMzIC0yMDIsLTQxMCAtMTAsMCAtMjEsMCAtMzIsMCAtNDAsMCAtNzYsLTEgLTEwOCwtMyAtMTIsMTAwIC01NSwzMDAgLTIwOCw0ODEgLTY1LDc3IC0xMzcsMjIxIC0xMzQsNDc3bC0xMTYgLTRjLTIsLTI4OSA4NCwtNDU2IDE2MSwtNTQ4IDE4MywtMjE3IDE4NSwtNDY4IDE4NSwtNDcxIDAsLTE3IDcsLTMzIDIwLC00NCAxMywtMTEgMzAsLTE2IDQ3LC0xMyAzNiw2IDg5LDkgMTUyLDkgNDksMCA4NiwtMiA4NiwtMiAxOCwtMSAzNSw3IDQ3LDIwIDEyLDE0IDE3LDMyIDEzLDQ5IDAsMCAtMTYsMTMyIDE4MCwzODggMjExLDI3NSAyMDEsNzIxIDE5Nyw4ODkgMCwxOCAtMSwzMyAtMSw0NCAwLDI5IC00LDg4IC05LDE3MCAtNCw2MiAtOSwxMzYgLTEzLDIxN2wtMTE2IC01eiIvPg0KICA8cGF0aCBjbGFzcz0iZmlsMCIgZD0iTTI4MjIgOTY2YzI5LDcgNjEsMTAgOTMsMTAgMzEsMCA1OCwtMyA3OSwtN2wwIC0xMTljLTU4LDUgLTEyNSwyIC0xNzEsLTNsLTEgMTE5em05MyAxMjZjLTYwLDAgLTExOCwtOSAtMTcxLC0yOCAtMjQsLTggLTM5LC0zMCAtMzksLTU1bDEgLTIzMGMwLC0xOCA4LC0zNCAyMiwtNDUgMTQsLTExIDMyLC0xNSA0OSwtMTEgMSwwIDY2LDE1IDE0OCwxNSA0MiwwIDgwLC00IDExNSwtMTEgMTcsLTQgMzUsMSA0OSwxMiAxNCwxMSAyMiwyOCAyMiw0NWwxIDIzM2MwLDI1IC0xNiw0OCAtNDEsNTYgLTMsMSAtNjcsMjEgLTE1NSwyMXoiLz4NCiAgPHBhdGggY2xhc3M9ImZpbDAiIGQ9Ik0yNzY0IDc3NmMwLDAgMTU4LC0zNCAyODQsNGwtMjg0IC00eiIvPg0KICA8cGF0aCBjbGFzcz0iZmlsMCIgZD0iTTMwNDggODM5Yy02LDAgLTExLC0xIC0xNywtMyAtMTA5LC0zMyAtMjUzLC0zIC0yNTQsLTMgLTMxLDcgLTYyLC0xMyAtNjksLTQ1IC03LC0zMSAxMywtNjIgNDUsLTY5IDcsLTIgMTc1LC0zNyAzMTMsNSAzMSw5IDQ4LDQyIDM4LDczIC04LDI1IC0zMSw0MSAtNTYsNDF6Ii8+DQogIDxwYXRoIGNsYXNzPSJmaWwwIiBkPSJNMzE0OSA0MDAxYzQ4LDIzIDE1OCw2NSAzMTMsNjUgMTA1LDAgMjE0LC0xOSAzMjMsLTU3bDAgLTEwNTUgLTUyIC0xMDNjLTU2LDEwIC0xNTcsMjQgLTI4MywyNCAtOTAsMCAtMTc3LC04IC0yNTksLTIybC02MCA5OSAxNyAxMDUwem0zMTMgMTgxYy0yNDcsMCAtMzk2LC05MyAtNDAyLC05NyAtMTcsLTEwIC0yNywtMjkgLTI3LC00OGwtMTggLTExMDFjMCwtMTEgMywtMjIgOCwtMzFsOTAgLTE0OGMxMywtMjEgMzgsLTMyIDYyLC0yNyA4NiwxOCAxNzksMjggMjc2LDI4IDE3MywwIDMwMCwtMzAgMzAxLC0zMCAyNiwtNiA1NCw2IDY2LDMwbDc4IDE1NWM0LDggNiwxNyA2LDI2bDAgMTExMGMwLDI0IC0xNSw0NiAtMzcsNTQgLTEzNiw1MiAtMjcxLDc4IC00MDIsNzh6Ii8+DQogIDxwYXRoIGNsYXNzPSJmaWwwIiBkPSJNMzc1NyAyNzc3YzAsMCAtMjgxLC03NSAtNTc2LDJsNTc2IC0yeiIvPg0KICA8cGF0aCBjbGFzcz0iZmlsMCIgZD0iTTMxODAgMjgzN2MtMjYsMCAtNDksLTE3IC01NiwtNDMgLTgsLTMxIDEwLC02MyA0MiwtNzEgMzA3LC04MCA1OTQsLTYgNjA2LC0yIDMxLDggNDksNDAgNDEsNzEgLTgsMzEgLTQwLDQ5IC03MSw0MSAtMywtMSAtMjcwLC03MCAtNTQ2LDIgLTUsMSAtMTAsMiAtMTUsMnoiLz4NCiAgPHBhdGggY2xhc3M9ImZpbDAiIGQ9Ik0zNzQ4IDQwODZsLTQyIDkyYzAsMCAtMTk2LDYwIC00ODcsLTExbC00MCAtODVjMCwwIDMwNCw5NCA1NjgsNXoiLz4NCiAgPHBhdGggY2xhc3M9ImZpbDAiIGQ9Ik0zNTAwIDQyNjBjLTk2LDAgLTE5NSwtMTIgLTI5NCwtMzcgLTE3LC00IC0zMSwtMTYgLTM5LC0zMmwtNDAgLTg1Yy0xMCwtMjEgLTYsLTQ1IDksLTYzIDE1LC0xNyAzOSwtMjQgNjEsLTE3IDEsMCAxMzQsNDEgMjk0LDQxIDg4LDAgMTY4LC0xMiAyMzcsLTM2IDIyLC03IDQ2LC0xIDYyLDE2IDE2LDE3IDE5LDQyIDEwLDYzbC00MiA5MmMtNywxNSAtMjAsMjcgLTM2LDMyIC0zLDEgLTg3LDI2IC0yMjQsMjZ6Ii8+DQogIDxwYXRoIGNsYXNzPSJmaWwwIiBkPSJNMzQ2MSAzMTAxYy0xMTksMCAtMjYxLC0xNSAtNDE5LC02MCAtMzEsLTkgLTQ5LC00MSAtNDAsLTcyIDksLTMxIDQxLC00OSA3MiwtNDAgNDMyLDEyMyA3MjksMyA3MzIsMiAzMCwtMTIgNjQsMiA3NiwzMSAxMiwzMCAtMiw2NCAtMzEsNzYgLTksNCAtMTU1LDYzIC0zODksNjN6Ii8+DQogIDxwYXRoIGNsYXNzPSJmaWwwIiBkPSJNMTU3NCA0MTQ4bDQyOCA5MiA2MzcgLTE0OSAwIC0xODg3IC02MzggMTE1Yy03LDEgLTEzLDEgLTIwLDBsLTQwNyAtNjkgMCAxODk5em00MjggMjA5Yy00LDAgLTgsMCAtMTIsLTFsLTQ4NiAtMTA0Yy0yNywtNiAtNDYsLTI5IC00NiwtNTdsMCAtMjAxNWMwLC0xNyA4LC0zMyAyMSwtNDQgMTMsLTExIDMwLC0xNiA0NywtMTNsNDY1IDc5IDY5NiAtMTI2YzE3LC0zIDM0LDIgNDgsMTMgMTMsMTEgMjEsMjcgMjEsNDVsMCAyMDAzYzAsMjcgLTE5LDUxIC00NSw1N2wtNjk1IDE2MmMtNCwxIC05LDIgLTEzLDJ6Ii8+DQogIDxwYXRoIGNsYXNzPSJmaWwwIiBkPSJNMTUxNSAyMjM4Yy0yOCwwIC01MiwtMjAgLTU3LC00OCAtNiwtMzIgMTUsLTYyIDQ3LC02OGw2ODggLTEyM2M2LC0xIDEyLC0xIDE4LDBsNDgwIDY5YzMyLDUgNTQsMzQgNDksNjYgLTUsMzIgLTM0LDU0IC02Niw0OWwtNDcxIC02NyAtNjc5IDEyMWMtMywxIC03LDEgLTEwLDF6Ii8+DQogIDxwb2x5Z29uIGNsYXNzPSJmaWwwIiBwb2ludHM9IjE5MzIsNDI5OSAyMDQ4LDQyOTkgMjA0OCwyMjYxIDE5MzIsMjI2MSAiLz4NCiA8L2c+DQo8L3N2Zz4NCg==',
'restafval': 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8IS0tIENyZWF0b3I6IENvcmVsRFJBVyBYNiAtLT4NCjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWw6c3BhY2U9InByZXNlcnZlIiB3aWR0aD0iNS4zMzMzM2luIiBoZWlnaHQ9IjUuMzMzMzNpbiIgdmVyc2lvbj0iMS4xIiBzdHlsZT0ic2hhcGUtcmVuZGVyaW5nOmdlb21ldHJpY1ByZWNpc2lvbjsgdGV4dC1yZW5kZXJpbmc6Z2VvbWV0cmljUHJlY2lzaW9uOyBpbWFnZS1yZW5kZXJpbmc6b3B0aW1pemVRdWFsaXR5OyBmaWxsLXJ1bGU6ZXZlbm9kZDsgY2xpcC1ydWxlOmV2ZW5vZGQiDQp2aWV3Qm94PSIwIDAgNTMzMyA1MzMzIg0KIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4NCiA8ZGVmcz4NCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCiAgIDwhW0NEQVRBWw0KICAgIC5zdHIwIHtzdHJva2U6IzIzMUYyMDtzdHJva2Utd2lkdGg6MTExLjExfQ0KICAgIC5maWwwIHtmaWxsOm5vbmU7ZmlsbC1ydWxlOm5vbnplcm99DQogICBdXT4NCiAgPC9zdHlsZT4NCiA8L2RlZnM+DQogPGcgaWQ9IkxheWVyX3gwMDIwXzEiPg0KICA8bWV0YWRhdGEgaWQ9IkNvcmVsQ29ycElEXzBDb3JlbC1MYXllciIvPg0KICA8cGF0aCBjbGFzcz0iZmlsMCBzdHIwIiBkPSJNNDUyNCA0MjQxYzQ4LC0zOTggMTksLTU1OCAtMTM4LC04MDMgLTE1NiwtMjQ1IC0xMDczLC0xMzEyIC0xMDczLC0xMzEybDM5MSAxMDA5IC01MjYgLTg0NiAtMjAzIDExMzUgLTExIC0xMTU0IC05MDEgNDMyIDk1MSAtNjQxIDMzOSA3NCAxMDEzIC01NDIgLTY5NSAtMTU2IC0yNzcgNDc3IDg3IC0xMDMzIC02ODkgNjAxIDEzNyAtMjM3IC01OTYgLTMwOSA0NTEgOTQzIC0xOTc0IDkyMyAtMjE3IDUyMyAyMTYgNTIwIC0xNjEgLTY3IC0xNTEgMzQwbTM5ODMgNDIxYzIwLC0xMjcgMzUsLTIzMSA0MywtMjk5Ii8+DQogIDxwYXRoIGNsYXNzPSJmaWwwIHN0cjAiIGQ9Ik01Mjc1IDI2NjVjMCwxNDQxIC0xMTY4LDI2MTAgLTI2MTAsMjYxMCAtMTQ0MSwwIC0yNjEwLC0xMTY4IC0yNjEwLC0yNjEwIDAsLTE0NDEgMTE2OCwtMjYxMCAyNjEwLC0yNjEwIDE0NDEsMCAyNjEwLDExNjggMjYxMCwyNjEwem0wIDB6Ii8+DQogPC9nPg0KPC9zdmc+DQo=',
}
COLLECTOR_WASTE_ID = {}
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
vol.Required(CONF_RESOURCES, default=[]): cv.ensure_list,
vol.Required(CONF_POSTCODE, default='1111AA'): cv.string,
vol.Required(CONF_STREET_NUMBER, default='1'): cv.string,
vol.Optional(CONF_WASTE_COLLECTOR, default='Cure'): cv.string,
vol.Optional(CONF_DATE_FORMAT, default='%d-%m-%Y'): cv.string,
vol.Optional(CONF_TODAY_TOMORROW, default=False): cv.boolean,
vol.Optional(CONF_DATE_ONLY, default=False): cv.boolean,
vol.Optional(CONF_NAME_PREFIX, default=True): cv.boolean,
vol.Optional(CONF_BUILT_IN_ICONS, default=False): cv.boolean,
})
def setup_platform(hass, config, add_entities, discovery_info=None):
_LOGGER.debug('Setup Rest API retriever')
postcode = config.get(CONF_POSTCODE)
street_number = config.get(CONF_STREET_NUMBER)
waste_collector = config.get(CONF_WASTE_COLLECTOR).lower()
date_format = config.get(CONF_DATE_FORMAT)
sensor_today = config.get(CONF_TODAY_TOMORROW)
date_only = config.get(CONF_DATE_ONLY)
name_prefix = config.get(CONF_NAME_PREFIX)
built_in_icons = config.get(CONF_BUILT_IN_ICONS)
try:
["first", "latest", "all"]
),
}
)
CONFIG_SCHEMA = vol.Schema(
{
DOMAIN: vol.Schema(
{
vol.Required(CONF_HOST): cv.string,
vol.Required(CONF_USERNAME): cv.string,
vol.Exclusive(CONF_API_KEY, "auth"): cv.string,
vol.Exclusive(CONF_PASSWORD, "auth"): cv.string,
vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port,
vol.Optional(CONF_URLBASE, default=DEFAULT_URLBASE): urlbase,
vol.Optional(CONF_SSL, default=DEFAULT_SSL): cv.boolean,
},
cv.has_at_least_one_key("auth"),
)
},
extra=vol.ALLOW_EXTRA,
)
def setup(hass, config):
"""Set up the Ombi component platform."""
ombi = pyombi.Ombi(
ssl=config[DOMAIN][CONF_SSL],
host=config[DOMAIN][CONF_HOST],
port=config[DOMAIN][CONF_PORT],
urlbase=config[DOMAIN][CONF_URLBASE],
__version__ = '0.2.3'
_LOGGER = logging.getLogger(__name__)
CONF_DAYS = 'days'
CONF_URLBASE = 'urlbase'
CONF_THEATERS = 'theaters'
CONF_MAX = 'max'
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
vol.Required(CONF_API_KEY): cv.string,
vol.Optional(CONF_DAYS, default='60'): cv.string,
vol.Optional(CONF_HOST, default='localhost'): cv.string,
vol.Optional(CONF_PORT, default=7878): cv.port,
vol.Optional(CONF_SSL, default=False): cv.boolean,
vol.Optional(CONF_URLBASE, default=''): cv.string,
vol.Optional(CONF_THEATERS, default=True): cv.boolean,
vol.Optional(CONF_MAX, default=5): cv.string,
})
def setup_platform(hass, config, add_devices, discovery_info=None):
add_devices([RadarrUpcomingMediaSensor(hass, config)], True)
class RadarrUpcomingMediaSensor(Entity):
def __init__(self, hass, conf):
from pytz import timezone
self._tz = timezone(str(hass.config.time_zone))
self.now = str(get_date(self._tz))
SERVICE_ALEXA_TTS = 'alexa_tts'
ATTR_MESSAGE = 'message'
ALEXA_TTS_SCHEMA = MEDIA_PLAYER_SCHEMA.extend({
vol.Required(ATTR_MESSAGE): cv.string,
})
CONF_DEBUG = 'debug'
CONF_INCLUDE_DEVICES = 'include_devices'
CONF_EXCLUDE_DEVICES = 'exclude_devices'
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
vol.Required(CONF_EMAIL): cv.string,
vol.Required(CONF_PASSWORD): cv.string,
vol.Required(CONF_URL): cv.string,
vol.Optional(CONF_DEBUG, default=False): cv.boolean,
vol.Optional(CONF_INCLUDE_DEVICES, default=[]):
vol.All(cv.ensure_list, [cv.string]),
vol.Optional(CONF_EXCLUDE_DEVICES, default=[]):
vol.All(cv.ensure_list, [cv.string]),
})
def request_configuration(hass, config, setup_platform_callback,
status=None):
"""Request configuration steps from the user."""
configurator = hass.components.configurator
async def configuration_callback(callback_data):
"""Handle the submitted configuration."""
hass.async_add_job(setup_platform_callback, callback_data)
DEFAULT_NAME = 'HA Dockermon'
CONTAINTER_NAME = '{} {}'
CONF_CONTAINERS = 'containers'
ATTR_CONTAINER = 'container'
ATTR_STATUS = 'status'
ATTR_IMAGE = 'image'
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
vol.Required(CONF_HOST): cv.string,
vol.Required(CONF_PORT, default=8126): cv.port,
vol.Optional(CONF_NAME): cv.string,
vol.Optional(CONF_USERNAME): cv.string,
vol.Optional(CONF_PASSWORD): cv.string,
vol.Optional(CONF_SSL, default=False): cv.boolean,
vol.Optional(CONF_VERIFY_SSL, default=False): cv.boolean,
vol.Optional(CONF_CONTAINERS, default=None):
vol.All(cv.ensure_list, [cv.string]),
})
async def async_setup_platform(hass, config, async_add_entities,
discovery_info=None):
"""Set up the device."""
from pydockermon.api import API
host = config[CONF_HOST]
port = config[CONF_PORT]
username = config.get(CONF_USERNAME)
password = config.get(CONF_PASSWORD)
ssl = config[CONF_SSL]
ATTR_USER = "username"
SCAN_INTERVAL = timedelta(minutes=1)
PLATFORM_NAME = "authenticated"
LOGFILE = "home-assistant.log"
OUTFILE = ".ip_authenticated.yaml"
PROVIDERS = ["ipapi", "extreme", "ipvigilante"]
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
{
vol.Optional(CONF_PROVIDER, default="ipapi"): vol.In(PROVIDERS),
vol.Optional(CONF_LOG_LOCATION, default=""): cv.string,
vol.Optional(CONF_NOTIFY, default=True): cv.boolean,
vol.Optional(CONF_EXCLUDE, default=[]): vol.All(cv.ensure_list, [cv.string]),
}
)
PROVIDERS = {}
def register_provider(classname):
"""Decorator used to register providers."""
PROVIDERS[classname.name] = classname
return classname
def setup_platform(hass, config, add_devices, discovery_info=None):
"""Create the sensor"""
notify = config.get(CONF_NOTIFY)
):
cleaning = self._templates[
CONF_CLEANING_TEMPLATE
].async_render_with_possible_json_value(msg.payload, error_value=None)
if cleaning:
self._cleaning = cv.boolean(cleaning)
if (
msg.topic == self._state_topics[CONF_DOCKED_TOPIC]
and self._templates[CONF_DOCKED_TEMPLATE]
):
docked = self._templates[
CONF_DOCKED_TEMPLATE
].async_render_with_possible_json_value(msg.payload, error_value=None)
if docked:
self._docked = cv.boolean(docked)
if (
msg.topic == self._state_topics[CONF_ERROR_TOPIC]
and self._templates[CONF_ERROR_TEMPLATE]
):
error = self._templates[
CONF_ERROR_TEMPLATE
].async_render_with_possible_json_value(msg.payload, error_value=None)
if error is not None:
self._error = cv.string(error)
if self._docked:
if self._charging:
self._status = "Docked & Charging"
else:
self._status = "Docked"
'download_rate': ['DownloadRate', 'Speed', 'MB/s'],
'download_size': ['DownloadedSizeMB', 'Size', 'MB'],
'free_disk_space': ['FreeDiskSpaceMB', 'Disk Free', 'MB'],
'post_paused': ['PostPaused', 'Post Processing Paused', None],
'remaining_size': ['RemainingSizeMB', 'Queue Size', 'MB'],
'uptime': ['UpTimeSec', 'Uptime', 'min'],
}
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
vol.Required(CONF_HOST): cv.string,
vol.Optional(CONF_MONITORED_VARIABLES, default=['download_rate']):
vol.All(cv.ensure_list, [vol.In(SENSOR_TYPES)]),
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
vol.Optional(CONF_PASSWORD): cv.string,
vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port,
vol.Optional(CONF_SSL, default=False): cv.boolean,
vol.Optional(CONF_USERNAME): cv.string,
})
def setup_platform(hass, config, add_entities, discovery_info=None):
"""Set up the NZBGet sensors."""
host = config.get(CONF_HOST)
port = config.get(CONF_PORT)
ssl = 's' if config.get(CONF_SSL) else ''
name = config.get(CONF_NAME)
username = config.get(CONF_USERNAME)
password = config.get(CONF_PASSWORD)
monitored_types = config.get(CONF_MONITORED_VARIABLES)
url = "http{}://{}:{}/jsonrpc".format(ssl, host, port)
CONFIG_SCHEMA = vol.Schema(
{
DOMAIN: vol.All(
ensure_list,
[
vol.Schema(
{
vol.Required(CONF_ADDRESS): cv.string,
vol.Required(CONF_IDENTIFIER): cv.string,
vol.Required(CONF_PROTOCOL): vol.In(
[PROTOCOL_DMAP, PROTOCOL_MRP]
),
vol.Required(CONF_CREDENTIALS): CREDENTIALS_SCHEMA,
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
vol.Optional(CONF_START_OFF, default=False): cv.boolean,
}
)
],
)
},
extra=vol.ALLOW_EXTRA,
)
async def async_setup(hass, config):
"""Set up the Apple TV integration."""
if DOMAIN not in config:
return True
for conf in config[DOMAIN]:
hass.async_create_task(