Remember this old thing? As a final group project, we rebuilt my botched attempt at a smart mirror, with actual test-driven development this time round.
The idea is that the mirror is a self-contained product, capable of running a server on itself and displaying an interface with widgets. A user would connect the mirror to their wifi network and configure the widgets externally from a phone or computer on the same network, similar to the configuration of a router.
The personalisation dashboard has a grid that represents the available positions of a widget on the interface. In the example below, the clock widget would appear in the top left corner of the mirror interface. The widget blocks can be toggled on/off and moved around by dragging and dropping into position on the grid.
One of the challenges was to somehow get the mirror interface to update itself
when a user changed the dashboard settings, as there aren't any touch-screen
capabilities (but think of the smudges if there were, shudder). As the
settings were saved to disk in a
json file, I used BrowserSync to listen to
changes on that particular file, then force a refresh of the mirror interface
without user intervention. Voilá, a self-updating smart mirror.
We also experimented with using a LeapMotion sensor to put the mirror to sleep and wake it up with a swipe gesture, as well as some more advanced widgets like radio alarms that could be snoozed with a different gesture.
Watch the video of the project in progress. Just a warning, there's a cringeworthy amount of my face in it. I did not make the video