diff --git a/changelog.txt b/changelog.txt index b5187cd6a..983a2c085 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,7 @@ +Version 0.1.48 (2018-09-13) +- Added Support for HmIP-SWO-PL and HmIP-SWO-B @dickesW +- Fix callbacks for channel 0 @klada + Version 0.1.47 (2018-08-20) - Fix HmIP-BWTH (Issue #151) @danielperna84 - Added HmIP-KRCA @danielperna84 diff --git a/pyhomematic/devicetypes/sensors.py b/pyhomematic/devicetypes/sensors.py index d86fda177..81d3c4ea6 100644 --- a/pyhomematic/devicetypes/sensors.py +++ b/pyhomematic/devicetypes/sensors.py @@ -523,6 +523,97 @@ def is_raining(self, channel=None): """ Return True if motion is detected """ return bool(self.getBinaryData("RAINING", channel)) +class IPWeatherSensorPlus(HMSensor, HMBinarySensor): + """HomeMatic IP Weather sensor Plus.""" + + def __init__(self, device_description, proxy, resolveparamsets=False): + super().__init__(device_description, proxy, resolveparamsets) + + # init metadata + self.SENSORNODE.update({"ACTUAL_TEMPERATURE": [1], + "HUMIDITY": [1], + "RAIN_COUNTER": [1], + "WIND_SPEED": [1], + "SUNSHINEDURATION": [1], + "ILLUMINATION": [1]}) + self.BINARYNODE.update({"RAINING": [1]}) + self.ATTRIBUTENODE.update({"LOW_BAT": [0], + "ERROR_CODE": [0], + "OPERATING_VOLTAGE": [0], + "TEMPERATURE_OUT_OF_RANGE": [0]}) + + def get_temperature(self, channel=None): + return float(self.getSensorData("ACTUAL_TEMPERATURE", channel)) + + def get_humidity(self, channel=None): + return int(self.getSensorData("HUMIDITY", channel)) + + def get_rain_counter(self, channel=None): + return float(self.getSensorData("RAIN_COUNTER", channel)) + + def get_wind_speed(self, channel=None): + return float(self.getSensorData("WIND_SPEED", channel)) + + def get_sunshineduration(self, channel=None): + return int(self.getSensorData("SUNSHINEDURATION", channel)) + + def get_brightness(self, channel=None): + return int(self.getSensorData("ILLUMINATION", channel)) + + def get_operating_voltage(self, channel=None): + return float(self.getAttributeData("OPERATING_VOLTAGE", channel)) + + def is_raining(self, channel=None): + return bool(self.getBinaryData("RAINING", channel)) + + def is_low_batt(self, channel=None): + return bool(self.getAttributeData("LOW_BAT", channel)) + + def is_temperature_out_of_range(self, channel=None): + return bool(self.getAttributeData("TEMPERATURE_OUT_OF_RANGE", channel)) + + +class IPWeatherSensorBasic(HMSensor, HMBinarySensor): + """HomeMatic IP Weather sensor Basic.""" + + def __init__(self, device_description, proxy, resolveparamsets=False): + super().__init__(device_description, proxy, resolveparamsets) + + # init metadata + self.SENSORNODE.update({"ACTUAL_TEMPERATURE": [1], + "HUMIDITY": [1], + "WIND_SPEED": [1], + "SUNSHINEDURATION": [1], + "ILLUMINATION": [1]}) + self.ATTRIBUTENODE.update({"LOW_BAT": [0], + "ERROR_CODE": [0], + "OPERATING_VOLTAGE": [0], + "TEMPERATURE_OUT_OF_RANGE": [0]}) + + def get_temperature(self, channel=None): + return float(self.getSensorData("ACTUAL_TEMPERATURE", channel)) + + def get_humidity(self, channel=None): + return int(self.getSensorData("HUMIDITY", channel)) + + def get_wind_speed(self, channel=None): + return float(self.getSensorData("WIND_SPEED", channel)) + + def get_sunshineduration(self, channel=None): + return int(self.getSensorData("SUNSHINEDURATION", channel)) + + def get_brightness(self, channel=None): + return int(self.getSensorData("ILLUMINATION", channel)) + + def get_operating_voltage(self, channel=None): + return float(self.getAttributeData("OPERATING_VOLTAGE", channel)) + + def is_low_batt(self, channel=None): + return bool(self.getAttributeData("LOW_BAT", channel)) + + def is_temperature_out_of_range(self, channel=None): + return bool(self.getAttributeData("TEMPERATURE_OUT_OF_RANGE", channel)) + class IPPassageSensor(HMSensor, HMBinarySensor, HelperEventRemote, HelperLowBatIP): """HomeMatic IP Passage Sensor. #2 = right to left, #3 = left to right""" @@ -680,6 +771,8 @@ def get_air_pressure(self, channel=None): "KS550Tech": WeatherSensor, "KS550LC": WeatherSensor, "HmIP-SWO-PR": IPWeatherSensor, + "HmIP-SWO-PL": IPWeatherSensorPlus, + "HmIP-SWO-B": IPWeatherSensorBasic, "WS550": WeatherStation, "WS888": WeatherStation, "WS550Tech": WeatherStation, diff --git a/setup.py b/setup.py index 2d4c15539..612667dfb 100644 --- a/setup.py +++ b/setup.py @@ -7,7 +7,7 @@ def readme(): PACKAGE_NAME = 'pyhomematic' HERE = os.path.abspath(os.path.dirname(__file__)) -VERSION = '0.1.47' +VERSION = '0.1.48' PACKAGES = find_packages(exclude=['tests', 'tests.*', 'dist', 'build'])