Magic Mirror II: De interface

In deel 1 ben ik begonnen met het maken van een Smart Mirror. Nu deel 2: wat komt er op de spiegel?

Aangezien we een tablet hebben die op Android werkt, is het idee om de spiegelinterface te laten draaien in Chrome. We zullen de interface dus ontwikkelen in HTML/Javascript en met Chrome heb je hier hele leuke mogelijkheden bij. Ook de tweede spiegel, welke draait op een Raspberry Pi draait op Chromium en heeft hierdoor dezelfde mogelijkheden.

Als basis heb ik het script gepakt van Evan Cohen. Dit is al een erg compleet script met veel leuke dingen. Zoals bijvoorbeeld spraakherkenning. Je kunt dus praten tegen je spiegel. GENIAAL!

Het blijkt dus dat Chrome een standaard spraakherkenning-extentie heeft waarbij dit heel eenvoudig geregeld is. Zo gezegd, zo gedaan en eerst de commando’s en de interface vernederlangscht. Als je dan tegen je spiegel kunt praten, zorg dan dat het in het Nederlands kan. Ook Nederlands weer en tijdnotatie is wel zo fijn. Volgende punt is het uitdenken: wat kun je en wil je met een spiegel. Zo had ik een paar wensen:

  • Je afspraken kunnen zien
  • Headlines bekijken
  • Het weer/buienradar
  • Boodschappenlijstje bijhouden
  • Een herinnering opslaan
  • Domotica eraan koppelen
  • en natuurlijk: ‘Spiegeltje, spiegeltje aan de wand…’

Aangezien de spiegel toch een van de eerste dingen is die je ziet op een dag, wil ik graag ook direct een overzicht van de dag hebben. Een beetje zoals in je berichtencentrum van je iPhone. Het eerste was dus om je afspraken te kunnen bekijken die je binnenkort hebt. Nu houden wij onze afspraken bij in Exchange. Dus hiervoor een script gehaald welke de eerstkomende 5 afspraken hieruit haalt en deze laat zien. Eventueel met een kleurtje voor wie de afspraak is. Headlines waren ook niet zo moeilijk, een RSS-feed vanaf de NOS en klaar-is-kees.

Het weer stond al in het script die ik ‘geleend’ had. Hierbij heb ik zelf nog een scriptje geschreven welke kijkt wanneer het gaat regenen en dit ook laat zien als dat zo is. Daarnaast nog een leuk icoontje erbij van Skycons.

Boodschappen en herinneringen bijhouden was ook een vereiste. Denk een beetje aan een krijtbord wat mensen thuis hebben. Nu heb ik deze functie gesplitst in 2 dingen. Je kunt max. 1 herinnering op de spiegel kwijt. Deze staat altijd op het scherm. Daarnaast kun je een boodschappenlijstje op de spiegel zetten, maar deze boodschappen staan gegroepeerd en op het startscherm zie je alleen of, en hoeveel boodschappen er op het lijstje staan. Dit werkt ook leuk met de spraakherkenning. Je zegt tegen de spiegel: ‘herinner me: grijze bak buiten zetten’ of ‘zet op het boodschappenlijstje: hagelslag’. Een todo-puntje hierin is nog om de boodschappen automatisch de koppelen aan de Appie-app.

Domotica, daar begon het verhaaltje mee en wil ik ook met de spiegel kunnen. Aangezien de domotica die we gebruiken, Domoticz, een makkelijke API heeft, is deze er zo aan gekoppeld. De spiegel kan nu op spraak alle lampen aan- of uitschakelen. Een todo-puntje hierin is nog om ook statistieken van bijvoorbeeld het stroomverbruik op het scherm te toveren.

Laatste puntje is een soort easter egg, waar eigenlijk geen magic mirror zonder kan. Vraag de spiegel: “Spiegeltje, spiegeltje aan de wand, wie is het mooiste van het land?” en hij zal je antwoord geven.

Ook voor anderen

Ik zit eraan te denken om ook spiegels voor anderen te maken. Daarom heb ik het script op m’n domein gezet, waar de spiegels ook vanaf zullen draaien. Je kunt dit bekijken op: https://mirror.kixass.net.

In deel 3 gaan we beginnen met het bouwen van de spiegel zelf. Dat lees je binnenkort.

2 thoughts on “Magic Mirror II: De interface

  1. Pingback: Magic Mirror I: Het idee | KixAss.net

  2. Rick

    Ik was me aan het verdiepen in magic mirror 2 en kwam zo op jou site. Super project, precies dat wat nodig!

    Ben je misschien van plan de source code te willen delen voor andere gebruikers die wellicht het e.e.a. willen aanpassen?

    Reply

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *