50 lines
1.7 KiB
Python
50 lines
1.7 KiB
Python
"""
|
|
Support for Nest Thermostat Binary Sensors.
|
|
|
|
For more details about this platform, please refer to the documentation at
|
|
https://home-assistant.io/components/binary_sensor.nest/
|
|
"""
|
|
import voluptuous as vol
|
|
|
|
from homeassistant.components.binary_sensor import (
|
|
BinarySensorDevice, PLATFORM_SCHEMA)
|
|
from homeassistant.components.sensor.nest import NestSensor
|
|
from homeassistant.const import (CONF_SCAN_INTERVAL, CONF_MONITORED_CONDITIONS)
|
|
import homeassistant.components.nest as nest
|
|
import homeassistant.helpers.config_validation as cv
|
|
|
|
DEPENDENCIES = ['nest']
|
|
BINARY_TYPES = ['fan',
|
|
'hvac_ac_state',
|
|
'hvac_aux_heater_state',
|
|
'hvac_heater_state',
|
|
'hvac_heat_x2_state',
|
|
'hvac_heat_x3_state',
|
|
'hvac_alt_heat_state',
|
|
'hvac_alt_heat_x2_state',
|
|
'hvac_emer_heat_state',
|
|
'online']
|
|
|
|
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
|
vol.Optional(CONF_SCAN_INTERVAL):
|
|
vol.All(vol.Coerce(int), vol.Range(min=1)),
|
|
vol.Required(CONF_MONITORED_CONDITIONS):
|
|
vol.All(cv.ensure_list, [vol.In(BINARY_TYPES)]),
|
|
})
|
|
|
|
|
|
def setup_platform(hass, config, add_devices, discovery_info=None):
|
|
"""Setup Nest binary sensors."""
|
|
for structure, device in nest.devices():
|
|
add_devices([NestBinarySensor(structure, device, variable)
|
|
for variable in config[CONF_MONITORED_CONDITIONS]])
|
|
|
|
|
|
class NestBinarySensor(NestSensor, BinarySensorDevice):
|
|
"""Represents a Nest binary sensor."""
|
|
|
|
@property
|
|
def is_on(self):
|
|
"""True if the binary sensor is on."""
|
|
return bool(getattr(self.device, self.variable))
|