Use async_render_* and fix config validation (#3847)
parent
c663d85129
commit
d873a7baf0
|
@ -5,7 +5,6 @@ For more details about this platform, please refer to the documentation at
|
||||||
https://home-assistant.io/components/binary_sensor.rest/
|
https://home-assistant.io/components/binary_sensor.rest/
|
||||||
"""
|
"""
|
||||||
import logging
|
import logging
|
||||||
import json
|
|
||||||
|
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
from requests.auth import HTTPBasicAuth, HTTPDigestAuth
|
from requests.auth import HTTPBasicAuth, HTTPDigestAuth
|
||||||
|
@ -30,7 +29,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
||||||
vol.Required(CONF_RESOURCE): cv.url,
|
vol.Required(CONF_RESOURCE): cv.url,
|
||||||
vol.Optional(CONF_AUTHENTICATION):
|
vol.Optional(CONF_AUTHENTICATION):
|
||||||
vol.In([HTTP_BASIC_AUTHENTICATION, HTTP_DIGEST_AUTHENTICATION]),
|
vol.In([HTTP_BASIC_AUTHENTICATION, HTTP_DIGEST_AUTHENTICATION]),
|
||||||
vol.Optional(CONF_HEADERS): cv.string,
|
vol.Optional(CONF_HEADERS): {cv.string: cv.string},
|
||||||
vol.Optional(CONF_METHOD, default=DEFAULT_METHOD): vol.In(['POST', 'GET']),
|
vol.Optional(CONF_METHOD, default=DEFAULT_METHOD): vol.In(['POST', 'GET']),
|
||||||
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
|
||||||
vol.Optional(CONF_PASSWORD): cv.string,
|
vol.Optional(CONF_PASSWORD): cv.string,
|
||||||
|
@ -52,7 +51,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
|
||||||
verify_ssl = config.get(CONF_VERIFY_SSL)
|
verify_ssl = config.get(CONF_VERIFY_SSL)
|
||||||
username = config.get(CONF_USERNAME)
|
username = config.get(CONF_USERNAME)
|
||||||
password = config.get(CONF_PASSWORD)
|
password = config.get(CONF_PASSWORD)
|
||||||
headers = json.loads(config.get(CONF_HEADERS, '{}'))
|
headers = config.get(CONF_HEADERS)
|
||||||
sensor_class = config.get(CONF_SENSOR_CLASS)
|
sensor_class = config.get(CONF_SENSOR_CLASS)
|
||||||
value_template = config.get(CONF_VALUE_TEMPLATE)
|
value_template = config.get(CONF_VALUE_TEMPLATE)
|
||||||
if value_template is not None:
|
if value_template is not None:
|
||||||
|
@ -70,7 +69,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
|
||||||
rest.update()
|
rest.update()
|
||||||
|
|
||||||
if rest.data is None:
|
if rest.data is None:
|
||||||
_LOGGER.error('Unable to fetch REST data')
|
_LOGGER.error("Unable to fetch REST data from %s", resource)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
add_devices([RestBinarySensor(
|
add_devices([RestBinarySensor(
|
||||||
|
@ -109,8 +108,8 @@ class RestBinarySensor(BinarySensorDevice):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
if self._value_template is not None:
|
if self._value_template is not None:
|
||||||
response = self._value_template.render_with_possible_json_value(
|
response = self._value_template.\
|
||||||
self.rest.data, False)
|
async_render_with_possible_json_value(self.rest.data, False)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return bool(int(response))
|
return bool(int(response))
|
||||||
|
|
Loading…
Reference in New Issue