It ended up spanning a custom PCB, ESP8266 firmware, a Hall-effect position sensor, parameterized OpenSCAD parts, AWS IoT, and Google Home integration. The system worked end to end, although I moved out before fixing a mechanical alignment issue that would eventually pull the drive wheel off its shaft.
The source code and design files are linked in the post. Mechanical and electrical design were the least familiar parts of the project for me, so I'd be especially interested in how others would approach the mounting and hardware. I'm also happy to answer questions about any layer of the build.