Skip to content
Permalink
Browse files

Merge branch 'dev' of https://github.com/home-assistant/home-assistant

…into hive-splitfiles-testing

* 'dev' of https://github.com/home-assistant/home-assistant: (109 commits)
  Multiroom support for snapcast (home-assistant#24061)
  Turn on device before setting mode (home-assistant#25314)
  Turn on device before setting mode (home-assistant#25314)
  Bumped version to 0.96.2
  Fix plant error when adding new value (home-assistant#25302)
  Fix HM with use wrong datapoint for off (home-assistant#25298)
  [climate] Correct honeywell supported_features (home-assistant#25292)
  Fixed python-wink method names (home-assistant#25285)
  Fix fritzbox climate HVAC mode / temperature (home-assistant#25275)
  Updated frontend to 20190719.0
  Updated frontend to 20190719.0
  Fix plant error when adding new value (home-assistant#25302)
  Fix HM with use wrong datapoint for off (home-assistant#25298)
  [climate] Correct honeywell supported_features (home-assistant#25292)
  Fix fritzbox climate HVAC mode / temperature (home-assistant#25275)
  Fixed python-wink method names (home-assistant#25285)
  Add services to set and remove Simplisafe PINs (home-assistant#25207)
  Add MQTT climate precision (home-assistant#25265)
  Add support for Rainforest Eagle-200 (home-assistant#24919)
  Update azure-pipelines-ci.yml for Azure Pipelines
  ...

# Conflicts:
#	homeassistant/components/hive/climate.py
  • Loading branch information...
KJonline committed Jul 19, 2019
2 parents 041f432 + caa7a3a commit 8ee984ee041f5906969bf129a6a4286ffb67c7b3
Showing with 780 additions and 150 deletions.
  1. +1 −0 .coveragerc
  2. +2 −0 CODEOWNERS
  3. +1 −1 Dockerfile
  4. +5 −1 azure-pipelines-ci.yml
  5. +18 −17 homeassistant/components/ecobee/climate.py
  6. +2 −2 homeassistant/components/eq3btsmart/climate.py
  7. +8 −4 homeassistant/components/fritzbox/climate.py
  8. +1 −1 homeassistant/components/frontend/manifest.json
  9. +3 −3 homeassistant/components/hive/climate.py
  10. +4 −2 homeassistant/components/homematic/climate.py
  11. +2 −4 homeassistant/components/honeywell/climate.py
  12. +1 −1 homeassistant/components/luci/manifest.json
  13. +0 −14 homeassistant/components/media_player/services.yaml
  14. +36 −1 homeassistant/components/mqtt/climate.py
  15. +16 −5 homeassistant/components/neato/__init__.py
  16. +1 −1 homeassistant/components/neato/manifest.json
  17. +4 −5 homeassistant/components/neato/vacuum.py
  18. +14 −3 homeassistant/components/netatmo/climate.py
  19. +6 −1 homeassistant/components/opentherm_gw/climate.py
  20. +3 −1 homeassistant/components/plant/__init__.py
  21. +2 −3 homeassistant/components/radiotherm/climate.py
  22. +1 −0 homeassistant/components/rainforest_eagle/__init__.py
  23. +10 −0 homeassistant/components/rainforest_eagle/manifest.json
  24. +134 −0 homeassistant/components/rainforest_eagle/sensor.py
  25. +61 −3 homeassistant/components/simplisafe/__init__.py
  26. +43 −14 homeassistant/components/simplisafe/alarm_control_panel.py
  27. +1 −1 homeassistant/components/simplisafe/manifest.json
  28. +24 −0 homeassistant/components/simplisafe/services.yaml
  29. +35 −6 homeassistant/components/smartthings/climate.py
  30. +47 −0 homeassistant/components/snapcast/__init__.py
  31. +1 −1 homeassistant/components/snapcast/manifest.json
  32. +59 −18 homeassistant/components/snapcast/media_player.py
  33. +30 −0 homeassistant/components/snapcast/services.yaml
  34. +3 −1 homeassistant/components/songpal/manifest.json
  35. +6 −6 homeassistant/components/wink/climate.py
  36. +8 −5 homeassistant/components/wunderlist/__init__.py
  37. +14 −2 homeassistant/components/zwave/climate.py
  38. +1 −1 homeassistant/package_constraints.txt
  39. +8 −5 requirements_all.txt
  40. +2 −2 requirements_test_all.txt
  41. +3 −3 tests/components/fritzbox/test_climate.py
  42. +58 −0 tests/components/mqtt/test_climate.py
  43. +99 −10 tests/components/smartthings/test_climate.py
  44. +1 −1 virtualization/Docker/Dockerfile.dev
  45. +1 −1 virtualization/Docker/setup_docker_prereqs
@@ -499,6 +499,7 @@ omit =
homeassistant/components/rainmachine/binary_sensor.py
homeassistant/components/rainmachine/sensor.py
homeassistant/components/rainmachine/switch.py
homeassistant/components/rainforest_eagle/sensor.py
homeassistant/components/raspihats/*
homeassistant/components/raspyrfm/*
homeassistant/components/recollect_waste/sensor.py
@@ -211,6 +211,7 @@ homeassistant/components/qnap/* @colinodell
homeassistant/components/quantum_gateway/* @cisasteelersfan
homeassistant/components/qwikswitch/* @kellerza
homeassistant/components/raincloud/* @vanstinator
homeassistant/components/rainforest_eagle/* @gtdiehl
homeassistant/components/rainmachine/* @bachya
homeassistant/components/random/* @fabaff
homeassistant/components/repetier/* @MTrab
@@ -237,6 +238,7 @@ homeassistant/components/smtp/* @fabaff
homeassistant/components/solaredge_local/* @drobtravels
homeassistant/components/solax/* @squishykid
homeassistant/components/somfy/* @tetienne
homeassistant/components/songpal/* @rytilahti
homeassistant/components/sonos/* @amelchio
homeassistant/components/spaceapi/* @fabaff
homeassistant/components/spider/* @peternijssen
@@ -2,7 +2,7 @@
# When updating this file, please also update virtualization/Docker/Dockerfile.dev
# This way, the development image and the production image are kept in sync.

FROM python:3.7-stretch
FROM python:3.7-buster
LABEL maintainer="Paulus Schoutsen <Paulus@PaulusSchoutsen.nl>"

# Uncomment any of the following lines to disable the installation.
@@ -4,9 +4,13 @@ trigger:
batch: true
branches:
include:
- rc
- dev
- master
pr:
- rc
- dev
- master

resources:
containers:
@@ -147,7 +151,7 @@ stages:
steps:
- script: |
python --version > .cache
displayName: 'Set python $(python.version) for requirement cache'
displayName: 'Set python $(PythonMain) for requirement cache'
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
displayName: 'Restore artifacts based on Requirements'
inputs:
@@ -12,10 +12,10 @@
ATTR_TARGET_TEMP_LOW, ATTR_TARGET_TEMP_HIGH, SUPPORT_TARGET_TEMPERATURE,
SUPPORT_AUX_HEAT, SUPPORT_TARGET_TEMPERATURE_RANGE, SUPPORT_FAN_MODE,
PRESET_AWAY, FAN_AUTO, FAN_ON, CURRENT_HVAC_OFF, CURRENT_HVAC_HEAT,
CURRENT_HVAC_COOL
CURRENT_HVAC_COOL, SUPPORT_PRESET_MODE
)
from homeassistant.const import (
ATTR_ENTITY_ID, STATE_ON, ATTR_TEMPERATURE, TEMP_FAHRENHEIT, TEMP_CELSIUS)
ATTR_ENTITY_ID, STATE_ON, ATTR_TEMPERATURE, TEMP_FAHRENHEIT)
import homeassistant.helpers.config_validation as cv

_CONFIGURING = {}
@@ -31,6 +31,8 @@
PRESET_HOLD_NEXT_TRANSITION = 'next_transition'
PRESET_HOLD_INDEFINITE = 'indefinite'
AWAY_MODE = 'awayMode'
PRESET_HOME = 'home'
PRESET_SLEEP = 'sleep'

# Order matters, because for reverse mapping we don't want to map HEAT to AUX
ECOBEE_HVAC_TO_HASS = collections.OrderedDict([
@@ -48,9 +50,8 @@

PRESET_MODES = [
PRESET_AWAY,
PRESET_TEMPERATURE,
PRESET_HOLD_NEXT_TRANSITION,
PRESET_HOLD_INDEFINITE
PRESET_HOME,
PRESET_SLEEP
]

SERVICE_SET_FAN_MIN_ON_TIME = 'ecobee_set_fan_min_on_time'
@@ -66,7 +67,7 @@
vol.Optional(ATTR_RESUME_ALL, default=DEFAULT_RESUME_ALL): cv.boolean,
})

SUPPORT_FLAGS = (SUPPORT_TARGET_TEMPERATURE |
SUPPORT_FLAGS = (SUPPORT_TARGET_TEMPERATURE | SUPPORT_PRESET_MODE |
SUPPORT_AUX_HEAT | SUPPORT_TARGET_TEMPERATURE_RANGE |
SUPPORT_FAN_MODE)

@@ -168,9 +169,6 @@ def name(self):
@property
def temperature_unit(self):
"""Return the unit of measurement."""
if self.thermostat['settings']['useCelsius']:
return TEMP_CELSIUS

return TEMP_FAHRENHEIT

@property
@@ -308,9 +306,9 @@ def is_aux_heat(self):
"""Return true if aux heater."""
return 'auxHeat' in self.thermostat['equipmentStatus']

def set_preset(self, preset):
def set_preset_mode(self, preset_mode):
"""Activate a preset."""
if preset == self.preset_mode:
if preset_mode == self.preset_mode:
return

self.update_without_throttle = True
@@ -320,23 +318,26 @@ def set_preset(self, preset):
self.data.ecobee.delete_vacation(
self.thermostat_index, self.vacation)

if preset == PRESET_AWAY:
if preset_mode == PRESET_AWAY:
self.data.ecobee.set_climate_hold(self.thermostat_index, 'away',
'indefinite')

elif preset == PRESET_TEMPERATURE:
elif preset_mode == PRESET_TEMPERATURE:
self.set_temp_hold(self.current_temperature)

elif preset in (PRESET_HOLD_NEXT_TRANSITION, PRESET_HOLD_INDEFINITE):
elif preset_mode in (
PRESET_HOLD_NEXT_TRANSITION, PRESET_HOLD_INDEFINITE):
self.data.ecobee.set_climate_hold(
self.thermostat_index, PRESET_TO_ECOBEE_HOLD[preset],
self.thermostat_index, PRESET_TO_ECOBEE_HOLD[preset_mode],
self.hold_preference())

elif preset is None:
elif preset_mode is None:
self.data.ecobee.resume_program(self.thermostat_index)

else:
_LOGGER.warning("Received invalid preset: %s", preset)
self.data.ecobee.set_climate_hold(
self.thermostat_index, preset_mode, self.hold_preference())
self.update_without_throttle = True

@property
def preset_modes(self):
@@ -66,9 +66,9 @@ def setup_platform(hass, config, add_entities, discovery_info=None):

for name, device_cfg in config[CONF_DEVICES].items():
mac = device_cfg[CONF_MAC]
devices.append(EQ3BTSmartThermostat(mac, name), True)
devices.append(EQ3BTSmartThermostat(mac, name))

add_entities(devices)
add_entities(devices, True)


class EQ3BTSmartThermostat(ClimateDevice):
@@ -93,9 +93,10 @@ def current_temperature(self):
@property
def target_temperature(self):
"""Return the temperature we try to reach."""
if self._target_temperature in (ON_API_TEMPERATURE,
OFF_API_TEMPERATURE):
return None
if self._target_temperature == ON_API_TEMPERATURE:
return ON_REPORT_SET_TEMPERATURE
if self._target_temperature == OFF_API_TEMPERATURE:
return OFF_REPORT_SET_TEMPERATURE
return self._target_temperature

def set_temperature(self, **kwargs):
@@ -110,7 +111,10 @@ def set_temperature(self, **kwargs):
@property
def hvac_mode(self):
"""Return the current operation mode."""
if self._target_temperature == OFF_REPORT_SET_TEMPERATURE:
if (
self._target_temperature == OFF_REPORT_SET_TEMPERATURE or
self._target_temperature == OFF_API_TEMPERATURE
):
return HVAC_MODE_OFF

return HVAC_MODE_HEAT
@@ -3,7 +3,7 @@
"name": "Home Assistant Frontend",
"documentation": "https://www.home-assistant.io/components/frontend",
"requirements": [
"home-assistant-frontend==20190717.0"
"home-assistant-frontend==20190719.0"
],
"dependencies": [
"api",
@@ -60,9 +60,9 @@ def __init__(self, hivesession, hivedevice):
self.thermostat_node_id = hivedevice["Thermostat_NodeID"]
self.hive = hivesession
self.attributes = {}
self.data_updatesource = '{}.{}'.format(self.device_type,
self.node_id)
self.uniqueid = '{}-{}'.format(self.node_id, self.device_type)
self.data_updatesource = '{}.{}'.format(
self.device_type, self.node_id)
self._unique_id = '{}-{}'.format(self.node_id, self.device_type)
@property
def unique_id(self):
@@ -66,6 +66,8 @@ def hvac_mode(self):
Need to be one of HVAC_MODE_*.
"""
if self.target_temperature <= self._hmdevice.OFF_VALUE + 0.5:
return HVAC_MODE_OFF
if "MANU_MODE" in self._hmdevice.ACTIONNODE:
if self._hm_controll_mode == self._hmdevice.MANU_MODE:
return HVAC_MODE_HEAT
@@ -157,12 +159,12 @@ def set_preset_mode(self, preset_mode: str) -> None:

@property
def min_temp(self):
"""Return the minimum temperature - 4.5 means off."""
"""Return the minimum temperature."""
return 4.5

@property
def max_temp(self):
"""Return the maximum temperature - 30.5 means on."""
"""Return the maximum temperature."""
return 30.5

@property
@@ -11,9 +11,8 @@
from homeassistant.components.climate.const import (
ATTR_TARGET_TEMP_HIGH, ATTR_TARGET_TEMP_LOW,
FAN_AUTO, FAN_DIFFUSE, FAN_ON,
SUPPORT_AUX_HEAT, SUPPORT_FAN_MODE,
SUPPORT_PRESET_MODE, SUPPORT_TARGET_HUMIDITY, SUPPORT_TARGET_TEMPERATURE,
SUPPORT_TARGET_TEMPERATURE_RANGE,
SUPPORT_AUX_HEAT, SUPPORT_FAN_MODE, SUPPORT_PRESET_MODE,
SUPPORT_TARGET_HUMIDITY, SUPPORT_TARGET_TEMPERATURE_RANGE,
CURRENT_HVAC_COOL, CURRENT_HVAC_HEAT, CURRENT_HVAC_IDLE, CURRENT_HVAC_OFF,
HVAC_MODE_OFF, HVAC_MODE_HEAT, HVAC_MODE_COOL, HVAC_MODE_HEAT_COOL,
PRESET_AWAY,
@@ -128,7 +127,6 @@ def __init__(self, client, device, cool_away_temp,
self._password = password

self._supported_features = (SUPPORT_PRESET_MODE |
SUPPORT_TARGET_TEMPERATURE |
SUPPORT_TARGET_TEMPERATURE_RANGE)

# pylint: disable=protected-access
@@ -3,7 +3,7 @@
"name": "Luci",
"documentation": "https://www.home-assistant.io/components/luci",
"requirements": [
"openwrt-luci-rpc==1.0.5"
"openwrt-luci-rpc==1.1.0"
],
"dependencies": [],
"codeowners": ["@fbradyirl"]
@@ -171,20 +171,6 @@ shuffle_set:
description: True/false for enabling/disabling shuffle.
example: true

snapcast_snapshot:
description: Take a snapshot of the media player.
fields:
entity_id:
description: Name(s) of entities that will be snapshotted. Platform dependent.
example: 'media_player.living_room'

snapcast_restore:
description: Restore a snapshot of the media player.
fields:
entity_id:
description: Name(s) of entities that will be restored. Platform dependent.
example: 'media_player.living_room'

channels_seek_forward:
description: Seek forward by a set number of seconds.
fields:

0 comments on commit 8ee984e

Please sign in to comment.
You can’t perform that action at this time.