mirror of
https://github.com/home-assistant/core.git
synced 2025-07-25 14:17:45 +00:00
Merge pull request #37377 from home-assistant/rc
This commit is contained in:
commit
460bd2b3bb
@ -39,6 +39,13 @@ class ConnectDenonAVR:
|
|||||||
or self._receiver.model_name is None
|
or self._receiver.model_name is None
|
||||||
or self._receiver.receiver_type is None
|
or self._receiver.receiver_type is None
|
||||||
):
|
):
|
||||||
|
_LOGGER.error(
|
||||||
|
"Missing receiver information: manufacturer '%s', name '%s', model '%s', type '%s'",
|
||||||
|
self._receiver.manufacturer,
|
||||||
|
self._receiver.name,
|
||||||
|
self._receiver.model_name,
|
||||||
|
self._receiver.receiver_type,
|
||||||
|
)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
_LOGGER.debug(
|
_LOGGER.debug(
|
||||||
|
@ -80,7 +80,7 @@ class DevoloMultiLevelDeviceEntity(DevoloDeviceEntity):
|
|||||||
|
|
||||||
def _sync(self, message=None):
|
def _sync(self, message=None):
|
||||||
"""Update the multi level sensor state."""
|
"""Update the multi level sensor state."""
|
||||||
if message[0].startswith("devolo.MultiLevelSensor"):
|
if message[0] == self._multi_level_sensor_property.element_uid:
|
||||||
self._state = self._device_instance.multi_level_sensor_property[
|
self._state = self._device_instance.multi_level_sensor_property[
|
||||||
message[0]
|
message[0]
|
||||||
].value
|
].value
|
||||||
|
@ -133,7 +133,7 @@ class ForkedDaapdFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
|
|||||||
if user_input is not None:
|
if user_input is not None:
|
||||||
# check for any entries with same host, abort if found
|
# check for any entries with same host, abort if found
|
||||||
for entry in self._async_current_entries():
|
for entry in self._async_current_entries():
|
||||||
if entry.data[CONF_HOST] == user_input[CONF_HOST]:
|
if entry.data.get(CONF_HOST) == user_input[CONF_HOST]:
|
||||||
return self.async_abort(reason="already_configured")
|
return self.async_abort(reason="already_configured")
|
||||||
validate_result = await self.validate_input(user_input)
|
validate_result = await self.validate_input(user_input)
|
||||||
if validate_result[0] == "ok": # success
|
if validate_result[0] == "ok": # success
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
"domain": "frontend",
|
"domain": "frontend",
|
||||||
"name": "Home Assistant Frontend",
|
"name": "Home Assistant Frontend",
|
||||||
"documentation": "https://www.home-assistant.io/integrations/frontend",
|
"documentation": "https://www.home-assistant.io/integrations/frontend",
|
||||||
"requirements": ["home-assistant-frontend==20200701.0"],
|
"requirements": ["home-assistant-frontend==20200702.0"],
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"api",
|
"api",
|
||||||
"auth",
|
"auth",
|
||||||
|
@ -63,7 +63,7 @@ class Gogogate2FlowHandler(ConfigFlow, domain=DOMAIN):
|
|||||||
CONF_IP_ADDRESS, default=user_input.get(CONF_IP_ADDRESS, "")
|
CONF_IP_ADDRESS, default=user_input.get(CONF_IP_ADDRESS, "")
|
||||||
): str,
|
): str,
|
||||||
vol.Required(
|
vol.Required(
|
||||||
CONF_USERNAME, default=user_input.get(CONF_USERNAME, "admin")
|
CONF_USERNAME, default=user_input.get(CONF_USERNAME, "")
|
||||||
): str,
|
): str,
|
||||||
vol.Required(
|
vol.Required(
|
||||||
CONF_PASSWORD, default=user_input.get(CONF_PASSWORD, "")
|
CONF_PASSWORD, default=user_input.get(CONF_PASSWORD, "")
|
||||||
|
@ -3,6 +3,6 @@
|
|||||||
"name": "Gogogate2",
|
"name": "Gogogate2",
|
||||||
"config_flow": true,
|
"config_flow": true,
|
||||||
"documentation": "https://www.home-assistant.io/integrations/gogogate2",
|
"documentation": "https://www.home-assistant.io/integrations/gogogate2",
|
||||||
"requirements": ["gogogate2-api==1.0.3"],
|
"requirements": ["gogogate2-api==1.0.4"],
|
||||||
"codeowners": ["@vangorra"]
|
"codeowners": ["@vangorra"]
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
"step": {
|
"step": {
|
||||||
"user": {
|
"user": {
|
||||||
"title": "Setup GogoGate2",
|
"title": "Setup GogoGate2",
|
||||||
"description": "Provide requisite information below. Note: only the 'admin' user is known to work.",
|
"description": "Provide requisite information below.",
|
||||||
"data": {
|
"data": {
|
||||||
"ip_address": "IP Address",
|
"ip_address": "IP Address",
|
||||||
"username": "[%key:common::config_flow::data::username%]",
|
"username": "[%key:common::config_flow::data::username%]",
|
||||||
|
@ -325,7 +325,7 @@ async def async_setup(hass, config):
|
|||||||
if errors:
|
if errors:
|
||||||
_LOGGER.error(errors)
|
_LOGGER.error(errors)
|
||||||
hass.components.persistent_notification.async_create(
|
hass.components.persistent_notification.async_create(
|
||||||
"Config error. See [the logs](/developer-tools/logs) for details.",
|
"Config error. See [the logs](/config/logs) for details.",
|
||||||
"Config validating",
|
"Config validating",
|
||||||
f"{HASS_DOMAIN}.check_config",
|
f"{HASS_DOMAIN}.check_config",
|
||||||
)
|
)
|
||||||
|
@ -112,7 +112,7 @@ async def async_setup(hass: ha.HomeAssistant, config: dict) -> bool:
|
|||||||
if errors:
|
if errors:
|
||||||
_LOGGER.error(errors)
|
_LOGGER.error(errors)
|
||||||
hass.components.persistent_notification.async_create(
|
hass.components.persistent_notification.async_create(
|
||||||
"Config error. See [the logs](/developer-tools/logs) for details.",
|
"Config error. See [the logs](/config/logs) for details.",
|
||||||
"Config validating",
|
"Config validating",
|
||||||
f"{ha.DOMAIN}.check_config",
|
f"{ha.DOMAIN}.check_config",
|
||||||
)
|
)
|
||||||
|
@ -3,5 +3,5 @@
|
|||||||
"name": "Proxmox VE",
|
"name": "Proxmox VE",
|
||||||
"documentation": "https://www.home-assistant.io/integrations/proxmoxve",
|
"documentation": "https://www.home-assistant.io/integrations/proxmoxve",
|
||||||
"codeowners": ["@k4ds3", "@jhollowe"],
|
"codeowners": ["@k4ds3", "@jhollowe"],
|
||||||
"requirements": ["proxmoxer==1.1.0"]
|
"requirements": ["proxmoxer==1.1.1"]
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@ async def async_setup(hass: HomeAssistant, config: dict):
|
|||||||
"""Set up the Safe Mode component."""
|
"""Set up the Safe Mode component."""
|
||||||
persistent_notification.async_create(
|
persistent_notification.async_create(
|
||||||
hass,
|
hass,
|
||||||
"Home Assistant is running in safe mode. Check [the error log](/developer-tools/logs) to see what went wrong.",
|
"Home Assistant is running in safe mode. Check [the error log](/config/logs) to see what went wrong.",
|
||||||
"Safe Mode",
|
"Safe Mode",
|
||||||
)
|
)
|
||||||
return True
|
return True
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
"documentation": "https://www.home-assistant.io/integrations/smappee",
|
"documentation": "https://www.home-assistant.io/integrations/smappee",
|
||||||
"dependencies": ["http"],
|
"dependencies": ["http"],
|
||||||
"requirements": [
|
"requirements": [
|
||||||
"pysmappee==0.1.0"
|
"pysmappee==0.1.2"
|
||||||
],
|
],
|
||||||
"codeowners": [
|
"codeowners": [
|
||||||
"@bsmappee"
|
"@bsmappee"
|
||||||
|
@ -770,8 +770,13 @@ class DataManager:
|
|||||||
|
|
||||||
response = await self._hass.async_add_executor_job(self._api.measure_get_meas)
|
response = await self._hass.async_add_executor_job(self._api.measure_get_meas)
|
||||||
|
|
||||||
groups = query_measure_groups(
|
# Sort from oldest to newest.
|
||||||
|
groups = sorted(
|
||||||
|
query_measure_groups(
|
||||||
response, MeasureTypes.ANY, MeasureGroupAttribs.UNAMBIGUOUS
|
response, MeasureTypes.ANY, MeasureGroupAttribs.UNAMBIGUOUS
|
||||||
|
),
|
||||||
|
key=lambda group: group.created.datetime,
|
||||||
|
reverse=False,
|
||||||
)
|
)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
"""Constants used by Home Assistant components."""
|
"""Constants used by Home Assistant components."""
|
||||||
MAJOR_VERSION = 0
|
MAJOR_VERSION = 0
|
||||||
MINOR_VERSION = 112
|
MINOR_VERSION = 112
|
||||||
PATCH_VERSION = "0"
|
PATCH_VERSION = "1"
|
||||||
__short_version__ = f"{MAJOR_VERSION}.{MINOR_VERSION}"
|
__short_version__ = f"{MAJOR_VERSION}.{MINOR_VERSION}"
|
||||||
__version__ = f"{__short_version__}.{PATCH_VERSION}"
|
__version__ = f"{__short_version__}.{PATCH_VERSION}"
|
||||||
REQUIRED_PYTHON_VER = (3, 7, 0)
|
REQUIRED_PYTHON_VER = (3, 7, 0)
|
||||||
|
@ -13,7 +13,7 @@ defusedxml==0.6.0
|
|||||||
distro==1.5.0
|
distro==1.5.0
|
||||||
emoji==0.5.4
|
emoji==0.5.4
|
||||||
hass-nabucasa==0.34.7
|
hass-nabucasa==0.34.7
|
||||||
home-assistant-frontend==20200701.0
|
home-assistant-frontend==20200702.0
|
||||||
importlib-metadata==1.6.0;python_version<'3.8'
|
importlib-metadata==1.6.0;python_version<'3.8'
|
||||||
jinja2>=2.11.1
|
jinja2>=2.11.1
|
||||||
netdisco==2.7.1
|
netdisco==2.7.1
|
||||||
|
@ -660,7 +660,7 @@ glances_api==0.2.0
|
|||||||
gntp==1.0.3
|
gntp==1.0.3
|
||||||
|
|
||||||
# homeassistant.components.gogogate2
|
# homeassistant.components.gogogate2
|
||||||
gogogate2-api==1.0.3
|
gogogate2-api==1.0.4
|
||||||
|
|
||||||
# homeassistant.components.google
|
# homeassistant.components.google
|
||||||
google-api-python-client==1.6.4
|
google-api-python-client==1.6.4
|
||||||
@ -738,7 +738,7 @@ hole==0.5.1
|
|||||||
holidays==0.10.2
|
holidays==0.10.2
|
||||||
|
|
||||||
# homeassistant.components.frontend
|
# homeassistant.components.frontend
|
||||||
home-assistant-frontend==20200701.0
|
home-assistant-frontend==20200702.0
|
||||||
|
|
||||||
# homeassistant.components.zwave
|
# homeassistant.components.zwave
|
||||||
homeassistant-pyozw==0.1.10
|
homeassistant-pyozw==0.1.10
|
||||||
@ -1125,7 +1125,7 @@ prometheus_client==0.7.1
|
|||||||
protobuf==3.6.1
|
protobuf==3.6.1
|
||||||
|
|
||||||
# homeassistant.components.proxmoxve
|
# homeassistant.components.proxmoxve
|
||||||
proxmoxer==1.1.0
|
proxmoxer==1.1.1
|
||||||
|
|
||||||
# homeassistant.components.systemmonitor
|
# homeassistant.components.systemmonitor
|
||||||
psutil==5.7.0
|
psutil==5.7.0
|
||||||
@ -1610,7 +1610,7 @@ pysignalclirestapi==0.3.4
|
|||||||
pysma==0.3.5
|
pysma==0.3.5
|
||||||
|
|
||||||
# homeassistant.components.smappee
|
# homeassistant.components.smappee
|
||||||
pysmappee==0.1.0
|
pysmappee==0.1.2
|
||||||
|
|
||||||
# homeassistant.components.smartthings
|
# homeassistant.components.smartthings
|
||||||
pysmartapp==0.3.2
|
pysmartapp==0.3.2
|
||||||
|
@ -310,7 +310,7 @@ gios==0.1.1
|
|||||||
glances_api==0.2.0
|
glances_api==0.2.0
|
||||||
|
|
||||||
# homeassistant.components.gogogate2
|
# homeassistant.components.gogogate2
|
||||||
gogogate2-api==1.0.3
|
gogogate2-api==1.0.4
|
||||||
|
|
||||||
# homeassistant.components.google
|
# homeassistant.components.google
|
||||||
google-api-python-client==1.6.4
|
google-api-python-client==1.6.4
|
||||||
@ -343,7 +343,7 @@ hole==0.5.1
|
|||||||
holidays==0.10.2
|
holidays==0.10.2
|
||||||
|
|
||||||
# homeassistant.components.frontend
|
# homeassistant.components.frontend
|
||||||
home-assistant-frontend==20200701.0
|
home-assistant-frontend==20200702.0
|
||||||
|
|
||||||
# homeassistant.components.zwave
|
# homeassistant.components.zwave
|
||||||
homeassistant-pyozw==0.1.10
|
homeassistant-pyozw==0.1.10
|
||||||
@ -715,7 +715,7 @@ pysignalclirestapi==0.3.4
|
|||||||
pysma==0.3.5
|
pysma==0.3.5
|
||||||
|
|
||||||
# homeassistant.components.smappee
|
# homeassistant.components.smappee
|
||||||
pysmappee==0.1.0
|
pysmappee==0.1.2
|
||||||
|
|
||||||
# homeassistant.components.smartthings
|
# homeassistant.components.smartthings
|
||||||
pysmartapp==0.3.2
|
pysmartapp==0.3.2
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
"""Tests for the Withings component."""
|
"""Tests for the Withings component."""
|
||||||
import time
|
|
||||||
from typing import Any
|
from typing import Any
|
||||||
from unittest.mock import patch
|
from unittest.mock import patch
|
||||||
|
|
||||||
@ -40,8 +39,8 @@ PERSON0 = new_profile_config(
|
|||||||
MeasureGetMeasGroup(
|
MeasureGetMeasGroup(
|
||||||
attrib=MeasureGetMeasGroupAttrib.DEVICE_ENTRY_FOR_USER,
|
attrib=MeasureGetMeasGroupAttrib.DEVICE_ENTRY_FOR_USER,
|
||||||
category=MeasureGetMeasGroupCategory.REAL,
|
category=MeasureGetMeasGroupCategory.REAL,
|
||||||
created=time.time(),
|
created=arrow.utcnow().shift(hours=-1),
|
||||||
date=time.time(),
|
date=arrow.utcnow().shift(hours=-1),
|
||||||
deviceid="DEV_ID",
|
deviceid="DEV_ID",
|
||||||
grpid=1,
|
grpid=1,
|
||||||
measures=(
|
measures=(
|
||||||
@ -87,11 +86,61 @@ PERSON0 = new_profile_config(
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
MeasureGetMeasGroup(
|
||||||
|
attrib=MeasureGetMeasGroupAttrib.DEVICE_ENTRY_FOR_USER,
|
||||||
|
category=MeasureGetMeasGroupCategory.REAL,
|
||||||
|
created=arrow.utcnow().shift(hours=-2),
|
||||||
|
date=arrow.utcnow().shift(hours=-2),
|
||||||
|
deviceid="DEV_ID",
|
||||||
|
grpid=1,
|
||||||
|
measures=(
|
||||||
|
MeasureGetMeasMeasure(type=MeasureType.WEIGHT, unit=0, value=71),
|
||||||
|
MeasureGetMeasMeasure(
|
||||||
|
type=MeasureType.FAT_MASS_WEIGHT, unit=0, value=51
|
||||||
|
),
|
||||||
|
MeasureGetMeasMeasure(
|
||||||
|
type=MeasureType.FAT_FREE_MASS, unit=0, value=61
|
||||||
|
),
|
||||||
|
MeasureGetMeasMeasure(
|
||||||
|
type=MeasureType.MUSCLE_MASS, unit=0, value=51
|
||||||
|
),
|
||||||
|
MeasureGetMeasMeasure(type=MeasureType.BONE_MASS, unit=0, value=11),
|
||||||
|
MeasureGetMeasMeasure(type=MeasureType.HEIGHT, unit=0, value=21),
|
||||||
|
MeasureGetMeasMeasure(
|
||||||
|
type=MeasureType.TEMPERATURE, unit=0, value=41
|
||||||
|
),
|
||||||
|
MeasureGetMeasMeasure(
|
||||||
|
type=MeasureType.BODY_TEMPERATURE, unit=0, value=41
|
||||||
|
),
|
||||||
|
MeasureGetMeasMeasure(
|
||||||
|
type=MeasureType.SKIN_TEMPERATURE, unit=0, value=21
|
||||||
|
),
|
||||||
|
MeasureGetMeasMeasure(
|
||||||
|
type=MeasureType.FAT_RATIO, unit=-3, value=71
|
||||||
|
),
|
||||||
|
MeasureGetMeasMeasure(
|
||||||
|
type=MeasureType.DIASTOLIC_BLOOD_PRESSURE, unit=0, value=71
|
||||||
|
),
|
||||||
|
MeasureGetMeasMeasure(
|
||||||
|
type=MeasureType.SYSTOLIC_BLOOD_PRESSURE, unit=0, value=101
|
||||||
|
),
|
||||||
|
MeasureGetMeasMeasure(
|
||||||
|
type=MeasureType.HEART_RATE, unit=0, value=61
|
||||||
|
),
|
||||||
|
MeasureGetMeasMeasure(type=MeasureType.SP02, unit=-2, value=96),
|
||||||
|
MeasureGetMeasMeasure(
|
||||||
|
type=MeasureType.HYDRATION, unit=-2, value=96
|
||||||
|
),
|
||||||
|
MeasureGetMeasMeasure(
|
||||||
|
type=MeasureType.PULSE_WAVE_VELOCITY, unit=0, value=101
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
MeasureGetMeasGroup(
|
MeasureGetMeasGroup(
|
||||||
attrib=MeasureGetMeasGroupAttrib.DEVICE_ENTRY_FOR_USER_AMBIGUOUS,
|
attrib=MeasureGetMeasGroupAttrib.DEVICE_ENTRY_FOR_USER_AMBIGUOUS,
|
||||||
category=MeasureGetMeasGroupCategory.REAL,
|
category=MeasureGetMeasGroupCategory.REAL,
|
||||||
created=time.time(),
|
created=arrow.utcnow(),
|
||||||
date=time.time(),
|
date=arrow.utcnow(),
|
||||||
deviceid="DEV_ID",
|
deviceid="DEV_ID",
|
||||||
grpid=1,
|
grpid=1,
|
||||||
measures=(
|
measures=(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user