This is almost always the wrong way to solve the problem. Trying to automate a human-friendly interface is far more trouble than it's worth, when you can easily use a machine-friendly interface to begin with.
For example, dishwashers aren't robots which stand in front of a sink, squeezing bottles of detergent on to a cloth and rubbing it over a stack of dishes. Instead, they're self-contained beige boxes with a well-defined input/output mechanism (racks to hold the dishes; standard plug for electricity; standard plumbing connections).
It's like screen-scraping your own application. Or writing a CLI's main loop with `expect`. Or when sci-fi films show robots typing on computer keyboards.
Let's take your example. Unless you're living in a backwards universe I'll assume that you want to put bread in the toaster. There are existing solutions to this, e.g. many hotels have toasters with a conveyor belt; rather than having to line anything up, there's a large catchment area to plonk the bread on to. A harder problem would be separating the slices of the loaf; this can be entirely avoided if the user "loads" a whole loaf at once, like a cartridge. E.g. by inserting paddles between the slices, they won't be exposed enough to go bad, but are easily separated as needed.
With everything roughly lined up there's not really anything to control other than turning it on. Plugs with timers are easy to get hold of (I use them for switching on lights in the evening). You could use something smarter like a clapper. Even if you use a "smart plug", there's no need for the toaster itself to be any different.