async def test_set_speed_belief_speed_100(hass: core.HomeAssistant): """Tests that set power belief service delegates to API.""" await setup_platform( hass, FAN_DOMAIN, ceiling_fan("name-1"), bond_device_id="test-device-id" ) with patch_bond_action() as mock_action, patch_bond_device_state(): await hass.services.async_call( BOND_DOMAIN, SERVICE_SET_FAN_SPEED_TRACKED_STATE, {ATTR_ENTITY_ID: "fan.name_1", "speed": 100}, blocking=True, ) await hass.async_block_till_done() mock_action.assert_any_call("test-device-id", Action.set_power_state_belief(True)) mock_action.assert_called_with("test-device-id", Action.set_speed_belief(3))
async def async_set_speed_belief(self, speed: int) -> None: """Set the believed speed for the fan.""" _LOGGER.debug("async_set_speed_belief called with percentage %s", speed) if speed == 0: await self.async_set_power_belief(False) return await self.async_set_power_belief(True) bond_speed = math.ceil(percentage_to_ranged_value(self._speed_range, speed)) _LOGGER.debug( "async_set_percentage converted percentage %s to bond speed %s", speed, bond_speed, ) try: await self._hub.bond.action( self._device.device_id, Action.set_speed_belief(bond_speed) ) except ClientResponseError as ex: raise HomeAssistantError( f"The bond API returned an error calling set_speed_belief for {self.entity_id}. Code: {ex.code} Message: {ex.message}" ) from ex