Hvordan får man spredd informasjon til en hel avdeling på en enkel måte? Vi prøver med et magisk speil.
I avdelingen vår (Medieutvikling) har vi innovasjonsdager en gang i måneden. Her oppfordres det til å jobbe med ting vi måtte brenne for, gjerne utenom de vanlige dagligdagse tingene. Dermed fant vi ut at det var på tide å prøve å lage et «magisk speil» tilrettelagt for bruk på avdelingen vår. Det florerer av varianter på nettet nå, og mange har tatt utgangspunkt i løsningen som Michael Teeuw har publisert på sin GitHub-konto.
Dette er en Node-applikasjon som kjøres under Electron og kan brukes på de fleste plattformer. Men en Raspberry Pi er nok å foretrekke som produksjonsplattform pga. størrelsen, og det er dette applikasjonen primært er laget for.
Det som er spennende med prosjektet, er at man tar i bruk en vanlig hverdagslig gjenstand, og konverterer den til en smart IoT-dings som til og med kan falle i smak blant de mindre teknofile. Dette er noe som kan komme godt med når teknologi skal få inpass i de respektive hjem. Responsen blant mine kollegaer har i alle fall vært udelt positive.
Clik here to view.

Konstruksjon av kabinett
Det første valget som ble gjort, var å finne ut hvor stort speilet skulle være. Vi tok i litt, og endte opp med en speilflate på 1600 x 900 mm. Speilet er halvgjennomsiktig, slik man ser fra f.eks. forhørsrom og sikkerhetsbur på flyplasser.
Så lenge det er mørkt på baksiden, ser det ut som et vanlig speil fra andre siden. Med en monitor bak, vil tekst og grafikk fra denne lyse gjennom. Speilet ble bestilt hos glassmester, men det er også mulig å lage en billigere variant med vanlig glass og påklistret halvgjennomsiktig film. Omtrent som solskjerming på bilruter.
Clik here to view.

Siden NRK har et eget snekkerverksted, bestemte vi oss for å få laget et ordentlig møbel. Vi hadde noen ideer til skisse, som sørget for god plass innvendig for fremtidige utvidelser. I tillegg skulle installasjonen kunne være frittstående, slik at den kunne plasseres hvor som helst og ikke være avhengig av en vegg å henge på. Materialet ble eik og sluttproduktet fikk et godt lag med olje, for å fremheve strukturen i treet. Snekkerverkstedet har gjort en kjempejobb, og de innfridde alle forventningene våre og mer til.
Andre spesifikasjoner vi ønsket:
- Lett å komme til på innsiden
- Mulighet for å skifte monitor, uten å demontere hele greia
- Plass til å montere diverse sensorer
- God lufting. En monitor avgir tross alt en del varme.
Monitorvalg og innmontering
Monitoren som først ble valgt, var en 27″ som hadde ramlet ned fra sin høye pult. Den var noe skranglete i plastsammenføyningene, men fungerte som den skulle. Først tenkte vi å demontere alle plastdetaljene. Men dette var unødvendig, da speilet har god plass i dybden. Etter testing, fant vi fort ut at monitoren ble alt for liten til vårt store speil og valget falt på en 45″ i portrettformat i stedet. Det er faktisk plass til en 65″, men det er ikke akkurat noe man finner liggende.
Clik here to view.

En solid «hylle» i 22 mm kryssfiner ble laget for å holde monitoren på plass. Etter en del kontrollmålinger, ble det boret hull som passet med VESA-innfestingshullene på monitoren slik at den satt horisontalt midt i speilet. Vi var forutseende nok til å klistre svart elektrikertape over den blanke rammen på monitoren, siden den antakelig ville synes gjennom speilet. Hylla ble skrudd fast i kabinettet, slik at monitoren går kant i kant med øverste del av speilet. Pga. tyngden av speil og monitor, måtte vi legge en solid vekt i bunn av kabinettet så det ikke tippet over.
Mørklegging
Selv om bakplatene er påmontert, vil lys slippe inn i kabinettet gjennom speilet, og dette gjør at hele innmaten synes. Dette var selvfølgelig forventet og planen var å bruke Molton-duk til avskjerming. Dette er en svart filtaktig duk, som benyttes i all TV-produksjon for å få det helt mørkt der det skal være mørkt. Duken ble forsøkt montert på baksiden av speilet rundt monitor, men vi fant snart ut at svart papp var mye enklere å forme og feste. Pappen ble klippet til og festet med gaffateip.
Clik here to view.

Nå ble resultatet nesten 100% men det var fortsatt små ting som syntes. F.eks. var kanten på pappen hvit, så den måtte gås over med svart tusj. Etter å ha justert bakgrunnsbelysning og kontrast på skjerm, var det nå ikke lengre mulig å se at det var en skjerm bak speilet. Teksten så ut til å være tegnet rett på glasset og følelsen man har er at selve speilet er en stor skjerm. Selvfølgelig går man automatisk ut fra at den har berøringsfunksjon, noe fingermerker skulle avsløre etter hvert.
Teknisk innmat
En Raspberry Pi 3, pluss noen tilleggssensorer for fremtidige utvidelser, ble bestilt og kom heldigvis tidsnok til start på innovasjonsdagen i november 2016. Man kan også bruke en Pi 2 med WiFi dongle, eller selvfølgelig en CAT-kabel hvis det må til. I vårt tilfelle endte det dessverre med det, da vårt lab-nettverk ikke rakk bort til den endelige plasseringen.
Image may be NSFW.
Clik here to view.
I tillegg trenger man en monitor, tastatur (og mus hvis man ikke er komfortabel med kommandolinje), minnekort, HDMI-kabel, strømforsyning og innbyggingsboks til Pi.
Først og fremst må PI’en installeres med OS og en enkel beskrivelse av dette finner du her/.
Konfigurering av Pi
Noen ting er greit å få gjort med en gang. Koble Pi til trådløst nettverk, sette opp SSH-tilgang for terminal- og FTP-aksess, angi et maskinnavn, bytte standard passord og endre språk. Alt dette er standard Raspberry Pi oppsett og man finner beskrivelse på her/.
For at Electron-applikasjonen skal kjøre, må Pi bootes i GUI, og dette kan settes opp i raspi-config.
MagicMirror
Applikasjonen installeres enkelt fra GitHub, og Michael Teeuw gir en utførlig forklaring/.
Det er også en beskrivelse av hvilke tilleggskonfigurasjoner man bør gjøre med Pi’en.
Moduler
Installasjonen kommer med en del ferdige moduler, slik som Clock, Calendar, Current Weather, Weather Forecast, News Feed, Compliments, Hello World og Alert og noen av disse vises som standrad når man har startet applikasjonen. I tillegg finnes en ganske lang liste med 3. parts moduler tilgjengelig, men det mest spennende er nok å lage noen selv.
Egne moduler
Det er relativt enkelt å lage egne moduler, forutsatt at man behersker Javascript, HTML og CSS. Det er laget en grei og oversiktlig dokumentasjon for å utvikle disse. I løpet av et par dager, var følgende moduler laget:
MMM-YrNow
Siden artikkelforfatter jobber på Yr, var det jo nærliggende å finne noe bedre enn værvarsel fra OpenWeatherMap. Vi hadde jo akkurat lansert Nåvarsel på Yr, som viser om det kommer nedbør de neste 90 minutter. Dette syntes vi var midt i blinken og modulen ble laget i løpet av en seinere innovasjonsdag. Den viser vanlig varsel for inneværende time, hvis det ikke er noe regn i sikte. Hvis det begynner å regne om noen minutter, vises en paraply og hvor lenge det er til det starter å regne. Hvis det regner, vises paraply med regnanimasjon og hvor lenge det er til opphold. Modulen er tilgjengelig på NRK’s GitHub konto
MMM-Slack
Vi bruker Slack som samhandlingsverktøy og vi tenkte det ville være en god ide å kunne sende meldinger til speilet. Tanken var at gjennom en Slack-kanal, hvor bare enkelte har tilgang, kan slike felles-meldinger bli sendt til speilet. Denne modulen ligger også på NRK’s GitHub konto
Utviklingsplattform
Selv har jeg installert MagicMirror lokalt på min PC og kjører den i serveronly-modus. Dermed kan jeg bruke en vanlig nettleser for å aksessere webapplikasjonen og har dermed tilgang til feilsøkings-verktøy. Det er ikke alltid så lett å feilsøke, spesielt ikke i de såkalte node_helper.js filene, men utstrakt bruk av console.log fungerer greit.
Clik here to view.

Oppe til venstre: standard klokke modul
Midten oppe: standard RSS-feed modul, men med innhold fra NRK
Øverst til høyre: egenutviklet modul for Yr sitt Nåvarsel
Midten under: egenutviklet modul for Slack-integrering
Midten nede: standard kompliment modul med forskjellige tekster avhengig av tidspunkt
Videre ideer
Noen tanker er allerede gjort rundt mulige utvidelser, spesielt bruk av sensorer
Kamera
En spennende løsning er ansiktsgjenkjenning med OpenCV
Kan brukes til å personalisere innholdet på skjermen
Microsoft Kinect-/Wii-sensor
Kontrollere innholdet ved hjelp av håndbevegelser som swipe, scroll, push eller virtuelt tastatur
Avstandssensor
Trigger hendelser avhengig av avstand til speilet. F.eks. kan man bruke hele flaten for å vise bare en modul, når ingen står rett foran og bytte til flere moduler når noen står foran
- Starter ansiktsgjenkjenning ved en gitt avstand
- Skru av/på monitor
Bevegelsessensor
Ser om noen beveger seg i nærheten av speilet
- Påkalle oppmerksomhet
- Skru av/på monitor
Andre ideer
- Når går neste T-bane/buss går og i hvilken retning
- Vis viktige nyhetshendelser fra nrk.no
- Bytt radiokanal eller spor på streaming-tjensten du hører på
- Stemmestyring
I det hele tatt er det en mengde moduler man kan tenke seg å lage. Når jeg skal bygge et slikt speil til heimen, vil jeg ha en modul som sier noe om toget mitt er i rute når jeg står på badet om morgenen.
Modulene kan kommunisere med hverandre, slik at en modul kan vise/skjule andre moduler. Det er laget løsninger som roterer moduler som en bildekarusell, slik at man får plass til flere. Man kan animere bakgrunnen med CSS, selv om dette ikke er veldig ressursvennlig, og få det til å snø hvis værmeldingen tilsier det. I det hele tatt er det bare fantasien som setter begrensninger for hva man kan gjøre.
Michael Teeuw har gjort en glimrende jobb i å lage en applikasjon som er svært lett å tilpasse eget bruk og det ser ut til at mange brukere er enige i dette. Husk å ha en god mikrofiberklut tilgjengelig, for å tørke av fingermerker, spesielt hvis speilet skal stå et sted med mange potensielle brukere.
Hvis du allerede har laget et slikt speil, del gjerne dine erfaringer med oss.
Image may be NSFW.
Clik here to view.
Clik here to view.
Clik here to view.
Clik here to view.
Clik here to view.
Clik here to view.