def test_dyson_set_temperature(self): """Test set climate temperature.""" device = _get_device_heat_on() device.temp_unit = TEMP_CELSIUS entity = dyson.DysonPureHotCoolLinkDevice(device) assert not entity.should_poll # Without target temp. kwargs = {} entity.set_temperature(**kwargs) set_config = device.set_configuration set_config.assert_not_called() kwargs = {ATTR_TEMPERATURE: 23} entity.set_temperature(**kwargs) set_config = device.set_configuration set_config.assert_called_with(heat_mode=HeatMode.HEAT_ON, heat_target=HeatTarget.celsius(23)) # Should clip the target temperature between 1 and 37 inclusive. kwargs = {ATTR_TEMPERATURE: 50} entity.set_temperature(**kwargs) set_config = device.set_configuration set_config.assert_called_with(heat_mode=HeatMode.HEAT_ON, heat_target=HeatTarget.celsius(37)) kwargs = {ATTR_TEMPERATURE: -5} entity.set_temperature(**kwargs) set_config = device.set_configuration set_config.assert_called_with(heat_mode=HeatMode.HEAT_ON, heat_target=HeatTarget.celsius(1))
def test_dyson_set_temperature(self): """Test set climate temperature.""" device = _get_device_heat_on() device.temp_unit = TEMP_CELSIUS entity = dyson.DysonPureHotCoolLinkDevice(device) assert not entity.should_poll # Without target temp. kwargs = {} entity.set_temperature(**kwargs) set_config = device.set_configuration set_config.assert_not_called() kwargs = {ATTR_TEMPERATURE: 23} entity.set_temperature(**kwargs) set_config = device.set_configuration set_config.assert_called_with( heat_mode=HeatMode.HEAT_ON, heat_target=HeatTarget.celsius(23)) # Should clip the target temperature between 1 and 37 inclusive. kwargs = {ATTR_TEMPERATURE: 50} entity.set_temperature(**kwargs) set_config = device.set_configuration set_config.assert_called_with( heat_mode=HeatMode.HEAT_ON, heat_target=HeatTarget.celsius(37)) kwargs = {ATTR_TEMPERATURE: -5} entity.set_temperature(**kwargs) set_config = device.set_configuration set_config.assert_called_with( heat_mode=HeatMode.HEAT_ON, heat_target=HeatTarget.celsius(1))
def test_heat_target_fahrenheit(self): self.assertEqual(HeatTarget.fahrenheit(77), "2980") with self.assertRaises(DysonInvalidTargetTemperatureException) as ex: HeatTarget.fahrenheit(99) invalid_target_exception = ex.exception self.assertEqual(invalid_target_exception.temperature_unit, DysonInvalidTargetTemperatureException.FAHRENHEIT) self.assertEqual(invalid_target_exception.current_value, 99) self.assertEqual(invalid_target_exception.__repr__(), "99 is not a valid temperature target. " "It must be between 34 to 98 inclusive.")
def test_heat_target_celsius(self): self.assertEqual(HeatTarget.celsius(25), "2980") with self.assertRaises(DysonInvalidTargetTemperatureException) as ex: HeatTarget.celsius(38) invalid_target_exception = ex.exception self.assertEqual(invalid_target_exception.temperature_unit, DysonInvalidTargetTemperatureException.CELSIUS) self.assertEqual(invalid_target_exception.current_value, 38) self.assertEqual(invalid_target_exception.__repr__(), "38 is not a valid temperature target. " "It must be between 1 to 37 inclusive.")
def _get_device_cool(): """Return a device with state of cooling.""" device = mock.Mock(spec=DysonPureHotCoolLink) device.name = "Device_name" device.state.tilt = TiltState.TILT_FALSE.value device.state.focus_mode = FocusMode.FOCUS_OFF.value device.state.heat_target = HeatTarget.celsius(12) device.state.heat_mode = HeatMode.HEAT_OFF.value device.state.heat_state = HeatState.HEAT_STATE_OFF.value device.environmental_state.temperature = 288 device.environmental_state.humidity = 53 return device
def test_dyson_set_temperature_when_cooling_mode(self): """Test set climate temperature when heating is off.""" device = _get_device_cool() device.temp_unit = TEMP_CELSIUS entity = dyson.DysonPureHotCoolLinkDevice(device) entity.schedule_update_ha_state = mock.Mock() kwargs = {ATTR_TEMPERATURE: 23} entity.set_temperature(**kwargs) set_config = device.set_configuration set_config.assert_called_with(heat_mode=HeatMode.HEAT_ON, heat_target=HeatTarget.celsius(23))
def test_dyson_set_temperature_when_cooling_mode(self): """Test set climate temperature when heating is off.""" device = _get_device_cool() device.temp_unit = TEMP_CELSIUS entity = dyson.DysonPureHotCoolLinkDevice(device) entity.schedule_update_ha_state = mock.Mock() kwargs = {ATTR_TEMPERATURE: 23} entity.set_temperature(**kwargs) set_config = device.set_configuration set_config.assert_called_with( heat_mode=HeatMode.HEAT_ON, heat_target=HeatTarget.celsius(23))
def set_temperature(self, **kwargs): """Set new target temperature.""" target_temp = kwargs.get(ATTR_TEMPERATURE) if target_temp is None: return target_temp = int(target_temp) _LOGGER.debug("Set %s temperature %s", self.name, target_temp) # Limit the target temperature into acceptable range. target_temp = min(self.max_temp, target_temp) target_temp = max(self.min_temp, target_temp) from libpurecoollink.const import HeatTarget, HeatMode self._device.set_configuration( heat_target=HeatTarget.celsius(target_temp), heat_mode=HeatMode.HEAT_ON)
def test_set_configuration_hot(self, mocked_connect, mocked_publish): device = DysonPureHotCoolLink({ "Active": True, "Serial": "device-id-1", "Name": "device-1", "ScaleUnit": "SU01", "Version": "21.03.08", "LocalCredentials": "1/aJ5t52WvAfn+z+fjDuef86kQDQPefbQ6/70ZGysII1K" "e1i0ZHakFH84DZuxsSQ4KTT2vbCm7uYeTORULKLKQ==", "AutoUpdate": True, "NewVersionAvailable": False, "ProductType": Hot }) network_device = NetworkDevice('device-1', 'host', 1111) device._add_network_device(network_device) device._current_state = DysonPureCoolState( open("tests/data/state_hot.json", "r").read()) device.connection_callback(True) device.state_data_available() device.sensor_data_available() connected = device.auto_connect() self.assertTrue(connected) self.assertEqual(mocked_connect.call_count, 1) device.set_configuration(fan_mode=FanMode.FAN, oscillation=Oscillation.OSCILLATION_ON, fan_speed=FanSpeed.FAN_SPEED_3, night_mode=NightMode.NIGHT_MODE_OFF, quality_target=QualityTarget.QUALITY_NORMAL, standby_monitoring=SM.STANDBY_MONITORING_ON, heat_mode=HeatMode.HEAT_ON, focus_mode=FocusMode.FOCUS_ON, heat_target=HeatTarget.celsius(25)) self.assertEqual(mocked_publish.call_count, 3) self.assertEqual( device.__repr__(), "DysonPureHotCoolLink(serial=device-id-1,active=True," "name=device-1,version=21.03.08,auto_update=True," "new_version_available=False,product_type=455," "network_device=NetworkDevice(name=device-1," "address=host,port=1111))") device.disconnect()
print("Turning Dyson Off") devices[0].set_configuration(fan_mode=FanMode.OFF) elif ("oscillate" in command): if (command[-1] == "n"): devices[0].set_configuration( oscillation=Oscillation.OSCILLATION_ON) elif (command[-1] == "f"): devices[0].set_configuration( oscillation=Oscillation.OSCILLATION_OFF) elif ("night" in command): if (command[-1] == "n"): devices[0].set_configuration(night_mode=NightMode.NIGHT_MODE_ON) elif (command[-1] == "f"): devices[0].set_configuration(night_mode=NightMode.NIGHT_MODE_OFF) else: # At this point, we're dealing with parameters with numbers (speed, heat and sleep) if ("speed" in command): parameter = command.split()[-1] print("Setting Speed to " + parameter) devices[0].set_configuration(fan_speed=FanSpeed["FAN_SPEED_" + parameter]) elif ("heat" in command): parameter = command.split()[-1] print("Setting Heat to " + parameter + "C") devices[0].set_configuration( heat_target=HeatTarget.celsius(parameter)) elif ("sleep" in command): parameter = int(command.split()[-1]) print("Sleeping in " + parameter + " minutes") devices[0].set_configuration(sleep_timer=parameter)