-
Notifications
You must be signed in to change notification settings - Fork 0
/
binary_sensor.py
70 lines (52 loc) · 2.07 KB
/
binary_sensor.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
"""
Gardena smart sensor which registeres a couple of sensors.
@ todo something with documentation
"""
import logging
from datetime import timedelta
from homeassistant.components.binary_sensor import BinarySensorDevice
from custom_components.gardena import (GARDENA_SENSORS, GARDENA_WATERING_COMPUTERS, GARDENA_LOGIN)
_LOGGER = logging.getLogger(__name__)
DEPENDENCIES = ['gardena']
SCAN_INTERVAL = timedelta(minutes=5)
NO_FROST = 'no_frost'
def setup_platform(hass, config, add_entities, discovery_info=None):
"""Set up the Demo sensors."""
dev = []
for sensor in hass.data[GARDENA_SENSORS]:
dev.append(GardenaSmartFrostWarningSensor(hass, sensor))
for watering_computer in hass.data[GARDENA_WATERING_COMPUTERS]:
dev.append(GardenaSmartFrostWarningSensor(hass, watering_computer))
_LOGGER.debug("Adding gardena sensors as binarysensors %s", dev)
add_entities(dev, True)
class GardenaSmartBinarySensor(BinarySensorDevice):
"""Representation of a Demo sensor."""
def __init__(self, hass, sensor):
"""Initialize the sensor."""
self._sensor = sensor
self.gardena = hass.data[GARDENA_LOGIN]
def update(self):
"""Update the states of Gardena devices."""
_LOGGER.debug("Running Gardena update")
self.gardena.update_devices() # is a throttled update
@property
def device_class(self):
"""Return the device class of the sensor."""
return self._device_class
@property
def name(self):
"""Return the name of the sensor."""
return self._name
@property
def device_state_attributes(self):
"""Return the state attributes."""
return self._sensor.get_generic_info()
class GardenaSmartFrostWarningSensor(GardenaSmartBinarySensor):
def __init__(self, hass, sensor):
"""Initialize the sensor."""
super().__init__(hass, sensor)
self._name = sensor.name + ' ambient frost warning'
self._device_class = 'cold'
@property
def is_on(self):
return self._sensor.get_ambient_frost_warning() != NO_FROST