mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 13:17:32 +00:00
commit
7cbb818dc3
@ -13,6 +13,7 @@ LABEL maintainer="Paulus Schoutsen <Paulus@PaulusSchoutsen.nl>"
|
|||||||
#ENV INSTALL_SSOCR no
|
#ENV INSTALL_SSOCR no
|
||||||
#ENV INSTALL_DLIB no
|
#ENV INSTALL_DLIB no
|
||||||
#ENV INSTALL_IPERF3 no
|
#ENV INSTALL_IPERF3 no
|
||||||
|
#ENV INSTALL_LOCALES no
|
||||||
|
|
||||||
VOLUME /config
|
VOLUME /config
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
"name": "Cisco mobility express",
|
"name": "Cisco mobility express",
|
||||||
"documentation": "https://www.home-assistant.io/components/cisco_mobility_express",
|
"documentation": "https://www.home-assistant.io/components/cisco_mobility_express",
|
||||||
"requirements": [
|
"requirements": [
|
||||||
"ciscomobilityexpress==0.3.1"
|
"ciscomobilityexpress==0.3.3"
|
||||||
],
|
],
|
||||||
"dependencies": [],
|
"dependencies": [],
|
||||||
"codeowners": ["@fbradyirl"]
|
"codeowners": ["@fbradyirl"]
|
||||||
|
@ -63,12 +63,12 @@ class DeconzGateway:
|
|||||||
@property
|
@property
|
||||||
def allow_clip_sensor(self) -> bool:
|
def allow_clip_sensor(self) -> bool:
|
||||||
"""Allow loading clip sensor from gateway."""
|
"""Allow loading clip sensor from gateway."""
|
||||||
return self.config_entry.data.get(CONF_ALLOW_CLIP_SENSOR, True)
|
return self.config_entry.options.get(CONF_ALLOW_CLIP_SENSOR, True)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def allow_deconz_groups(self) -> bool:
|
def allow_deconz_groups(self) -> bool:
|
||||||
"""Allow loading deCONZ groups from gateway."""
|
"""Allow loading deCONZ groups from gateway."""
|
||||||
return self.config_entry.data.get(CONF_ALLOW_DECONZ_GROUPS, True)
|
return self.config_entry.options.get(CONF_ALLOW_DECONZ_GROUPS, True)
|
||||||
|
|
||||||
async def async_update_device_registry(self):
|
async def async_update_device_registry(self):
|
||||||
"""Update device registry."""
|
"""Update device registry."""
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"domain": "haveibeenpwned",
|
"domain": "haveibeenpwned",
|
||||||
"name": "Haveibeenpwned",
|
"name": "Haveibeenpwned",
|
||||||
"documentation": "https://www.home-assistant.io/components/haveibeenpwned",
|
"documentation": "https://www.home-assistant.io/components/haveibeenpwned",
|
||||||
"requirements": [],
|
"requirements": [],
|
||||||
"dependencies": [],
|
"dependencies": [],
|
||||||
"codeowners": []
|
"codeowners": []
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@ import requests
|
|||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
|
|
||||||
from homeassistant.components.sensor import PLATFORM_SCHEMA
|
from homeassistant.components.sensor import PLATFORM_SCHEMA
|
||||||
from homeassistant.const import CONF_EMAIL, ATTR_ATTRIBUTION
|
from homeassistant.const import CONF_EMAIL, CONF_API_KEY, ATTR_ATTRIBUTION
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
from homeassistant.helpers.entity import Entity
|
from homeassistant.helpers.entity import Entity
|
||||||
from homeassistant.helpers.event import track_point_in_time
|
from homeassistant.helpers.event import track_point_in_time
|
||||||
@ -25,17 +25,21 @@ HA_USER_AGENT = "Home Assistant HaveIBeenPwned Sensor Component"
|
|||||||
MIN_TIME_BETWEEN_FORCED_UPDATES = timedelta(seconds=5)
|
MIN_TIME_BETWEEN_FORCED_UPDATES = timedelta(seconds=5)
|
||||||
MIN_TIME_BETWEEN_UPDATES = timedelta(minutes=15)
|
MIN_TIME_BETWEEN_UPDATES = timedelta(minutes=15)
|
||||||
|
|
||||||
URL = "https://haveibeenpwned.com/api/v2/breachedaccount/"
|
URL = "https://haveibeenpwned.com/api/v3/breachedaccount/"
|
||||||
|
|
||||||
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
|
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
|
||||||
{vol.Required(CONF_EMAIL): vol.All(cv.ensure_list, [cv.string])}
|
{
|
||||||
|
vol.Required(CONF_EMAIL): vol.All(cv.ensure_list, [cv.string]),
|
||||||
|
vol.Required(CONF_API_KEY): cv.string,
|
||||||
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def setup_platform(hass, config, add_entities, discovery_info=None):
|
def setup_platform(hass, config, add_entities, discovery_info=None):
|
||||||
"""Set up the HaveIBeenPwned sensor."""
|
"""Set up the HaveIBeenPwned sensor."""
|
||||||
emails = config.get(CONF_EMAIL)
|
emails = config.get(CONF_EMAIL)
|
||||||
data = HaveIBeenPwnedData(emails)
|
api_key = config[CONF_API_KEY]
|
||||||
|
data = HaveIBeenPwnedData(emails, api_key)
|
||||||
|
|
||||||
devices = []
|
devices = []
|
||||||
for email in emails:
|
for email in emails:
|
||||||
@ -125,13 +129,14 @@ class HaveIBeenPwnedSensor(Entity):
|
|||||||
class HaveIBeenPwnedData:
|
class HaveIBeenPwnedData:
|
||||||
"""Class for handling the data retrieval."""
|
"""Class for handling the data retrieval."""
|
||||||
|
|
||||||
def __init__(self, emails):
|
def __init__(self, emails, api_key):
|
||||||
"""Initialize the data object."""
|
"""Initialize the data object."""
|
||||||
self._email_count = len(emails)
|
self._email_count = len(emails)
|
||||||
self._current_index = 0
|
self._current_index = 0
|
||||||
self.data = {}
|
self.data = {}
|
||||||
self._email = emails[0]
|
self._email = emails[0]
|
||||||
self._emails = emails
|
self._emails = emails
|
||||||
|
self._api_key = api_key
|
||||||
|
|
||||||
def set_next_email(self):
|
def set_next_email(self):
|
||||||
"""Set the next email to be looked up."""
|
"""Set the next email to be looked up."""
|
||||||
@ -146,16 +151,10 @@ class HaveIBeenPwnedData:
|
|||||||
def update(self, **kwargs):
|
def update(self, **kwargs):
|
||||||
"""Get the latest data for current email from REST service."""
|
"""Get the latest data for current email from REST service."""
|
||||||
try:
|
try:
|
||||||
url = "{}{}".format(URL, self._email)
|
url = "{}{}?truncateResponse=false".format(URL, self._email)
|
||||||
|
header = {USER_AGENT: HA_USER_AGENT, "hibp-api-key": self._api_key}
|
||||||
_LOGGER.debug("Checking for breaches for email: %s", self._email)
|
_LOGGER.debug("Checking for breaches for email: %s", self._email)
|
||||||
|
req = requests.get(url, headers=header, allow_redirects=True, timeout=5)
|
||||||
req = requests.get(
|
|
||||||
url,
|
|
||||||
headers={USER_AGENT: HA_USER_AGENT},
|
|
||||||
allow_redirects=True,
|
|
||||||
timeout=5,
|
|
||||||
)
|
|
||||||
|
|
||||||
except requests.exceptions.RequestException:
|
except requests.exceptions.RequestException:
|
||||||
_LOGGER.error("Failed fetching data for %s", self._email)
|
_LOGGER.error("Failed fetching data for %s", self._email)
|
||||||
|
@ -133,7 +133,9 @@ class SmartThingsLight(SmartThingsEntity, Light):
|
|||||||
"""Update entity attributes when the device status has changed."""
|
"""Update entity attributes when the device status has changed."""
|
||||||
# Brightness and transition
|
# Brightness and transition
|
||||||
if self._supported_features & SUPPORT_BRIGHTNESS:
|
if self._supported_features & SUPPORT_BRIGHTNESS:
|
||||||
self._brightness = convert_scale(self._device.status.level, 100, 255)
|
self._brightness = int(
|
||||||
|
convert_scale(self._device.status.level, 100, 255, 0)
|
||||||
|
)
|
||||||
# Color Temperature
|
# Color Temperature
|
||||||
if self._supported_features & SUPPORT_COLOR_TEMP:
|
if self._supported_features & SUPPORT_COLOR_TEMP:
|
||||||
self._color_temp = color_util.color_temperature_kelvin_to_mired(
|
self._color_temp = color_util.color_temperature_kelvin_to_mired(
|
||||||
|
@ -41,11 +41,7 @@ LOGGER = logging.getLogger(__name__)
|
|||||||
|
|
||||||
DEVICE_ATTRIBUTES = [
|
DEVICE_ATTRIBUTES = [
|
||||||
"_is_guest_by_uap",
|
"_is_guest_by_uap",
|
||||||
"ap_mac",
|
|
||||||
"authorized",
|
"authorized",
|
||||||
"bssid",
|
|
||||||
"ccq",
|
|
||||||
"channel",
|
|
||||||
"essid",
|
"essid",
|
||||||
"hostname",
|
"hostname",
|
||||||
"ip",
|
"ip",
|
||||||
@ -54,14 +50,11 @@ DEVICE_ATTRIBUTES = [
|
|||||||
"is_wired",
|
"is_wired",
|
||||||
"mac",
|
"mac",
|
||||||
"name",
|
"name",
|
||||||
"noise",
|
|
||||||
"noted",
|
"noted",
|
||||||
"oui",
|
"oui",
|
||||||
"qos_policy_applied",
|
"qos_policy_applied",
|
||||||
"radio",
|
"radio",
|
||||||
"radio_proto",
|
"radio_proto",
|
||||||
"rssi",
|
|
||||||
"signal",
|
|
||||||
"site_id",
|
"site_id",
|
||||||
"vlan",
|
"vlan",
|
||||||
]
|
]
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
"""Constants used by Home Assistant components."""
|
"""Constants used by Home Assistant components."""
|
||||||
MAJOR_VERSION = 0
|
MAJOR_VERSION = 0
|
||||||
MINOR_VERSION = 97
|
MINOR_VERSION = 97
|
||||||
PATCH_VERSION = "0"
|
PATCH_VERSION = "1"
|
||||||
__short_version__ = "{}.{}".format(MAJOR_VERSION, MINOR_VERSION)
|
__short_version__ = "{}.{}".format(MAJOR_VERSION, MINOR_VERSION)
|
||||||
__version__ = "{}.{}".format(__short_version__, PATCH_VERSION)
|
__version__ = "{}.{}".format(__short_version__, PATCH_VERSION)
|
||||||
REQUIRED_PYTHON_VER = (3, 6, 0)
|
REQUIRED_PYTHON_VER = (3, 6, 0)
|
||||||
|
@ -321,7 +321,7 @@ buienradar==1.0.1
|
|||||||
caldav==0.6.1
|
caldav==0.6.1
|
||||||
|
|
||||||
# homeassistant.components.cisco_mobility_express
|
# homeassistant.components.cisco_mobility_express
|
||||||
ciscomobilityexpress==0.3.1
|
ciscomobilityexpress==0.3.3
|
||||||
|
|
||||||
# homeassistant.components.ciscospark
|
# homeassistant.components.ciscospark
|
||||||
ciscosparkapi==0.4.2
|
ciscosparkapi==0.4.2
|
||||||
|
@ -31,14 +31,17 @@ SENSOR = {
|
|||||||
|
|
||||||
|
|
||||||
ENTRY_CONFIG = {
|
ENTRY_CONFIG = {
|
||||||
deconz.const.CONF_ALLOW_CLIP_SENSOR: True,
|
|
||||||
deconz.const.CONF_ALLOW_DECONZ_GROUPS: True,
|
|
||||||
deconz.config_flow.CONF_API_KEY: "ABCDEF",
|
deconz.config_flow.CONF_API_KEY: "ABCDEF",
|
||||||
deconz.config_flow.CONF_BRIDGEID: "0123456789",
|
deconz.config_flow.CONF_BRIDGEID: "0123456789",
|
||||||
deconz.config_flow.CONF_HOST: "1.2.3.4",
|
deconz.config_flow.CONF_HOST: "1.2.3.4",
|
||||||
deconz.config_flow.CONF_PORT: 80,
|
deconz.config_flow.CONF_PORT: 80,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ENTRY_OPTIONS = {
|
||||||
|
deconz.const.CONF_ALLOW_CLIP_SENSOR: True,
|
||||||
|
deconz.const.CONF_ALLOW_DECONZ_GROUPS: True,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
async def setup_gateway(hass, data, allow_clip_sensor=True):
|
async def setup_gateway(hass, data, allow_clip_sensor=True):
|
||||||
"""Load the deCONZ binary sensor platform."""
|
"""Load the deCONZ binary sensor platform."""
|
||||||
@ -47,7 +50,7 @@ async def setup_gateway(hass, data, allow_clip_sensor=True):
|
|||||||
loop = Mock()
|
loop = Mock()
|
||||||
session = Mock()
|
session = Mock()
|
||||||
|
|
||||||
ENTRY_CONFIG[deconz.const.CONF_ALLOW_CLIP_SENSOR] = allow_clip_sensor
|
ENTRY_OPTIONS[deconz.const.CONF_ALLOW_CLIP_SENSOR] = allow_clip_sensor
|
||||||
|
|
||||||
config_entry = config_entries.ConfigEntry(
|
config_entry = config_entries.ConfigEntry(
|
||||||
1,
|
1,
|
||||||
@ -56,6 +59,7 @@ async def setup_gateway(hass, data, allow_clip_sensor=True):
|
|||||||
ENTRY_CONFIG,
|
ENTRY_CONFIG,
|
||||||
"test",
|
"test",
|
||||||
config_entries.CONN_CLASS_LOCAL_PUSH,
|
config_entries.CONN_CLASS_LOCAL_PUSH,
|
||||||
|
ENTRY_OPTIONS,
|
||||||
)
|
)
|
||||||
gateway = deconz.DeconzGateway(hass, config_entry)
|
gateway = deconz.DeconzGateway(hass, config_entry)
|
||||||
gateway.api = DeconzSession(loop, session, **config_entry.data)
|
gateway.api = DeconzSession(loop, session, **config_entry.data)
|
||||||
|
@ -39,14 +39,17 @@ SENSOR = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ENTRY_CONFIG = {
|
ENTRY_CONFIG = {
|
||||||
deconz.const.CONF_ALLOW_CLIP_SENSOR: True,
|
|
||||||
deconz.const.CONF_ALLOW_DECONZ_GROUPS: True,
|
|
||||||
deconz.config_flow.CONF_API_KEY: "ABCDEF",
|
deconz.config_flow.CONF_API_KEY: "ABCDEF",
|
||||||
deconz.config_flow.CONF_BRIDGEID: "0123456789",
|
deconz.config_flow.CONF_BRIDGEID: "0123456789",
|
||||||
deconz.config_flow.CONF_HOST: "1.2.3.4",
|
deconz.config_flow.CONF_HOST: "1.2.3.4",
|
||||||
deconz.config_flow.CONF_PORT: 80,
|
deconz.config_flow.CONF_PORT: 80,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ENTRY_OPTIONS = {
|
||||||
|
deconz.const.CONF_ALLOW_CLIP_SENSOR: True,
|
||||||
|
deconz.const.CONF_ALLOW_DECONZ_GROUPS: True,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
async def setup_gateway(hass, data, allow_clip_sensor=True):
|
async def setup_gateway(hass, data, allow_clip_sensor=True):
|
||||||
"""Load the deCONZ sensor platform."""
|
"""Load the deCONZ sensor platform."""
|
||||||
@ -59,7 +62,7 @@ async def setup_gateway(hass, data, allow_clip_sensor=True):
|
|||||||
|
|
||||||
session = Mock(put=asynctest.CoroutineMock(return_value=response))
|
session = Mock(put=asynctest.CoroutineMock(return_value=response))
|
||||||
|
|
||||||
ENTRY_CONFIG[deconz.const.CONF_ALLOW_CLIP_SENSOR] = allow_clip_sensor
|
ENTRY_OPTIONS[deconz.const.CONF_ALLOW_CLIP_SENSOR] = allow_clip_sensor
|
||||||
|
|
||||||
config_entry = config_entries.ConfigEntry(
|
config_entry = config_entries.ConfigEntry(
|
||||||
1,
|
1,
|
||||||
@ -68,6 +71,7 @@ async def setup_gateway(hass, data, allow_clip_sensor=True):
|
|||||||
ENTRY_CONFIG,
|
ENTRY_CONFIG,
|
||||||
"test",
|
"test",
|
||||||
config_entries.CONN_CLASS_LOCAL_PUSH,
|
config_entries.CONN_CLASS_LOCAL_PUSH,
|
||||||
|
ENTRY_OPTIONS,
|
||||||
)
|
)
|
||||||
gateway = deconz.DeconzGateway(hass, config_entry)
|
gateway = deconz.DeconzGateway(hass, config_entry)
|
||||||
gateway.api = DeconzSession(hass.loop, session, **config_entry.data)
|
gateway.api = DeconzSession(hass.loop, session, **config_entry.data)
|
||||||
|
@ -62,14 +62,17 @@ SWITCH = {
|
|||||||
|
|
||||||
|
|
||||||
ENTRY_CONFIG = {
|
ENTRY_CONFIG = {
|
||||||
deconz.const.CONF_ALLOW_CLIP_SENSOR: True,
|
|
||||||
deconz.const.CONF_ALLOW_DECONZ_GROUPS: True,
|
|
||||||
deconz.config_flow.CONF_API_KEY: "ABCDEF",
|
deconz.config_flow.CONF_API_KEY: "ABCDEF",
|
||||||
deconz.config_flow.CONF_BRIDGEID: "0123456789",
|
deconz.config_flow.CONF_BRIDGEID: "0123456789",
|
||||||
deconz.config_flow.CONF_HOST: "1.2.3.4",
|
deconz.config_flow.CONF_HOST: "1.2.3.4",
|
||||||
deconz.config_flow.CONF_PORT: 80,
|
deconz.config_flow.CONF_PORT: 80,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ENTRY_OPTIONS = {
|
||||||
|
deconz.const.CONF_ALLOW_CLIP_SENSOR: True,
|
||||||
|
deconz.const.CONF_ALLOW_DECONZ_GROUPS: True,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
async def setup_gateway(hass, data, allow_deconz_groups=True):
|
async def setup_gateway(hass, data, allow_deconz_groups=True):
|
||||||
"""Load the deCONZ light platform."""
|
"""Load the deCONZ light platform."""
|
||||||
@ -78,7 +81,7 @@ async def setup_gateway(hass, data, allow_deconz_groups=True):
|
|||||||
loop = Mock()
|
loop = Mock()
|
||||||
session = Mock()
|
session = Mock()
|
||||||
|
|
||||||
ENTRY_CONFIG[deconz.const.CONF_ALLOW_DECONZ_GROUPS] = allow_deconz_groups
|
ENTRY_OPTIONS[deconz.const.CONF_ALLOW_DECONZ_GROUPS] = allow_deconz_groups
|
||||||
|
|
||||||
config_entry = config_entries.ConfigEntry(
|
config_entry = config_entries.ConfigEntry(
|
||||||
1,
|
1,
|
||||||
@ -87,6 +90,7 @@ async def setup_gateway(hass, data, allow_deconz_groups=True):
|
|||||||
ENTRY_CONFIG,
|
ENTRY_CONFIG,
|
||||||
"test",
|
"test",
|
||||||
config_entries.CONN_CLASS_LOCAL_PUSH,
|
config_entries.CONN_CLASS_LOCAL_PUSH,
|
||||||
|
ENTRY_OPTIONS,
|
||||||
)
|
)
|
||||||
gateway = deconz.DeconzGateway(hass, config_entry)
|
gateway = deconz.DeconzGateway(hass, config_entry)
|
||||||
gateway.api = DeconzSession(loop, session, **config_entry.data)
|
gateway.api = DeconzSession(loop, session, **config_entry.data)
|
||||||
|
@ -75,14 +75,17 @@ SENSOR = {
|
|||||||
|
|
||||||
|
|
||||||
ENTRY_CONFIG = {
|
ENTRY_CONFIG = {
|
||||||
deconz.const.CONF_ALLOW_CLIP_SENSOR: True,
|
|
||||||
deconz.const.CONF_ALLOW_DECONZ_GROUPS: True,
|
|
||||||
deconz.config_flow.CONF_API_KEY: "ABCDEF",
|
deconz.config_flow.CONF_API_KEY: "ABCDEF",
|
||||||
deconz.config_flow.CONF_BRIDGEID: "0123456789",
|
deconz.config_flow.CONF_BRIDGEID: "0123456789",
|
||||||
deconz.config_flow.CONF_HOST: "1.2.3.4",
|
deconz.config_flow.CONF_HOST: "1.2.3.4",
|
||||||
deconz.config_flow.CONF_PORT: 80,
|
deconz.config_flow.CONF_PORT: 80,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ENTRY_OPTIONS = {
|
||||||
|
deconz.const.CONF_ALLOW_CLIP_SENSOR: True,
|
||||||
|
deconz.const.CONF_ALLOW_DECONZ_GROUPS: True,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
async def setup_gateway(hass, data, allow_clip_sensor=True):
|
async def setup_gateway(hass, data, allow_clip_sensor=True):
|
||||||
"""Load the deCONZ sensor platform."""
|
"""Load the deCONZ sensor platform."""
|
||||||
@ -91,7 +94,7 @@ async def setup_gateway(hass, data, allow_clip_sensor=True):
|
|||||||
loop = Mock()
|
loop = Mock()
|
||||||
session = Mock()
|
session = Mock()
|
||||||
|
|
||||||
ENTRY_CONFIG[deconz.const.CONF_ALLOW_CLIP_SENSOR] = allow_clip_sensor
|
ENTRY_OPTIONS[deconz.const.CONF_ALLOW_CLIP_SENSOR] = allow_clip_sensor
|
||||||
|
|
||||||
config_entry = config_entries.ConfigEntry(
|
config_entry = config_entries.ConfigEntry(
|
||||||
1,
|
1,
|
||||||
@ -100,6 +103,7 @@ async def setup_gateway(hass, data, allow_clip_sensor=True):
|
|||||||
ENTRY_CONFIG,
|
ENTRY_CONFIG,
|
||||||
"test",
|
"test",
|
||||||
config_entries.CONN_CLASS_LOCAL_PUSH,
|
config_entries.CONN_CLASS_LOCAL_PUSH,
|
||||||
|
ENTRY_OPTIONS,
|
||||||
)
|
)
|
||||||
gateway = deconz.DeconzGateway(hass, config_entry)
|
gateway = deconz.DeconzGateway(hass, config_entry)
|
||||||
gateway.api = DeconzSession(loop, session, **config_entry.data)
|
gateway.api = DeconzSession(loop, session, **config_entry.data)
|
||||||
|
@ -84,6 +84,7 @@ async def test_entity_state(hass, light_devices):
|
|||||||
state.attributes[ATTR_SUPPORTED_FEATURES]
|
state.attributes[ATTR_SUPPORTED_FEATURES]
|
||||||
== SUPPORT_BRIGHTNESS | SUPPORT_TRANSITION
|
== SUPPORT_BRIGHTNESS | SUPPORT_TRANSITION
|
||||||
)
|
)
|
||||||
|
assert isinstance(state.attributes[ATTR_BRIGHTNESS], int)
|
||||||
assert state.attributes[ATTR_BRIGHTNESS] == 255
|
assert state.attributes[ATTR_BRIGHTNESS] == 255
|
||||||
|
|
||||||
# Color Dimmer 1
|
# Color Dimmer 1
|
||||||
@ -103,6 +104,7 @@ async def test_entity_state(hass, light_devices):
|
|||||||
)
|
)
|
||||||
assert state.attributes[ATTR_BRIGHTNESS] == 255
|
assert state.attributes[ATTR_BRIGHTNESS] == 255
|
||||||
assert state.attributes[ATTR_HS_COLOR] == (273.6, 55.0)
|
assert state.attributes[ATTR_HS_COLOR] == (273.6, 55.0)
|
||||||
|
assert isinstance(state.attributes[ATTR_COLOR_TEMP], int)
|
||||||
assert state.attributes[ATTR_COLOR_TEMP] == 222
|
assert state.attributes[ATTR_COLOR_TEMP] == 222
|
||||||
|
|
||||||
|
|
||||||
@ -191,7 +193,7 @@ async def test_turn_on_with_brightness(hass, light_devices):
|
|||||||
assert state is not None
|
assert state is not None
|
||||||
assert state.state == "on"
|
assert state.state == "on"
|
||||||
# round-trip rounding error (expected)
|
# round-trip rounding error (expected)
|
||||||
assert state.attributes[ATTR_BRIGHTNESS] == 73.95
|
assert state.attributes[ATTR_BRIGHTNESS] == 74
|
||||||
|
|
||||||
|
|
||||||
async def test_turn_on_with_minimal_brightness(hass, light_devices):
|
async def test_turn_on_with_minimal_brightness(hass, light_devices):
|
||||||
@ -216,7 +218,7 @@ async def test_turn_on_with_minimal_brightness(hass, light_devices):
|
|||||||
assert state is not None
|
assert state is not None
|
||||||
assert state.state == "on"
|
assert state.state == "on"
|
||||||
# round-trip rounding error (expected)
|
# round-trip rounding error (expected)
|
||||||
assert state.attributes[ATTR_BRIGHTNESS] == 2.55
|
assert state.attributes[ATTR_BRIGHTNESS] == 3
|
||||||
|
|
||||||
|
|
||||||
async def test_turn_on_with_color(hass, light_devices):
|
async def test_turn_on_with_color(hass, light_devices):
|
||||||
|
@ -14,6 +14,7 @@ LABEL maintainer="Paulus Schoutsen <Paulus@PaulusSchoutsen.nl>"
|
|||||||
#ENV INSTALL_SSOCR no
|
#ENV INSTALL_SSOCR no
|
||||||
#ENV INSTALL_DLIB no
|
#ENV INSTALL_DLIB no
|
||||||
#ENV INSTALL_IPERF3 no
|
#ENV INSTALL_IPERF3 no
|
||||||
|
#ENV INSTALL_LOCALES no
|
||||||
|
|
||||||
VOLUME /config
|
VOLUME /config
|
||||||
|
|
||||||
|
12
virtualization/Docker/scripts/locales
Executable file
12
virtualization/Docker/scripts/locales
Executable file
@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Sets up locales.
|
||||||
|
|
||||||
|
# Stop on errors
|
||||||
|
set -e
|
||||||
|
|
||||||
|
apt-get update
|
||||||
|
apt-get install -y --no-install-recommends locales
|
||||||
|
|
||||||
|
# Set the locale
|
||||||
|
sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen
|
||||||
|
locale-gen
|
@ -9,6 +9,7 @@ INSTALL_OPENALPR="${INSTALL_OPENALPR:-yes}"
|
|||||||
INSTALL_LIBCEC="${INSTALL_LIBCEC:-yes}"
|
INSTALL_LIBCEC="${INSTALL_LIBCEC:-yes}"
|
||||||
INSTALL_SSOCR="${INSTALL_SSOCR:-yes}"
|
INSTALL_SSOCR="${INSTALL_SSOCR:-yes}"
|
||||||
INSTALL_DLIB="${INSTALL_DLIB:-yes}"
|
INSTALL_DLIB="${INSTALL_DLIB:-yes}"
|
||||||
|
INSTALL_LOCALES="${INSTALL_LOCALES:-yes}"
|
||||||
|
|
||||||
# Required debian packages for running hass or components
|
# Required debian packages for running hass or components
|
||||||
PACKAGES=(
|
PACKAGES=(
|
||||||
@ -70,6 +71,10 @@ if [ "$INSTALL_DLIB" == "yes" ]; then
|
|||||||
pip3 install --no-cache-dir "dlib>=19.5"
|
pip3 install --no-cache-dir "dlib>=19.5"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ "$INSTALL_LOCALES" == "yes" ]; then
|
||||||
|
virtualization/Docker/scripts/locales
|
||||||
|
fi
|
||||||
|
|
||||||
# Remove packages
|
# Remove packages
|
||||||
apt-get remove -y --purge ${PACKAGES_DEV[@]}
|
apt-get remove -y --purge ${PACKAGES_DEV[@]}
|
||||||
apt-get -y --purge autoremove
|
apt-get -y --purge autoremove
|
||||||
|
Loading…
x
Reference in New Issue
Block a user