After being absent from this blog for quite some time, I’d like to give you a quick update on my mirror project. The filesystem of my Raspberry Pi’s SD-card got corrupted some time ago and I haven’t found the motivation to reinstall the system and all my scripts since then, well at least not until two days ago. Because I had to setup the system from scratch again anyway I used the opportunity to use the newest Raspbian version “Jessie” this time and also to match my modified mirror interface code with the original from Michael Teeuw again. Some thoughts about the new Linux version: I really like the way systemd handles process managing and starting, seems a lot simpler to me than it was before but that’s not the topic today.

A few months ago I took the code from the Raspberry Pi Face Recognition Treasure Box and modified it in a way so that it’s no longer just able to recognize one valid face but to differentiate between multiple faces and therefore to know who’s standing in front of the mirror. The python script  is now constantly trying to match people to a known set of trained faces and if one is recognized displays a welcome message and personalized information for that user.

Because the number of my components and running processes keeps increasing, I sketched a quick schematic yesterday to not loose sight of who is talking to whom.
Software:Hardware magischer Spiegel

On the bottom of the software side, we have the mirrorcontroller. It is responsible for all kind of GPIO-stuff, like monitoring the motion sensor and a button. In the future it will also controls the colors of some RGB LED’s I will use for lighting up the person in front of the mirror but that’s still to be implemented. If something moves, a relay turns on the display and a signal is send to the face recognition service, which then starts to take pictures and searches them for faces. If the service recognizes a face the data is send to the SocketIOServer, which further sends it to the web interface to display the welcome message and the information for the user. Other features of the SocketIOServer are:

  • Online Banking, to show the users current bank balance
  • Collecting statistics from my Vimeo-videos
  • Investigating how much space is still left on my server
  • Detecting incoming calls via the Fritz!Box (a German internet router and phone system) call monitor
  • Pulling invoices my clients still need to pay from Invoice Ninja

In a future update I will also add gathering my ToDo’s from Wunderlist but until now that’s it.