Motor on rollerblind

Hey! I am working on a project where I put a stepper motor (28byj-48) on a rollerblind and want to have a physical button but also later might add Google Home to it, I am thinking that it would be good to start of with a good code for the project without Google Home and add it later, I could use a Arduino nano to start with and change to ESP3266 later. So what i want my code to do (singlebutton)

  1. First startup calibrate maximum distance (how many steps it can go up and down) and I am thinking about pressing three times and holding the button down until it reaches the maximum level (for ex down) and then up. Storing these to be use until next calibration? Is it possible...? I mean that if your power goes out it can save so it knows where it is and what calibration is done. Just a wonder because that would be really good.

  2. Go up or down when button is pressed (depends on where the rollerblind is) and a add on would be to single press and hold to get to a position between up/down since you some times only want to have it slightly down or up.

Is this possible and what should i start with?
I have trying around with the steppermotor example and I have basic understanding of programming but not at this level.

Thanks for help//
Best Regards

Stepper motors will also cog (miss steps) if stalled or over loaded. Consider using a rotary shaft encoder. You may also want to do some self calibration routines as well. There is EEPROM memory so you can save the current count state.