nrk.no

Slik bygde vi et «magisk» smart speil

Kategorier: Tips & Tricks & Utvikling

Foto: Ståle Grut / NRKbeta

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.

Magisk speil 1.0 på plass i gangen til Medieutvikling
Magisk speil 1.0 på plass i gangen til Medieutvikling

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.

Magisk speil under konstruksjon
Magisk speil under konstruksjon

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.

Magisk speil monitorfeste
Monitorhylle med hull boret etter VESA-standarden

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.

Magisk speil mørkelegging
Svart papp, hvit på baksiden og NRK-blylodd i bunn for å hindre at speilet tipper

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.

Magisk speil raspberry

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å Yr sin 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.

Magisk speil utviklermiljø
MagicMirror, slik den ser ut på min utvikler-PC

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.

Magisk speil på plass

45 kommentarer

  1. Har faktisk fått laget meg et slikt hjemme.
    Ikke like stort selvfølgelig, og jeg gikk også for billig varianten med solfilm fra biltema (mye mye billigere for mannen i gata).

    Får ikke sendt noe bilde desverre, da jeg nettopp plukket det fra hverandre for å montere kamera. Litt prøv og feil for øyeblikket, men har faktisk fått PIen til å registrere ansikt, slik at den er mørk frem til den ser at det er en person foran speilet. Neste steg er å få den til å kjenne igjen hvem det er for personlig innhold. OpenCV er vegen å gå 😀

    Svar på denne kommentaren

    • Sigbjørn Trageton (NRK) (svar til Aleks)

      Hei Aleks!
      Høres ut som du er kommet godt på vei. Ansiktsgjenkjenning synes jeg ser spennende ut,spesielt fordi speilet da automatisk kan tilpasse innholdet til brukeren. Kan nok by på utfordringer her jeg jobber, med over 100 medarbeidere… Men hjemme, står dette høyt på lista over funksjoner jeg ønsker.

    • Sigbjørn Trageton (NRK) (svar til Mats)

      Hei!
      Vi har ikke fått testet med film selv, men ser en del selvbyggere som har lagt ut prosjektene sine basert på dette. En del type solfilm kan være for mørke, dvs. at de har for liten speileffekt. Det som er viktig, hvis man velger film, er at den er av god kvalitet (ikke bulker seg lett) og at den ligger helt slett mot glasset. Hvis ikke, kan speilbildet bli forvrengt. Sjekk ut forhandlere av bilrekvisita, eller leverandører av solavskjerming til boliger/kontorer. Det finnes også leverandører av to-veis akrylglass (vet ikke om det finnes noen norske), som også er rimeligere enn tilsvarende i glass.

    • Eivind (svar til Aleks)

      Hvilken solfilm brukte du?
      Hvordan ble resultatet i forhold til NRK sitt?
      Vurderer å lage det selv men prøver å holde det så billig som mulig.

  2. Jan Henrik Gundelsby

    Flott artikkel. Har gjort akkurat det samme hjemme for speilet i gangen.

    Bruker Sonos-modulen for å vise musikken som spilles, Cato (over) sin Ruter-modul, samt rss-feed fra NRK for å få nyheter. I tillegg til Netatmo (netatmo.com/en-US/site) for å vise temperatur inne og ute. Genialt når du skal kle på ungene om morgenen.

    Har også Amazon Alexa med Sonos-integrasjon for å bestemme musikken i diverse rom som igjen vises på speilet.

    Min datter ønsker seg funksjonalitet for «Speil, speil på veggen der – hvem er vakrest i landet her»… vi får se…

    Svar på denne kommentaren

  3. Espen Johnsen

    Jeg er i prosessen (har vært i 2 år nå) med å bygge et slik selv, men er i tvil på om det er verdt å bruke pengene på det som på fagspråket heter argusspeil. Jeg har fått pris på speil som kan dekke en 27″ skjerm til 2100,- inkl mva.
    Noen som har erfaring med hvor mye dårligere en solfilm fra biltema er?

    Svar på denne kommentaren

  4. Martin Koksrud Bekkelund

    Litt på siden, men jeg er glad for at dere i NRKbeta den siste tiden har gått litt tilbake til røttene og skrevet saker om hva som rører seg bak kulissene i NRK. Jeg liker jevnt over det dere skriver, men det er alltid moro med tant og fjas og se hvordan ting lages.

    Svar på denne kommentaren

    • Anders Hofseth (NRK) (svar til Martin Koksrud Bekkelund)

      Haha.
      Takk skal du ha, men det holder nok ikke lenge 😉 Vi skriver om ting vi jobber med, og verden er slik at vi ikke bare jobber med tekniske ting, vi jobber også med journalistikk. Og selv om det muligens er kjedeligere å lese om for noen av hardcore-leserne, så vil jeg tro mange av dere i det større bildet også – ihvertfall om dere kjenner litt dypere etter – verdsetter at noen jobber med å se litt dypere på hvordan media virker / ikke virker i samfunnet. Som foreksempel saken jeg trykker publish på om 2 minutter. …håper jeg, da.

  5. Trond Michelsen

    Hvor realistisk er det å montere noe lignende inni en standard innervegg (7-8cm dybde), der man heller ikke har tilgang fra baksiden?

    Speilet kan sikker hengsles eller monteres slik at det er lett å hekte av. Så må skjermen festes i en eller annen brakett som kan løftes ut fra forsiden. Burde vel også la seg gjøre.
    Hvor tett opptil speilet må skjermen sitte for at det skal se bra ut? Helt inntil? Eller har man noen centimeter å gå på?

    Svar på denne kommentaren

    • Sigbjørn Trageton (NRK) (svar til Trond Michelsen)

      Hei, Trond!
      Det hele kommer an på tykkelsen på skjermen og at du kan sørge for god nok ventilasjon. Ser av de forskjellige løsningene på nettet, så har flere strippet bort all plast rundt skjerm og elektronikk, for å spare plass. Bør være enkelt å lage en svingbar løsning for å komme til innmaten. Kanskje det finnes et svingbart monitor feste, som er lite og kraftig nok, som hele greia kan monteres på.

      Skjermen bør ligge helt inntil glasset og evt. glass rundt, må dekkes til.

  6. Didrik Sæther

    Bra artikkel, og god innføring i hva som ligger bak.
    Jeg laget i sommer mitt eget speil, og har lenge tenkt jeg burde integrert Yr inn i speilet mitt, siden OpenWeather ikke er i nærheten av like nøyaktig som Yr.
    Tusen takk Sigbjørn! 😀

    På en annen note; er det noe magi dere har lagt til speilet deres, siden den viser sky + temp. Det er ikke en del av modulen dere har pushet til Github etter hva jeg kan se.

    PS.
    Speilet mitt: imgur.com/gallery/dr8on

    Svar på denne kommentaren

    • Sigbjørn Trageton (NRK) (svar til Didrik Sæther)

      Takk for det Didrik!
      Det er ingen stor magi og værsymbol håndteres i koden som ligger ute. Symbol og temperatur blir beregnet i funksjonen getWeatherSymbol (ikke det beste navnet). Hvis det ikke er nedbør i Nåvarslet, vises altså værsymbol for inneværende kortidsvarsel.

    • Didrik Sæther (svar til Sigbjørn Trageton)

      Takk for svar Sigbjørn! Jeg fant ut av hvorfor getWeatherSymbol ikke viste værsymboler. Jeg hadde av en eller annen skyt-meg-i-foten grunn skrudd av modulen ‘alert’ som trengs for å vise bildene.
      Takk også for oppdatering av css for å kunne plassere modulen hvor som helst.

  7. Martin Kåstad

    Bra prosjekt. Synes MMM-Slack funksjonen deres virker interessant, men sliter med å få satt opp slack med kommandoen «npm install @slack/client», finnes det ein guide eller et oppsett for å få satt opp den?

    Har ellers fulgt oppsettet til Michael Teeuw, og det har fungert topp. Btw, flott YR funksjon.

    Svar på denne kommentaren

    • Sigbjørn Trageton (NRK) (svar til Martin Kåstad)

      Takk for det Martin!
      Det skal ikke være noe annet du trenger å gjøre for å installere @slack/client. Hva skjer når du kjører kommandoen? Får du noen feilmelding?

      Har du forsøkt å oppdatere Pi’en: «sudo apt-get update» etterfulgt av «sudo apt-get upgrade»

    • Martin Kåstad (svar til Sigbjørn Trageton)

      Fekk oppdatert raspberryen da fekk eg installert slacken, takker :).

      Nå lurer eg på om eg har skrive inn riktig i config.js, er det berre til å skrive inn ein av mine channels fra slack.com, til dømes slackChannel: ‘general’ ?

      Takk for svar

    • Sigbjørn Trageton (NRK) (svar til Martin Kåstad)

      Hei!
      Ja, det kan du gjøre. Men om det er mye trafikk i denne kanalen, blir det mange meldinger som sveiper over speilet og man kan fort miste oversikten.

  8. Harald Brynlund-Lima

    Kjempespennende å lese om (for en ikke-så-teknisk-mann). Såkalte «argusspeil» eller magiske speil, finnes det pakker eller noe litt mer lavterskel for oss som ikke kan programmere? Kanskje jeg skal alliere meg med min tømrersvoger i pappapermen til sommeren..

    Svar på denne kommentaren

    • Sigbjørn Trageton (NRK) (svar til Harald Brynlund-Lima)

      Bra du likte artikkelen Harald! Har i alle fall sett ett firma (twowaymirrors.com), som lager pakkeløsninger, men tror det blir ganske dyrt. Også er det jo ikke så gøy som å lage noe fra bunnen da. Det er slettes ikke vanskelig å sette opp det tekniske og man må ikke kunne programmere for å gjøre det. Er kun når man vil lage egne moduler at disse erfaringene kommer godt med. Anbefaler deg å bruke pappapermen din og vi vil gjerne høre hvordan det går, hvis du bestemmer deg for å prøve.

  9. Aage Vaksdal

    Tøft prosjekt!
    Tenkjer at det kunne vore kult med RF-id. Kvart familiemedlem har si eiga brikke, og kan logge inn og ut ved å sveipe brikka over speilet, og få sin eigen tilpassa relevante informasjon, epost, kalender, avtalar osb.

    Svar på denne kommentaren

    • Sigbjørn Trageton (NRK) (svar til Aage Vaksdal)

      Hei, Aage!
      Her er alt mulig. Personlig ville jeg nok gått for ansiktsgjenkjenning, for jeg hadde nok glemt å bruke brikken min hver gang jeg sjekket sveisen.

  10. Hei

    ser at dette er en litt gammel artikkel, men spør.

    jeg lager nå et speil og ser etter en måte og få opp dagen i dag info.
    det finnes fra engelsk wikipeida men den norsk siden med slik info er ikke bygd opp på samme måte som den engelske og kan derfor ikke bruker i eksiterene module til Magic Mirror.(etter utsagn fra utviker av modulen)

    Spørsmål er: Dere(NRK) har en slik side med kort og grei info om dagen i dag.
    er det mulig og få den som en rss feed slik at den kan legger inn i modulen?

    tenker på denne siden:

    m.nrk.no/dagenidag/

    Svar på denne kommentaren

  11. Få været på armen

    […] teste ut nye ting, lære ny teknologi og lage prototyper. Blant disse eksperimentene har vi laget et magisk speil som viser dagens værvarsel, Yr-integrasjon for kommunikasjonsverktøyet Slack, chatbot for […]

    Svar på denne kommentaren

  12. Hei! Utrolig bra artikkel! Holder på å bygge mitt eget speil nå. Finnes det en modul, eller er det en annen måte å få vist solnedgang / soloppgang tidspunkt?
    Hadde vært veldig flott sammen med yr modulen. Ellers har jeg akkurat fått til at rss henter overskrifter fra kræsje aviser. Gleder meg til å få det ferdig!
    Takk på forhånd!

    Svar på denne kommentaren

  13. Hei, installerte akkurat yrnow, men står bare og loader. Ser at dette er en ganske gammel artikkel, men noen som har noe godt svar på hvorfor det er slik? Er modulen utdatert på noen måte? Har prøvd med flere forskjellige steds-id’er.

    Svar på denne kommentaren

    • Sigbjørn Trageton (svar til Kjetil)

      Hei, Kjetil!
      Det skal ikke være noe feil med denne modulen, så vidt jeg vet. Vi bruker den daglig på speilet vårt i NRK. Hvilke verdi har du satt for locationId?

      Mvh
      Sigbjørn

  14. Hei!
    Jeg har tenkt til å lage magiskspeil.
    Hva heter glasset som man skal bruke?
    Heter det argusspeil eller spionspeil?
    Det heter så mye forskjellig men hva kaller vi sånt?

    Er det noe spesiell skjerm man bør kjøpe eller går det fint med en billig skjerm?

    Svar på denne kommentaren

    • Sigbjørn Trageton (svar til Seb)

      Enveisspeil, toveisspeil, spyglass… kjært barn har mange navn. Prøv å få tak i en skjerm med god kontrast og lysstyrke, for at tekst og grafikk skal skinne gjennom best mulig.

    • Sigbjørn Trageton (svar til Ola Lindmo)

      Hei Ola!
      Vi har desverre ingen anbefalinger, men google
      «speil på mål», så vil du få opp diverse glassmestere som kan hjelpe deg med pris. Noen kaller det spionspeil, andre toveis speil…

      Angående film, gjorde jeg bare et forsøk med noe kinavare, og skjermen vi hadde til rådighet var i alle fall ikke god nok til å fungere tilfredsstillende med denne. Anbefaler å sjekke ut forumet til MagicMirror: forum.magicmirror.builders/category/13/hardware

  15. Hei,

    Er det noen her som kunne tenke seg å lage et slikt speil for meg? Kan betale for det. Ønsker å lage et slikt speil til badet mitt. Har noen interessante ting å foreslå i den forbindelse. Bl.a. å bruke speilet som en skapdør til en nisje med mosevegg, samt bare ha deler av speilet som smart speil og resten gjennomsiktig når en trykker på en knapp – så en kan se moseveggen bak.

    Håper det kan være interessant å samarbeide. Eposten min er tstrand (at) hillside.estate og nummeret mitt 94149872

    Svar på denne kommentaren

Legg igjen en kommentar til Ola Lindmo Avbryt svar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *. Les vår personvernserklæring for informasjon om hvilke data vi lagrer om deg som kommenterer.