mirror of
https://github.com/home-assistant/core.git
synced 2025-07-17 10:17:09 +00:00
sensor.envirophat: do not set up platform if hardware is not attached (#7438)
* sensor.envirophat: do not set up platform if hardware is not attached Fixes comment from: https://github.com/home-assistant/home-assistant/pull/7427#discussion_r114703904 * Fix update logic.
This commit is contained in:
parent
f4915ddb0b
commit
1312ee0f7d
@ -54,7 +54,13 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
|
|||||||
|
|
||||||
def setup_platform(hass, config, add_devices, discovery_info=None):
|
def setup_platform(hass, config, add_devices, discovery_info=None):
|
||||||
"""Set up the Sense HAT sensor platform."""
|
"""Set up the Sense HAT sensor platform."""
|
||||||
data = EnvirophatData(config.get(CONF_USE_LEDS))
|
try:
|
||||||
|
import envirophat
|
||||||
|
except OSError:
|
||||||
|
_LOGGER.error("No Enviro pHAT was found.")
|
||||||
|
return False
|
||||||
|
|
||||||
|
data = EnvirophatData(envirophat, config.get(CONF_USE_LEDS))
|
||||||
|
|
||||||
dev = []
|
dev = []
|
||||||
for variable in config[CONF_DISPLAY_OPTIONS]:
|
for variable in config[CONF_DISPLAY_OPTIONS]:
|
||||||
@ -97,9 +103,6 @@ class EnvirophatSensor(Entity):
|
|||||||
def update(self):
|
def update(self):
|
||||||
"""Get the latest data and updates the states."""
|
"""Get the latest data and updates the states."""
|
||||||
self.data.update()
|
self.data.update()
|
||||||
if not self.data.light:
|
|
||||||
_LOGGER.error("Didn't receive data")
|
|
||||||
return
|
|
||||||
|
|
||||||
if self.type == 'light':
|
if self.type == 'light':
|
||||||
self._state = self.data.light
|
self._state = self.data.light
|
||||||
@ -138,8 +141,9 @@ class EnvirophatSensor(Entity):
|
|||||||
class EnvirophatData(object):
|
class EnvirophatData(object):
|
||||||
"""Get the latest data and update."""
|
"""Get the latest data and update."""
|
||||||
|
|
||||||
def __init__(self, use_leds):
|
def __init__(self, envirophat, use_leds):
|
||||||
"""Initialize the data object."""
|
"""Initialize the data object."""
|
||||||
|
self.envirophat = envirophat
|
||||||
self.use_leds = use_leds
|
self.use_leds = use_leds
|
||||||
# sensors readings
|
# sensors readings
|
||||||
self.light = None
|
self.light = None
|
||||||
@ -162,34 +166,32 @@ class EnvirophatData(object):
|
|||||||
@Throttle(MIN_TIME_BETWEEN_UPDATES)
|
@Throttle(MIN_TIME_BETWEEN_UPDATES)
|
||||||
def update(self):
|
def update(self):
|
||||||
"""Get the latest data from Enviro pHAT."""
|
"""Get the latest data from Enviro pHAT."""
|
||||||
from envirophat import analog, leds, light, motion, weather
|
|
||||||
|
|
||||||
# Light sensor reading: 16-bit integer
|
# Light sensor reading: 16-bit integer
|
||||||
self.light = light.light()
|
self.light = self.envirophat.light.light()
|
||||||
if self.use_leds:
|
if self.use_leds:
|
||||||
# pylint: disable=no-value-for-parameter
|
self.envirophat.leds.on()
|
||||||
leds.on()
|
|
||||||
# the three color values scaled agains the overall light, 0-255
|
# the three color values scaled agains the overall light, 0-255
|
||||||
self.light_red, self.light_green, self.light_blue = light.rgb()
|
self.light_red, self.light_green, self.light_blue = \
|
||||||
|
self.envirophat.light.rgb()
|
||||||
if self.use_leds:
|
if self.use_leds:
|
||||||
# pylint: disable=no-value-for-parameter
|
# pylint: disable=no-value-for-parameter
|
||||||
leds.off()
|
self.envirophat.leds.off()
|
||||||
|
|
||||||
# accelerometer readings in G
|
# accelerometer readings in G
|
||||||
self.accelerometer_x, self.accelerometer_y, self.accelerometer_z = \
|
self.accelerometer_x, self.accelerometer_y, self.accelerometer_z = \
|
||||||
motion.accelerometer()
|
self.envirophat.motion.accelerometer()
|
||||||
|
|
||||||
# raw magnetometer reading
|
# raw magnetometer reading
|
||||||
self.magnetometer_x, self.magnetometer_y, self.magnetometer_z = \
|
self.magnetometer_x, self.magnetometer_y, self.magnetometer_z = \
|
||||||
motion.magnetometer()
|
self.envirophat.motion.magnetometer()
|
||||||
|
|
||||||
# temperature resolution of BMP280 sensor: 0.01°C
|
# temperature resolution of BMP280 sensor: 0.01°C
|
||||||
self.temperature = round(weather.temperature(), 2)
|
self.temperature = round(self.envirophat.weather.temperature(), 2)
|
||||||
|
|
||||||
# pressure resolution of BMP280 sensor: 0.16 Pa, rounding to 0.1 Pa
|
# pressure resolution of BMP280 sensor: 0.16 Pa, rounding to 0.1 Pa
|
||||||
# with conversion to 100 Pa = 1 hPa
|
# with conversion to 100 Pa = 1 hPa
|
||||||
self.pressure = round(weather.pressure() / 100.0, 3)
|
self.pressure = round(self.envirophat.weather.pressure() / 100.0, 3)
|
||||||
|
|
||||||
# Voltage sensor, reading between 0-3.3V
|
# Voltage sensor, reading between 0-3.3V
|
||||||
self.voltage_0, self.voltage_1, self.voltage_2, self.voltage_3 = \
|
self.voltage_0, self.voltage_1, self.voltage_2, self.voltage_3 = \
|
||||||
analog.read_all()
|
self.envirophat.analog.read_all()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user