From 59b0491d29dcbb0104681e0836d068203dbc9e18 Mon Sep 17 00:00:00 2001 From: Daniel Perna Date: Sun, 22 Jan 2017 14:20:49 +0100 Subject: [PATCH] Homematic fixes + device support (#5503) * Using new MaxShutterContact class * Skip unnecessary function calls * Added casting for VALUE * Some renaming to clarify what's happening * Bumped dependency version * Bumped version in requirements --- .../components/binary_sensor/homematic.py | 1 + homeassistant/components/homematic.py | 23 ++++++++++--------- homeassistant/components/sensor/homematic.py | 1 + requirements_all.txt | 2 +- 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/homeassistant/components/binary_sensor/homematic.py b/homeassistant/components/binary_sensor/homematic.py index 33eda1f2b1a..82b77eb11d4 100644 --- a/homeassistant/components/binary_sensor/homematic.py +++ b/homeassistant/components/binary_sensor/homematic.py @@ -17,6 +17,7 @@ DEPENDENCIES = ['homematic'] SENSOR_TYPES_CLASS = { "Remote": None, "ShutterContact": "opening", + "MaxShutterContact": "opening", "IPShutterContact": "opening", "Smoke": "smoke", "SmokeV2": "smoke", diff --git a/homeassistant/components/homematic.py b/homeassistant/components/homematic.py index 7f2f8b813a4..2b68a268d34 100644 --- a/homeassistant/components/homematic.py +++ b/homeassistant/components/homematic.py @@ -23,7 +23,7 @@ from homeassistant.config import load_yaml_config_file from homeassistant.util import Throttle DOMAIN = 'homematic' -REQUIREMENTS = ["pyhomematic==0.1.19"] +REQUIREMENTS = ["pyhomematic==0.1.20"] MIN_TIME_BETWEEN_UPDATE_HUB = timedelta(seconds=300) SCAN_INTERVAL = timedelta(seconds=30) @@ -432,8 +432,8 @@ def _system_callback_handler(hass, config, src, *args): }, config) -def _get_devices(hass, device_type, keys, proxy): - """Get the Homematic devices.""" +def _get_devices(hass, discovery_type, keys, proxy): + """Get the Homematic devices for given discovery_type.""" device_arr = [] for key in keys: @@ -441,14 +441,14 @@ def _get_devices(hass, device_type, keys, proxy): class_name = device.__class__.__name__ metadata = {} - # is class supported by discovery type - if class_name not in HM_DEVICE_TYPES[device_type]: + # Class supported by discovery type + if class_name not in HM_DEVICE_TYPES[discovery_type]: continue # Load metadata if needed to generate a param list - if device_type == DISCOVER_SENSORS: + if discovery_type == DISCOVER_SENSORS: metadata.update(device.SENSORNODE) - elif device_type == DISCOVER_BINARY_SENSORS: + elif discovery_type == DISCOVER_BINARY_SENSORS: metadata.update(device.BINARYNODE) else: metadata.update({None: device.ELEMENT}) @@ -459,8 +459,9 @@ def _get_devices(hass, device_type, keys, proxy): if param in HM_IGNORE_DISCOVERY_NODE: continue - # add devices - _LOGGER.debug("Handling %s: %s", param, channels) + # Add devices + _LOGGER.debug("%s: Handling %s: %s: %s", + discovery_type, key, param, channels) for channel in channels: name = _create_ha_name( name=device.NAME, channel=channel, param=param, @@ -485,7 +486,7 @@ def _get_devices(hass, device_type, keys, proxy): str(err)) else: _LOGGER.debug("Got no params for %s", key) - _LOGGER.debug("%s autodiscovery: %s", device_type, str(device_arr)) + _LOGGER.debug("%s autodiscovery done: %s", discovery_type, str(device_arr)) return device_arr @@ -873,7 +874,7 @@ class HMDevice(Entity): (self._hmdevice.SENSORNODE, self._hmdevice.getSensorData), (self._hmdevice.BINARYNODE, self._hmdevice.getBinaryData)): for node in metadata: - if node in self._data: + if metadata[node] and node in self._data: self._data[node] = funct(name=node, channel=self._channel) return True diff --git a/homeassistant/components/sensor/homematic.py b/homeassistant/components/sensor/homematic.py index e252e2d30c6..2d7e374c46d 100644 --- a/homeassistant/components/sensor/homematic.py +++ b/homeassistant/components/sensor/homematic.py @@ -41,6 +41,7 @@ HM_UNIT_HA_CAST = { "SUNSHINEDURATION": "#", "AIR_PRESSURE": "hPa", "FREQUENCY": "Hz", + "VALUE": "#" } diff --git a/requirements_all.txt b/requirements_all.txt index 68326dbd1b4..5874dcc7bf7 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -435,7 +435,7 @@ pyharmony==1.0.12 pyhik==0.0.7 # homeassistant.components.homematic -pyhomematic==0.1.19 +pyhomematic==0.1.20 # homeassistant.components.device_tracker.icloud pyicloud==0.9.1