Bookingsystem for Making Waves Gruppe 31 Mathias Faanes Olsen s188066 Snorri Hansson Engen s188094 Hovedprosjekt våren 2015 26.05.2015 1 PROSJEKT NR. Gruppe 31 Studieprogram: Informasjonsteknologi Postadresse: Postboks 4 St. Olavs plass, 0130 Oslo Besøksadresse: Holbergs plass, Oslo TILGJENGELIGHET Telefon: 22 45 32 00 Telefaks: 22 45 32 05 BACHELORPROSJEKT HOVEDPROSJEKTETS TITTEL DATO Bookingsystem for Making Waves – En mobilapplikasjon som kommuniserer med eksterne sensorer plassert i møterom 26. mai 2015 ANTALL SIDER / BILAG 71 PROSJEKTDELTAKERE INTERN VEILEDER Mathias Faanes Olsen – s188066 Snorri Hansson Engen – s188094 Torunn Gjester OPPDRAGSGIVER KONTAKTPERSON Making Waves Kristoffer Sundmyhr SAMMENDRAG Utvikle en brukervennlig Android mobilapplikasjon som kommuniserer med eksterne sensorer for booking av møterom i Office 365. Applikasjonen skal vise hvilke møterom det ikke er aktivitet i for så å la brukeren booke et ledig rom med sin Office 365 konto. 3 STIKKORD Hardware Office 365 Android mobilapplikasjon 2 Forord Dette er en rapport som beskriver hvordan planleggingen og utviklingsprosessen foregikk under prosjektperioden for Making Waves. Prosjektet er et avsluttende hovedprosjekt i bachelorstudium i Dataingeniør ved Høgskolen i Oslo og Akershus, våren 2015. Vår oppdragsgiver, Making Waves, ønsker en mobilapplikasjon som skal forhindre møteromskonflikter ved å ha en nåtidsoversikt over hvilke rom som ikke har aktivitet. Denne rapporten er delt opp i tre hoveddeler: Valg av hardware og implementasjon av sensorsystem o Forteller hvordan hardware-siden av systemet henger sammen. Kommunikasjon med eksterne systemer o Forteller om hvordan systemet kommuniserer med Office 365 Android mobilapplikasjon o Forteller om hvordan de overnevnte punktene kommer sammen og blir presentert i en mobilapplikasjon Vi vil takke vår veileder Torunn Gjester ved HiOA for god oppfølging under prosjektperioden. Vi vil også rette en takk til Kristoffer Sundmyhr som har vært vår kontaktperson hos Making Waves. Dokumentasjonen er også tilgjengelig på: http://www.snorri.no/bachelor2015 3 Innholdsfortegnelse Forord .............................................................................................................................................. 3 Innledning ........................................................................................................................................... 7 Making Room ................................................................................................................................ 7 Oppdragsgiver .............................................................................................................................. 7 Bakgrunn ........................................................................................................................................ 7 Mål..................................................................................................................................................... 8 Effektmål.................................................................................................................................... 8 Resultatmål ............................................................................................................................... 8 Læringsmål ............................................................................................................................... 8 Kravspesifikasjon ........................................................................................................................ 9 Hovedelementer fra kravspesifikasjonen:.................................................................... 9 Milepælsplan .............................................................................................................................. 10 Teknisk tegning av systemet ............................................................................................... 11 Valg av Hardware og Implementasjon av Sensorsystem .............................................. 12 Mikrokontrollere ................................................................................................................. 13 Vurdering av kontrollere .................................................................................................. 14 Hardware-implementasjon .................................................................................................. 20 Gateway ................................................................................................................................... 20 Raspberry Pi A+ ................................................................................................................... 21 Moteino-Gateway ................................................................................................................ 23 Sensor ...................................................................................................................................... 25 Moteino-Sensor .................................................................................................................... 25 Database.................................................................................................................................. 26 Kommunikasjon med Eksterne Systemer ........................................................................... 27 Microsoft Office 365 ........................................................................................................... 28 Outlook .................................................................................................................................... 29 Microsoft Azure og Azure Active Directory............................................................... 29 Microsoft Office 365 Exchange Online ........................................................................ 31 Android Mobilapplikasjon ......................................................................................................... 32 Use Case Modell ........................................................................................................................ 33 Detaljert beskrivelse av Use-Caset «Book rom» .......................................................... 34 Spørreundersøkelse ................................................................................................................ 35 Designvalg og utforming ....................................................................................................... 38 Skjermbilde #1 – Login ..................................................................................................... 38 4 Skjermbilde #2 – Azure Active Directory Login ...................................................... 38 Skjermbilde #3 - Booking................................................................................................. 38 Skjermbilde #4 – Pågående møte ................................................................................. 39 Generelt ................................................................................................................................... 39 Android ........................................................................................................................................ 41 AndroidManifest.xml .............................................................................................................. 41 Gradle............................................................................................................................................ 41 Constants.java............................................................................................................................ 42 Office 365 SDK for Android .................................................................................................. 42 LoginActivity .............................................................................................................................. 43 MainActivity.java ...................................................................................................................... 44 LiveMeetingActivity ................................................................................................................ 45 Konklusjon .................................................................................................................................. 46 Måloppnåelse ........................................................................................................................ 46 Konklusjon av produkt ...................................................................................................... 46 Prosessrapport .............................................................................................................................. 47 Sammendrag .............................................................................................................................. 48 Innledning ................................................................................................................................... 49 Om gruppen ................................................................................................................................ 49 Om bedriften .............................................................................................................................. 49 Planlegging og Metode ........................................................................................................... 50 Verktøy ......................................................................................................................................... 51 Utfordringer ............................................................................................................................... 51 Utvikling av Applikasjonen................................................................................................... 51 Samarbeid ................................................................................................................................... 51 Veiledning ................................................................................................................................... 52 Konklusjon .................................................................................................................................. 52 Kilder og lenker ............................................................................................................................. 53 Internett ....................................................................................................................................... 53 Vedlegg .............................................................................................................................................. 54 Vedlegg 1 ..................................................................................................................................... 54 Kravspesifikasjon ................................................................................................................ 54 Vedlegg 2 ..................................................................................................................................... 56 Office 365 hovedportal ...................................................................................................... 56 Vedlegg 3 ..................................................................................................................................... 57 Windows Azure Portal ...................................................................................................... 57 5 Vedlegg 4 ..................................................................................................................................... 58 Figur av Administrasjonsportalen til Exchange ...................................................... 58 Vedlegg 5 ..................................................................................................................................... 58 Oversikt over rommene i Administrasjonsportalen til Exchange .................... 59 Vedlegg 6 ..................................................................................................................................... 59 Hvordan opprette rom i Exchange ............................................................................... 60 Spørreundersøkelsen......................................................................................................... 61 Vedlegg 8 ..................................................................................................................................... 62 Svar på spørreundersøkelsen ......................................................................................... 63 Vedlegg 9 ..................................................................................................................................... 63 Tidlig skisse av applikasjonens hendelsesforløp .................................................... 67 Detaljert beskrivelse av Use-Case ................................................................................. 68 Vedlegg 11................................................................................................................................... 70 MIT-Lisensen......................................................................................................................... 70 Vedlegg 12................................................................................................................................... 71 3D-Modelleringer av deksel til romsensor ................................................................ 71 6 Innledning Making Room Making Room er et system som viser hvilke møterom det ikke er aktivitet i ved hjelp av bevegelsessensorer, uavhengig om rommet står oppført som opptatt eller ikke. Oppdragsgiver Vår oppdragsgiver, Making Waves, er et selskap som spesialiserer seg på digital tjenesteutvikling og innovasjon. Making Waves har avdelinger for rådgivning, design, teknologi, innholdsproduksjon og drift. De er en digital innovasjonspartner for mange av Nordens største merkevarer og offentlige virksomheter som f.eks. Regjeringen, NorgesGruppen, NSB, Norrønna og Sparebank 1 Forsikring. Selskapet har spesielt mange utmerkelser når det gjelder gode webløsninger og nettsider. Figur 1 Logo Making Waves Bakgrunn Under et møte i midten av desember 2014 presenterte to representanter fra Making Waves sin problemstilling for oss. De ansatte hadde utfordringer med å finne et ledig møterom når det var behov for å ha et møte på kort varsel. I dagens system logger de ansatte seg inn i Outlook for å få oversikt over hvilke møterom som er ledige til hvilket tidspunkt. Problemet oppstår når et avtalt møte blir avlyst. Ettersom møtene bookes i Outlook må de også kanselleres i Outlook, noe som sjeldent blir gjort. Møterom som er ledige står oppført som opptatt og det blir vanskelig for de ansatte å finne et ledig møterom på en rask og enkel måte. I møtet med Making Waves ble det drøftet mulige løsninger på dette problemet. Vi kom frem til at det er nødvendig å utvikle en løsning som gjør det mulig å se om det er aktivitet på de forskjellige rommene uavhengig av om de står oppført som opptatt eller ikke. I dagens samfunn hvor man alltid har telefonen innenfor rekkevidde vil det være naturlig at løsningen utvikles for mobile-enheter. For å avgjøre hvilke rom det er aktivitet i ser vi for oss at en form for sensor blir installert i rommene og disse kommuniserer med en mobilapplikasjon. 7 Mål Effektmål 1. Effektivisere møtebookingprosessen 2. Mer effektiv bruk av møterom. Resultatmål Oppdragsgiver ønsker en mobilapplikasjon hvor det skal være mulig å booke et møterom på en enkel og tidseffektiv måte. Mobilapplikasjonen skal kommunisere med trådløse sensorer plassert i møterommene. Dette vil gi en nåtidsoversikt over hvilke møterom det ikke er aktivitet i slik at man enkelt kan finne et ledig møterom uten å måtte gå rundt på huset og lete etter et. Det er derfor et resultatmål at vi skal utforske forskjellige sensorløsninger og implementere den vi finner best tilpasset vårt prosjekt. Ettersom Making Waves har et møtebookingssystem fra før, er et annet resultatmål at det skal kommunisere med dette. Mobilapplikasjonen blir ikke en erstatning, men heller et supplement til allerede eksisterende systemer. Læringsmål Vi har satt oss flere læringsmål vi ønsker å nå i prosjektperioden. Et av hovedmålene er at vi skal ta til oss ny læring om kommunikasjon mellom hardware og eksterne systemer. Dette for å være bedre rustet til å takle problemstillinger innenfor nye teknologier når vi skal ut i det faktiske arbeidsmarkedet. Et annet mål er at vi skal benytte den kunnskapen vi har opparbeidet oss i årene som dataingeniør-studenter, fra emner som teknologiledelse, applikasjonsutvikling, systemutvikling, databaser og operativsystemer. Det å jobbe i team på et større prosjekt over lenger tid er god erfaring vi også forhåpentligvis tar med oss etter prosjektperioden. I tillegg til dette ønsker vi også å forbedre kunnskap rundt dokumentering av større prosjekter og å få kjennskap til hvordan arbeidsdagen som systemutvikler/programutvikler er. 8 Kravspesifikasjon Vi laget en kravspesifikasjon for å få klarhet i hva systemet skal utføre. Kravspesifikasjonen definerer alle grensesnitt og funksjonalitet og blir således vårt viktigste arbeidsdokument for å nå ønsket resultat. Kravspesifikasjonen fungerer også som en avtale mellom prosjektgruppa og oppdragsgiver om hva som skal kreves av systemet. Dette for å opprettholde åpenhet mellom partene og at vi vet hva som forventes av hverandre. Hovedelementer fra kravspesifikasjonen: - Undersøke og konkludere med et passende sensorsystem Bevegelsessensorene skal detektere bevegelse. Bevegelsessensorene skal gjøre sensordataene tilgjengelig for mobilapplikasjonen. Brukere skal kunne logge inn på mobilapplikasjonen med sin eksisterende Making Waves konto. Brukere skal kunne se hvilke møterom det ikke er bevegelse i. Mobilapplikasjonen skal kunne kommunisere med de eksisterende systemene til Making Waves. Brukere skal kunne booke ledige møterom. Hele kravspesifikasjonen kan sees i vedlegg 1. 9 Milepælsplan Mathias og Snorri Mathias Snorri Tittel Research Innkjøp Planlegging Uke 1 Uke 2 Uke 3 Uke 4 Uke 7 Uke 8 Uke 9 Uke 10 Uke 11 Uke 12 Uke 13 Uke 14 Uke 5 Uke 6 Uke 15 Uke 16 Implementering Sensor Gateway Database Uke Uke17 19 Applikasjon Sensor kommunikasjon Ekstern kommunikasjon GUI (Graphical User Interface) Testing Dokumentasjon Vi har utviklet en milepælsplan som viser hvordan vi har planlagt at arbeidet skal foregå fremover. Vi har delt planen inn i hoveddeler som er forholdsvis isolerte, slik at vi kan klargjøre en del før vi beveger oss over på neste. Første fase består av research rundt forskjellige sensorsystemer og valg av sensorsystemet vi ønsker å gå videre med. Når valg av sensor er gjort har vi satt av 4 uker til implementering og testing av sensorsystemene. Etter at implementeringen er gjort ser vi for oss at vi kan begynne med applikasjonen. Her inngår både kommunikasjon med sensorsystemet, kommunikasjon med eksterne systemer, utvikling av et godt visuelt brukergrensesnitt og testing av applikasjonen. Under hele prosessen blir det ført dokumentasjon av begge gruppemedlemmene. 10 Teknisk tegning av systemet Figur 2 Teknisk tegning Helt i starten av research perioden skisset vi opp en tegning av hvordan vi så for oss systemets kommunikasjonsflyt. Den tekniske tegningen blir gjengitt i detalj under implementasjon av sensorsystem og kommunikasjon med eksterne systemer. 11 Valg av Hardware og Implementasjon av Sensorsystem 12 Mikrokontrollere Hvorfor trenger vi mikrokontrollere? Vi bestemte oss tidlig for at vi ville avgjøre romaktivitet ved hjelp av bevegelsessensorer. Siden ett av kravene til oppgaven var at systemet skal være mest mulig brukervennlig å installere kom vi frem til at vi ville videreformidle sensordata ved hjelp av mikrokontrollere og bruk av “Internet of Things”. Internet of Things Internet of Things er et nettverk av objekter som har fått innbygd elektronikk, programvare, sensorer etc. for å gjøre det mulig å utveksle data med en operator og/eller en annen tilkoblet enhet. Hver enhet(thing) er unikt identifiserbar gjennom dets innebygde datasystem, og er i stand til å kommunisere sammen innenfor den eksisterende internett-infrastrukturen. Begrepet “Internet of Things” ble først introdusert av briten Kevin Ashton, i 1999. Figur 3 Internet of Things IoT er forventet å kunne tilby tilkobling av alle slags enheter, systemer og tjenester. Sammenkoblingen av disse enhetene er ventet å kunne tilby automatisering innen nesten alle felt. I følge Gartner Ink. (amerikansk rådgivnings og forskningsselskap) vil Internet of Things bestå av opp mot 26 milliarder enheter i år 2020, andre estimerer med at det vil være så mange som 30 milliarder enheter tilkoblet[1]. Internet of Things enheter kan brukes til å overvåke og kontrollere mekaniske og elektroniske systemer. Dette kommer til å bli mer og mer synlig på det private markedet i årene som kommer. Innenfor Home Automation kommer vi til å se en markant økningen av “smarte” hjem ved hjelp av IoT. Man kan gjøre alt fra å starte kaffetrakteren til å sette opp sitt eget sikkerhetssystem ved hjelp av diverse sensorer og kameraer. Det er her prosjektet vårt kommer inn i bildet. Vi vil ved hjelp av mikrokontrollere koblet sammen med en PIR-sensor (Passive Infrared-sensor) og et batteri kunne overvåke aktiviteten i de forskjellige møterommene og publisere dataene på nett for så å hente det ned igjen med applikasjonen. 13 Vurdering av kontrollere Etter det ble klart at sensordata skal videreformidles ved hjelp av mikrokontrollere var neste steg å finne ut hva slags mikrokontroller som ville passet best til vår kravspesifikasjon. Mot slutten av research-perioden sto valget mellom kontrollere fra 3 forskjellige leverandører, samt en som Making Waves tidligere hadde kjøpt inn. Under finner du et sammendrag av fordeler og ulemper med de forskjellige kontrollerne, og til slutt en konklusjon for valget som ble tatt. Spark IO Spark IO ble grunnlagt i 2012 i California og fikk i gang finansieringen av sin første modell, Spark Core, ved hjelp av en Kickstarter kampanje. Firmaets fokus går på å utvikle verktøy som gjør det lettere å få hardware på internett. Spark Core Figur 4 Spark Core Nøkkelegenskaper “On-board”-WiFi Fordeler Mulig å publisere data direkte til web-server Cloud-programming: build.spark.io Med internett-tilgang har du alltid utviklingsmiljøet ditt tilgjengelig. Open source All kildekode er gjort tilgjengelig og bibliotekene deres oppdateres ofte. Spark IO har et stort forum på nettsiden sin hvor man kan se andres prosjekter og få innspill. Annet Ulemper Krever mye strøm. Det vil være vanskelig å bruke Core 8-10 timer om dagen over lenger tid på batteri uten å måtte skifte det hyppig. Du er avhengig av internetttilgang, og kan ikke laste opp kode offline. Dersom Spark IO f.eks. skulle gå konkurs vil løsningen være vanskelig å vedlikeholde. Ingen ulemper Vår vurdering Spark Core er en god kandidat til prosjektet. Den er innovativ med dens “on-board”-WiFi, men ettersom det sannsynligvis vil påvirke batteri-levetiden betraktelig kan det også bli grunnen til at den faller bort. 14 Arduino Arduino er et open source hardware/software firma som bl.a. bygger digitale komponenter man kan sette sammen. Dette er den leverandøren som hadde størst utvalg og et solid grunnlag ettersom de har vært i drift i 10 år. De har et stort utvalg komponenter man kan sette sammen for å utføre forskjellige operasjoner. Figur 5 Arduino Uno Arduiono Uno Nøkkelegenskaper Arduino IDE Open source Fordeler Deres eget gratis utviklingsmiljø er enkelt å sette seg inn i og gjør det lett å overvåke tilkoblet kontroller. Ulemper All kildekode er gjort tilgjengelig og det finnes mange tutorials som kan tilpasses vårt behov. Annet Ettersom firmaet har vært i Prisen på Arduino Uno har drift i 10 år er det grunn til å en litt høy pris i forhold tro de har fått opp et stabilt tilsvarende kontrollere. og pålitelig system med kontrollere, komponenter og utviklingsmiljø. Krever tilleggskomponenter for å sende data Arduino Uno er forholdsvis stor i størrelse. Vår vurdering Arduino har et solid grunnlag på markedet og er anerkjent i prosjekter som omhandler Internet of Things. Dessverre er både størrelse og ytelse noe som gjør at vi stiller oss tvilende til at dette er det rette produktet til vårt bruk. 15 Tessl Tessl er en kontroller som ble presentert for oss av en ansatt i Making Waves. Det er noe de hadde kjøpt inn for en liten stund tilbake for å leke litt med. Tessl er bygget på JavaScript og vi kom ganske fort frem til at dette kun var et leketøy for webutviklere med ganske begrenset bruksområde utenfor det som alt lå klart. Men den fungerte allikevel godt som et verktøy for å få litt større forståelse rundt hvordan en mikrokontroller fungerer med analoge inputs og outputs o.l. Figur 6 Tessl Vår vurdering Vi avgjorde ganske tidlig at Tessl var for begrenset til vårt behov og hadde kun nytte som et læringsverktøy mens vi ventet på at de andre produktene skulle ankomme. 16 LowPowerLabs LowPowerLabs ble grunnlagt av Felix Ruso i Canton, Michigan. Felix jobbet tidligere som en web-utvikler med interesse for elektronikk. Når han skulle i gang med et hjemme-automasjons prosjekt hvor han hadde planer om å sette opp et nettverk med Arduinoer kom han på tanken at han ikke trengte å bruke alt Arduinoen hadde å tilby, samt at det ville ta mer plass enn nødvendig og koste mer enn det burde. Han valgte i den anledning å lage en klone av Arduinoen som han strippet for komponenter for å få en mer beleilig størrelse og en lavere pris. Han kunne etter kort tid si opp jobben sin og leve på LowPowerLabs. Figur 7 Moteino R4 Moteino R4 Nøkkelegenskaper RF(Radiofrekvens)-chip Bruker Arduino IDE Open source Gateway - Siden Moteinoen ikke har WiFi er den nødt til å ha en egen gateway for å kunne kommunisere med omverdenen. Fordeler Energieffektiv måte for Moteinoen å sende data seg imellom. Ved å bruke Arduino IDE til utvikling har man allerede klart et solid miljø. All kildekode er gjort tilgjengelig og Felix har mange eksempler på bruk på sin hjemmeside Fordelen med dette er at vi vil ha total kontroll over dataene som utveksles Ulemper Rekkevidden kan ikke forventes å dekke flere etasjer. Det vil kreve mye ekstra arbeid og sette opp en stødig gateway Annet Felix er lett tilgjengelig per mail og vi opplever å raskt få gode svar på spørsmål. Vår vurdering Moteino R4 er som sagt en klone av Arduino Uno, men uten alle ekstra komponenter vi ikke har bruk for i vårt prosjekt, noe som gjør den mindre og mer energieffektiv. Den har en lav kostnad og selv om det vil kreve en del ekstra jobb med gateway virker dette som en god løsning for prosjektet 17 To løsninger Etter research-perioden var over i slutten av uke 3 sto vi igjen med to alternative løsninger. Den første, Spark Core, var vi i tvil om ville være optimal i forhold til batterilevetid. Den store fordelen med Spark er at den har “on-board” WiFi, men dette er også ulempen. Desto kraftigere komponenter du har på, desto større krav settes til batteri. Men ettersom “on-board” WiFi var en veldig interessant måte å løse hardware-problemstillingen valgte vi å gi det et forsøk. En annen mulig utfordring med Spark Core er at det er en førstegenerasjonskontroller fra Spark IO, den første med “on-board” WiFi. Og som det ofte er med 1. generasjons-produkter så vil det høyst sannsynlig dukke opp problemer underveis som bærer preg av dette. Løsning nr. 2 var åpenbar. Moteino R4. Moteino er som tidligere nevnt, en Arduino klone. Dette gjør at den virker som en stabil løsning. Den bygger på en mikrokontroller som har vært på markedet en stund, den er open source og virker som den tryggeste løsningen. Det at den ikke har WiFi gjør at strømforsynings-utfordringen blir betydelig mindre. Det den derimot har er en radiofrekvens sender/mottaker. Moteino R4 er en transceiver. Det vil si at den kan like gjerne være en sender som en mottaker. Radiofrekvens-chippen krever langt mindre strøm enn en WiFi-chip. Et røft regnestykke viser at Moteinoen tilpasset vårt bruk vil kunne være operativ i 3-5 måneder på et 9V batteri før det må byttes. Ettersom Moteinoen ikke har WiFi blir vi nødt til å sette opp en gateway for å kunne gjøre rom-statuser tilgjengelig for applikasjonen. Gatewayen utgjør en Raspberry Pi og en Moteino som vil fungere som en receiver i stedet for en transmitter som de andre Moteinoene som er tilkoblet PIR-sensoren. Kommunikasjon Rammeverk Open source Annet Pris Spark Core WiFi build.spark.io ✓ Moteino R4 Radiofrekvenser Arduino IDE ✓ 19 USD 13 USD 18 Konklusjon Da planleggingsfasen gikk mot slutten i uke 6 hadde vi fått testet begge løsningene og konklusjonen var klar. Spark Core krever for mye strøm. Skal den tilkobles et batteri er man nødt til å lade eller bytte batteriet hyppig. Dette sammen med at Spark IO enda ikke har et offline utviklingsmiljø klart, gjør at Spark Core faller bort og vi vil fortsette prosjektet med Moteino R4. Dersom dette prosjektet skulle blitt utført noen år frem i tid ville nok konklusjonen blitt en annen. Vår vurdering er at Spark Core er ikke klar for denne oppgaven per dags dato. 19 Hardware-implementasjon Figur 8 Teknisk tegning av hardware-side Gateway Da det ble klart at Moteino R4 var kontrolleren vi skulle bruke, ble det også klart at det måtte settes opp en gateway for å få publisert sensordata online. Gatewayen vil være en sammensetting Figur 9 Gateway-Moteino + Raspberry Pi av en Raspberry Pi A+ og en Moteino R4 som fungerer som en receiver og vil motta data fra andre sensor-Moteinoer i radiofrekvens-nettverket. 20 Raspberry Pi A+ Raspberry Pi er en liten datamaskin som er bygget på et enkelt kretskort knapt større enn et kredittkort. Den kan kobles til en monitor ved hjelp av HDMI og fungerer på samme måte som en vanlig datamaskin. Selskapet bak Raspberry Pi er Raspberry Pi Foundation som ble grunnlagt for å oppmuntre til å lære grunnleggende databehandling i skolen. Figur 10 Raspberry Pi A+ Raspberry Pi A+ har kun en USB-inngang, men dette kan enkelt utvides ved hjelp av en USB-hub. Noe vi også ble nødt til å gjøre slik at vi kunne koble til nødvendige verktøy som tastatur, mus, WiFi og lignende under utviklingen. Ved å gi Pi’en WiFi åpnet det også muligheten for å bruke SSH (secure shell), noe som gjør arbeidet med å programmere på Pi’en lettere. Operativsystem vi valgte å gå for heter Raspbian og bygger på det universelle operativsystemet Debian (Linux distribution), som har et godt rykte på seg for å være et stabilt og sikkert operativsystem for Raspberry Pi. Raspberry Pi’ens oppgave vil være å lese data fra USB(serial)-porten som Moteinoen er tilkoblet og deretter skrive de mottatte dataene til databasen som ligger på en webserver ved hjelp av et PHP(Hypertext Preprocessor)-script kalt index.php. Dette løste vi ved å installere en NginX og en Socket.io websocket server på Raspberry Pien. Websocketen blir proxyet igjennom NginX ved hjelp av javascriptet gateway.js slik at vi får en live feed med sensordata som index.php kan plukke opp. Figur 10 Utdrag 1 fra gateway.js 21 Figur 11 Utdrag 2 fra gateway.js NginX er en gratis open source HTTP server med høy ytelse samt en IMAP/POP3 proxy server. NginX er nå host for litt over 12% av aktive nettsider over alle domener. Den er kjent for sin høye ytelse, stabilitet, stort utvalg av funksjoner, enkel konfigurasjon og lavt ressursforbruk. NginX står i bakgrunnen på flere høyprofilerte sider som Netflix, Hulu, GitHub, SoundCloud og mange flere. Socket.IO er et JavaScript bibliotek for realtime web-applikasjoner og er hendelsesdrevet. Det vil si at det kun vil reagere dersom en forhåndsdefinert handling forekommer. Som i vårt tilfelle vil være når en sensor detekterer en bevegelse. I index.php ligger det ”if-else” statements til de respektive rommene som følger med på hvilken status rommet har. Hvis det er bevegelse i rommet så vil scriptet fange opp dette gjennom data som kommer via socketen hvor 1 representerer opptatt og 0 representerer ledig. Deretter vil et kort Ajax-script trigge en PHP-fil som skriver statusen videre til databasen. Figur 12 Utdrag fra index.php 22 Moteino-Gateway Figur 13 Moteino R4 + Raspberry Pi A+ Moteinoen vil, som tidligere nevnt, fungere som en receiver på Gateway delen. Det vil si at den er i stand til å ta imot og prosessere data. Moteinoen har en radiofrekvens-chip loddet på seg. Dette gjør det mulig å lytte til og ta imot data over radiofrekvenser. I vårt tilfelle er Moteinoen satt til å lytte på 433MHZ, noe som betyr at den kun vil være i stand til å fange opp data som broadcastes på denne kanalen. Figur 14 Utdrag 1 fra mw_gateway.ino Figur 14 viser et utdrag fra koden som ligger på Gateway-Moteinoen hvor NODEID, NETWORKID og FREQUENCY blir definert 23 Figur 15 Utdrag 2 fra mw_gateway.ino I utdrag 2 vist i figur 15, blir serial-porten mellom Moteinoen og Raspberry Pien åpnet og Moteinoen står klar for å lytte på RF69_433MHZ. Hvis den mottar data fra en sensornode ute i nettverket vil den umiddelbart skrive dataen videre gjennom serial-porten til Raspberry Pien. 24 Sensor Moteino-Sensor På sensorsiden har vi valgt å lodde en PIR-sensor fast til en Moteino som skal fungere som en transmitter. Sensoren har 3 ledninger tilkoblet, en fungerer som gnd(jord), en som 5V for å tilføre nødvendig strøm og en som output. Disse 3 ledningene er loddet fast til hver sin respektive plass på Moteinoen som vist nedenfor i Figur 17. Figur 16 Sensor-side PIR-sensoren har et pyroelement som oppfatter infrarødt lys. Foran pyroelementet er det festet en linse som deler opp synsfeltet slik at den lettere kan oppfatte varme objekter som beveger seg i rommet. Når sensoren oppfatter bevegelse sender den en “høy” puls fra sin digitale OUTPUT videre til Moteinoens digitale INPUT for så å forbli “høy” i 8 sekunder etter siste bevegelse er oppfattet. Dette for å unngå at sensoren skal bytte fra “høy”(bevegelse) til “lav”(ingen bevegelse) bare fordi det er noen sekunder uten bevegelse i rommet. Figur 17 Moteino R4 + PIR-sensor Moteinoen har både digitale og analoge INPUT/OUTPUT-pins. PIR-sensoren skal kobles til en digital INPUT på Moteinoen da den har en digital OUTPUT. Når sensoren sender en “høy” puls til Moteinoens INPUT vil et “if-statement” plassert inne i en loop på Moteinoen slå til. Og deretter broadcaste dette videre til Gateway-Moteinoen sammen med Sensor-Moteinoen sin id som refererer til hvilket rom sensoren er plassert. Moteinoen har 9 digitale INPUT/OUTPUT-pins og det er ingen forskjell hvilken pin PIR-sensorens ouput-ledning er loddet fast til så lenge riktig pin blir deklarert i koden som ligger på Moteinoen. 25 Figur 18 Utdrag 1 fra mw_sensor.ino Figur 19 Utdrag 2 fra mw_sensor.ino Først blir lokale variabler NODEID, GATEWAYID, FREQUENCY og MOTIONPIN definert. NODEID er den unike ID til hver sensor, dette for at gateway skal kunne skille mellom hvilke sensorer den mottar informasjon fra. GATEWAYID er ID til gatewayen som vi ønsker å sende informasjonen til. FREQUENCY er den infrarøde frekvensen vi sender informasjon over til gateway. Når bevegelse blir detektert blir digitalWrite(EXTLED, HIGH) utført. Dette gir instruks til den monterte LED på Moteino-sensoren om at den skal lyse slik at vi som utviklere kan følge med på at alt er i orden mellom sensor og kontroller. Dette blir etterfulgt av selve sendingen av informasjon med sprintf(sendBuf, ‘’Bevegelse oppdaget’’, BATstr). Radiosenderen blir så bedt om å slå seg av igjen (radio.sleep()) og den monterte LED på Moteino-sensoren blir slått av (digitalWrite(EXTLED,LOW)). Database For at informasjon om hvilke rom det er bevegelse i skal være tilgjengelig for applikasjonen har vi valgt å lagre sensoraktivitetene på en MySQL-database som ligger på vår webserver. I denne databasen ligger det en enkel tabell. Se figur 21. Etter et møte med oppdragsgiver kom vi til enighet om å droppe databasen hver kveld. Dette for å unngå en eventuell konflikt med Datatilsynet vedrørende lagring av data. Figur 21 Tabell i databasen room_db Figur 20 Database 26 Kommunikasjon med Eksterne Systemer 27 Figur 22 Server-side Når man booker et møterom gjennom applikasjonen Making Room skjer det en stegvis prosess som består av flere ledd og som kommuniserer med ulike eksterne systemer. I denne delen av rapporten vil vi forklare litt nærmere om de ulike interne og eksterne systemene, og hvordan vi har tatt de i bruk i mobilapplikasjonen Making Room. Microsoft Office 365 Office 365 er Microsofts plattform for skybasert programvare med månedlige avgifter. For private brukere gir Figur 23 Office 365 tjenesten tilgang til skytjenesten OneDrive for lagring av personlige dokumenter og filer, og man får adgang til å benytte seg av de velkjente Microsoft Office programmene som Excel, Word, PowerPoint og Outlook. For større selskaper gir Office 365 tilgang til skybaserte serverløsninger som Exchange Server Online, Lync og SharePoint i tillegg til de kjente Microsoft Office programpakkene. De skybaserte serverløsningene kommer med egne administrasjonsløsninger som gjør det enklere for systemansvarlige i de gitte selskapene å kontrollere flyten av informasjon, dokumenter, filer og epost innad. Making Waves har per dags dato ikke gått over til Microsoft Office 365, men benytter seg av programvare som krever fysiske servere i lokalene deres. De har planer om å gå over til Office 365 i løpet av året ettersom dette vil skape større 28 trygghet for systemet og gjøre det lettere å administrere. Making Waves har utrykket ønske om at vi skal utvikle en applikasjon som tar i bruk de skybaserte serverløsningene som ligger i Office 365. Vi opprettet en gratis privat Office 365-konto for å bruke som test-område[2]. På denne måten slapp vi unødvendig bekymring for å forstyrre de interne systemene til Making Waves. Et skjermbilde av Office 365 sin hovedportal kan sees i vedlegg 2. Ved hjelp av denne test-kontoen fikk vi tilgang til Outlook, Exchange Online og Azure. Dette er de tre eksterne systemene vi har kommunikasjon med i mobilapplikasjonen og som vil bli forklart ytterligere i rapporten. Outlook Microsoft Outlook er Microsofts e-post-klient. Her kan brukere bl.a. sende og motta e-post, sjekke kalenderen sin, vedlikeholde kontakter og avtale møter i kalenderen. Man kan få tilgang til Outlook ved hjelp av en Office 365-konto. Vi har bruk for Outlook fordi dette er de ansatte i Making Waves’ nåværende måte å reservere rom og avtale møter på. Når brukere booker et møte i mobilapplikasjonen Making Room, skal dette vises i deres Outlook-kalender. Microsoft Azure og Azure Active Directory Microsoft Azure er en del av Microsofts programpakke som man får tilgang til ved hjelp av en Office 365-konto[3]. Azure er en plattform for det som kalles «cloud computing». «Cloud computing» vil si at man Figur 24 Azure Active Directory kan bygge, administrere og distribuere programvare og servicetjenester ved hjelp av en skytjeneste. I Azure kan du sette opp virtuelle maskiner, installere SQL-databaser og administrere et selskaps Active Directory. Et skjermbilde av et typisk Azure-vindu kan se ut som vist i vedlegg 3. Det kan være mange grunner til at et selskap ønsker å gå over til en skybasert hverdag. Hovedsakelig er det to elementer som spiller inn; pris og sikkerhet. Det å ha et privat serverrom er mye dyrere enn å betale et mindre månedlig beløp for Azure og Office 365. Man trenger ikke drive vedlikehold på det, og sannsynligheten for nedetid er svært liten. Sikkerheten går på at ingen vil kunne fysisk bryte seg inn og stjele informasjonen direkte fra serverne dine. Dette setter allikevel nye krav til at man har dyktige administratorer som gir riktige brukerrettigheter til de ansatte. Active Directory (AD) er Microsofts katalogtjeneste. Her blir objekter sortert etter kategorier, mapper og grupper for lettere å kunne betjene disse i brukerens system. AD kan håndtere brukere, datamaskiner, applikasjoner, brukerrettigheter og andre ressurser og tjenester. Et eksempel på dette er hvis en har 10 datamaskiner i sirkulasjon og 2 som er satt til å være reserve. Disse vil 29 da naturlig bli sortert under to forskjellige mapper, en for de i sirkulasjon og en for de som er satt som reserve. Samme gjelder brukere av systemet. Man kan kategorisere etter avdelinger, geografiske plasseringer eller brukertilgang. AD er et kraftig verktøy når man skal kartlegge systemet sitt. Microsoft Azure har som tidligere nevnt mulighet til å opprette og vedlikeholde Active Directory. Disse heter Azure Active Directory (AAD). Den er akkurat som de eldre formene for AD, men skybasert. Dvs. databasen ligger på Microsofts servere istedenfor å ligge lokalt. AAD kommer Figur 25 også med utvidet funksjonalitet og med et enklere Autentisering grensesnitt enn de eldre formene for AD. Ettersom Making Waves skal migrere over til et skybasert system, ble vi nødt til å opprette en AAD vi kunne koble vår mobilapplikasjon mot. For at brukere av mobilapplikasjonen Making Room skal kunne booke rom og få dette vist i sin Outlook-kalender må både brukeren av mobilapplikasjonen og mobilapplikasjonen selv være elementer i AAD. Grunnen til dette er at mobilapplikasjonen må få kontakt med de andre elementene som er tilknyttet den ansattes konto, ref. Outlook og SharePoint, og at mobilapplikasjonen må få kontakt med de andre servertjenestene som er tilknyttet denne Azure Active Directoryen, ref. Exchange Online. Brukerne må være en del av AAD for at de skal kunne logge inn i mobilapplikasjonen med brukernavn og passord. For å knytte en applikasjonen til riktig AAD tildeles en «klient-ID» når man registrerer en ny applikasjon. Denne i tillegg til en «redirect uri» må sendes med når man prøver å knytte seg opp mot Azure Active Directory fra mobilapplikasjonen. Mer om dette i dokumentasjonen av Android applikasjonen. Det bestemmes hvilke tilganger applikasjonen skal ha til eksterne systemer via AAD. Her kan en f.eks. bestemme om applikasjonen skal kunne lese de andre brukernes kontaktinformasjon, sende epost på vegne av, eller legge inn avtaler i den innloggedes kalender. Ettersom applikasjonen vår skal kunne registrere avtaler på vegne av den innloggede brukeren og sende epost fra deres konto har vi gitt Making Room følgende brukertillatelser i vår AAD: - Windows Azure Active Directory tillatelser: o Read and write directory data o Enable sign-on and read users’ profiles o Access your organization’s directory - Office 365 Exchange Online tillatelser: o Read and write user calendars o Send mail as user o Access mailboxes as the signed-in user via Exchange Web Services o Read and write user contacts 30 Microsoft Office 365 Exchange Online Exchange Online er en programpakke fra Microsoft som består av flere viktige tjenester tilknyttet vårt prosjekt. Hovedelementene i Exchange Online er en e-posttjener og kalender- og kontaktprogramvare som alle befinner seg i skytjenesten til Office 365. Exchange Online har en administrasjonsportal på nettet hvor en kan opprette nye epostkasser for både brukere og ressurser, endre brukerrettigheter og administrere e-postflyten inn og ut av sitt eget system. Figur 26 Exchange Online For vår oppgave har det vært behandlingene av rommene som har vært viktigst. I Exchange Online oppretter man det som heter “resource-mailboxes”. Dette er epostkasser som ikke er for sluttbrukere. Disse blir tildelt de respektive møterommene det skal bookes møter mot i Outlook. Skjermbilde av administrasjonsportalen til Exchange Online kan sees som vedlegg 4. Når man skal avtale et møte i Outlook, velger man tid og sted møte skal være og inviterer de som skal delta på møtet. Rommet møtet skal være på blir så lagt til som “deltaker” på møtet. Rommet vil så motta en e-post om hvilket tidspunkt møtet skal finne sted. Rommet vil deretter “sjekke” om det er opptatt i det aktuelle tidsrommet. Er det ingen planlagte møter vil det sette seg selv som opptatt i den valgte tidsperioden, slik at det ikke skal være mulig å bli dobbeltbooket. Om rommet ikke er ledig, vil den som sender invitasjonen få en epost fra rommet som sier at det ikke er ledig for øyeblikket og invitasjonen vil bli avslått. I Android mobilapplikasjonen Making Room skal brukeren få opplyst hvilke rom som ikke er blitt booket av andre brukere, eller de som er booket men ikke har noen detektert bevegelse. Om rommet er booket, men det ikke er detektert bevegelse skal bruker bli møtt med en melding om at han/hun kan ta en titt og se om det er noen der. En mer detaljert forklaring angående dette kommer i mobilapplikasjons-dokumentasjonen. Exchange Online har en oversikt over rommene man har opprettet via administrasjonsportalen. Her kan man få oppdatert informasjon om hvor rommene ligger, navn og e-post, i tillegg til ekstraopplysninger om hva rommene tilbyr av utstyr (prosjektor, størrelse o.l.). Skjermbilde av oversikt over rommene i Administrasjons-portalen til Exchange kan sees i vedlegg 5. Exchange Online har egendefinerte metoder for å legge til rom, dette gjør det enkelt for en eventuell administrator å legge til de ønskede ressursene man har behov for. Når man legger til et rom egendefinerer man navn på rommet, epostadresse, plassering, telefon og kapasitet. For å se hvordan prosessen med oppretting av rom foregår i Exchange Online se vedlegg 6. 31 Android Mobilapplikasjon 32 Siste del av prosjektet omhandler utviklingen av mobilapplikasjonen som har fått navnet “Making Room”, inspirert av Making Waves sine mange ordspill på navnet deres. Use Case Modell Figur 27 UML Use Case-Modell for sluttbruker Figuren over er en use case-modell for mobilapplikasjonen Making Room. Her ser vi hvilke Use Case’r som kan bli utført av sluttbruker, nemlig logge inn i applikasjonen, reservere rom, kansellere reservasjonen, utvide reservasjonen med 15 minutter og se rom som ikke har bevegelse i seg. 33 Detaljert beskrivelse av Use-Caset «Book rom» Use Case Aktør Prebetingelser Postbetingelser Hendelsesflyt Variasjoner Booke rom Sluttbruker Bruker vil booke rom Bruker er innlogget Bruker er inne i applikasjonen Bruker har booket rom 1. Bruker velger hvor lenge han/hun vil ha et møterom 2. Bruker velger et passende møterom som er ledig 3. Bruker trykker på “book rom” -knappen 4. Rommet er nå booket. 1. Ingen møterom er ledige a. Bruker må vente til et rom blir frigitt b. Bruker kan prøve på nytt 2. Varigheten som er oppgitt passer ikke med noen av rommene som er ledig nå. a. Bruker kan vente til et rom blir ledig med passende varighet. b. Bruker kan endre varighet av bookingen. c. Bruker kan prøve å booke på nytt. 34 Spørreundersøkelse Før vi begynte med utviklingen og design av applikasjonen var det viktig for oss å kartlegge bruken av møtebooking hos Making Waves i dag. Ønsker om funksjonalitet ved en eventuell møtebookingsapplikasjon og om de ansatte i selskapet i det heletatt kunne tenkt seg å bruke en møtebookingsapplikasjon. Vi bestemte oss derfor for å lage en spørreundersøkelse som vi sendte til alle ansatte ved Making Waves i Norge. Spørsmålene vi stilte de ansatte i spørreundersøkelsen er som følger: - - - - Hvilken avdeling jobber du i? o Client Operations o Content & Communications o Experience Design o Lifecycle o Sales o Technology o Annet Hvor ofte skjer det at... o du avbooker et møterom når ditt møte blir avlyst? Ofte Noen ganger Aldri o det er ingen ledige møterom når du trenger det? Ofte Noen ganger Aldri o alle møterom er opptatt, du leter I bygget og finner et ledig? Ofte Noen ganger Aldri o du har behov for å finne et møterom umiddelbart? Ofte Noen ganger Aldri Hvor ofte booker du møterom? o Hver dag o Et par ganger I uken o Et par ganger I måneden o Sjeldnere enn et par ganger I måneden Er en møteromsapplikasjon noe du ser behovet for og selv ville brukt? o Ja o Nei Har du noen funksjonalitetsforslag for en slik applikasjon? 35 Med disse spørsmålene klarer vi å lokalisere problemområder, kartlegge bruksvaner og samle inn data om ønsker fra de ansatte. Det var 76 personer som svarte på spørreundersøkelsen spredt over alle avdelingene til Making Waves. Vi fikk størst respons fra Technology-avdelingen som sto for nesten 40% av svarene. Experience Design og Client Operations lå bak med henholdsvis 22% og 15% av responsen. Ved å analysere svarene vi har fått inn ser vi fort at dette er en applikasjon det er behov for. Over 50% avbooker aldri eller kun noen ganger når et møte blir avlyst. Samtidig ser vi at over 95% har erfart at det enten ofte(41%) eller noen ganger(55%) ikke er noen ledige møterom når de trenger det. På spørsmål om de finner et ledig møterom selv om det står at alle er opptatt, så svarer over 85% at de har opplevd dette flere ganger. Dette kan vise til at det er mange som ikke kansellerer rommene de har booket ved en tidligere anledning. Alle bortsett fra en av de som svarte på undersøkelsen har opplevd noen ganger eller oftere at de behøver å finne et ledig møterom umiddelbart. Dette styrker våre tanker om at dette er en applikasjon som Making Waves kan dra nytte av og som vil bedre de ansattes hverdag. Når det gjelder hvor ofte de ansatte booker møterom er det veldig stort sprik i tallene. 23% av de spurte svarte de booker møterom sjeldnere enn et par ganger i måneden. Men vi ser samtidig at nesten 60% av de spurte booker et møterom et par ganger i uken eller oftere, så behovet er fremdeles tilstedeværende. 36 Figur 28 Spørreundersøkelse Det siste og mest avgjørende kartleggingsspørsmålet gir en god pekepinn på at de ansatte ønsker seg en slik mobilapplikasjon og at de ser behovet. Av funksjonalitetsforslagene vi fikk inn var det et par som gikk igjen. Den mest etterspurte funksjonen er at mobilapplikasjonen skal være rask og enkel i bruk. Vi bestemte oss derfor for å fokusere på at det skal være færrest mulig klikk for å utføre en booking i applikasjonen. Den nest meste etterspurte funksjonen var at applikasjonen burde vise hvor mange det er plass til i de enkelte møterommene. Disse behovene blir det tatt høy for i designet av applikasjonen. Alle svar og spørreundersøkelsen kan sees i vedlegg 7 og vedlegg 8 37 Designvalg og utforming Før utviklingen av applikasjonen startet ble det tatt noen valg med hensyn til design og utforming. På bakgrunn av informasjon vi hadde samlet inn under spørreundersøkelsen satte vi i gang med designet. Vi har gått gjennom flere iterasjoner av designet. Noen av de tidligste utformingene kan sees som vedlegg 9. Disse designvalgene gjør den daglige bruken av mobilapplikasjonen enklere for brukerne ved at de kan booke rom mer effektivt. Valgene fungerte også som retningslinjer da vi gikk videre med utviklingen av applikasjonen. Designvalgene er delt opp etter skjermbilde (eller “aktivitet”) som brukeren møter i den naturlige gangen. Vi har fått hjelp av vår kontaktperson, Kristoffer Sundmyhr, hos Making Waves med det visuelle designet av applikasjonen. Metoder og operasjoner kan det leses om i Use-Casene som ligger i vedlegg 10. Skjermbilde #1 – Login Det første som skal møte brukeren er et skjermbilde med en knapp som hentyder til at her skal man klikke for å logge inn på applikasjonen. Det skal være i tilsvarende stil som Making Waves profil. Det vil derfor være mye kontraster av svart og hvitt med innslag av grønn (heksadesimal fargekode ligger under generelt). Skjermbilde #2 – Azure Active Directory Login Ved førstegangsbruk eller når brukeren selv har logget ut av Office 365, skal brukeren få dette vinduet når han/hun trykker på login-knappen på første skjermbilde. Da vil det komme opp et standardisert loginvindu fra Microsoft. Dette er et tvunget steg for at vi skal kunne benytte oss av de eksterne systemene. Her skal brukeren fylle inn brukernavn og passord for å logge på Office 365. Dette er et vindu som har svart tekst på hvit bakgrunn. Ved innlogging på Making Waves sine systemer skal Making Waves’ logo bli vist øverst i bildet. Etter at brukeren har skrevet inn sin brukernavn og passord og trykket på “sign in” vil applikasjonen gå videre til skjermbilde #3. Dersom brukeren har brukt mobilapplikasjonen tidligere og ikke logget ut, vil klikk på login-knappen i første skjermbilde føre direkte til bookingvinduet. Dette for å spare brukeren for unødvendige mange klikk ved at påloggingsinformasjon blir lagret fra tidligere pålogginger. Skjermbilde #3 - Booking I det tredje skjermbildet vil store deler av bruken foregå. Her vil det være valg om hvor lenge et møte skal vare, hvilket rom man ønsker å booke, oppdatert informasjon om hvilke rom som er ledige, samt booke det valgte møterommet. Fargevalgene vil følge de samme retningslinjene som i det første skjermbildet, med mørke kontraster og bruk av grønnfarge for å fremheve elementer. Det vil være et ikon for utlogging øverst i venstre hjørne av skjermen og et ikon for oppdatering av rominformasjon øverst til høyre. Dette er plasseringer vi føler er naturlige fra bruken av andre applikasjoner med liknende funksjoner. Knappen for å booke rom skal være grønn og dekke nederste del av skjermen. 38 Dette er et hovedelement i designet og det skal derfor være tydelig at denne knappen fører til neste skjermbilde. Tidsrom og møterom som sluttbrukeren skal velge ligger i horisontale lister med “swipe”-funksjoner. Dette for å forenkle, hurtiggjøre og gjøre disse prosessene mer naturlig. Skjermbilde #4 – Pågående møte Dette er det siste skjermbildet i applikasjonen. Her vil det bli vist hvor lenge det er igjen av møtet med stor tekst midt på skjermen sammen med en animasjon som visualiserer dette. Har brukeren et pågående møte er dette det eneste skjermbildet som vises i applikasjonen. Det vil i tillegg være to knapper, en for å kansellere møtet og en for å legge til 15 ekstra minutter hvis det er nødvendig. Alle elementer på denne skjermen er store og tydelige. Det skal ikke være noe andre elementer som kan rote til skjermbildet. “Kansellere møte”-knappen er rød siden fargen rød er en konvensjon i samfunnet om fare/stopp. Når møtet er ferdig skal brukeren bli sendt tilbake til skjermbilde #3. Generelt Antall klikk Vi har fokusert på at denne applikasjon skal være enkel og rask i bruk. Vi har derfor satt krav til at det skal være maks 5 klikk for å oppnå ønsket resultat. Dette vil spare sluttbrukerne for tid og sannsynligvis øke deres lyst til å benytte seg av applikasjonen. Ved å lagre informasjon om tidligere innlogginger, benytte oss av “swipe”-funksjoner og “ett-klikk”-løsninger bidrar vi til en raskere booking. Layout Vi har bygget applikasjonen slik at den skal fungere i stående format. Det er slik de aller fleste bruker applikasjoner på sine telefoner. Å bruke applikasjonen stående gjør det enklere for brukere å benytte en hånd når de skal booke et møterom (litt avhengig av skjermstørrelse). Fargevalg, fonter, bilder Making Waves har en solid og klar designprofil. Vi har derfor valgt å ta utgangspunkt i fargebruk, fonter og bilder som de bruker ellers I selskapet. I tillegg til dette benytter vi oss av logoen deres og navnet “Making Waves” for ytterligere å styrke profilen deres og bidra til merkevarebygging. Farger - Grønn (#50ddb9) - Rød(#D84154) - Sort(#1E1E1D) - Lysegrå(#787877) Fonter - Aften Screen SC Regular (Størrelser: 18,25,45) - Aften Screen Bold (Størrelser: 25,30,40,90) 39 Applikasjonskart Figur 29 Applikasjonskart av Making Room Dette er et enkelt applikasjonskart som viser noe av flyten i mobilapplikasjonen Making Room. Constants.java, CalenderSnippets.java, JSONParser.java og CircularCountdown.java er alle hjelpeklasser. AndroidManifest.xml og Build.gradle er begge filer som bidrar til å bygge mobilapplikasjonen riktig da denne blir installert på mobiltelefoner, og som inneholder informasjon om Android-versjon o.l. 40 Android Android er et mobiloperativsystem som er basert på Linux og utviklet av Google. Operativsystemet er utviklet for bruk på touchtelefoner og nettbrett. Google har selv gått ut med tall på at det er over 1 milliard månedlige Android-brukere [4]. Når man utvikler applikasjoner for Android-plattformen, skriver man koden sin i Java. Java er et objektorientert programmeringsspråk som er godt utbredt. AndroidManifest.xml AndroidManifest.xml er en fil alle Android-prosjekter inneholder. Manifestet består av informasjon om hvordan mobilapplikasjonen er bygget opp og noen primære tillatelser som applikasjonen behøver for å fungere. I tillegg til dette, blir applikasjonsnavnet og logoen som kommer på telefonens applikasjon-skuff satt her. Når mobilapplikasjonen blir installert på en mobiltelefon, ser mobilen på manifestet for hvordan hierarkiet i applikasjonen er. Gradle Gradle er Androids verktøy for å bygge applikasjoner ved bruk av Android-applikasjonens kildekode. I Gradle-filene som ligger i Android Studio-prosjekter blir informasjon om hvilke Android-versjoner applikasjonen retter seg mot, satt, og informasjon om eksterne avhengigheter definert. Disse avhengighetene gjør oss i stand til å bruke verktøy som ikke kommer innebygget i Android Studio. Figur 29 Gradle:dependencies I Making Room benytter vi oss av eksterne avhengigheter som Microsoft har utviklet. Ettersom vi definerer disse i Gradle-filen til vår applikasjon, kan vi benytte oss av metoder som retter seg mot Outlook, Azure Active Directory og andre Office 365-systemer. 41 Constants.java Figur 30 Constants.java Constants.java er en hjelpeklasse til resten av applikasjonen. Her ligger forskjellige URL’er, stringer og ID’er som resten av applikasjonen bruker mye. Blant de viktigste variablene finner vi CLIENT_ID og REDIRECT_URI. CLIENT_ID er den unikt identifiserende kombinasjonen av tall og bokstaver som ble generert da vi opprettet applikasjonen, som brukes til å kommunisere med Azure Active Directory for å hente ut brukerinformasjon. Denne, i kombinasjon med REDIRECT_URI, gjør at vi kan koble oss til de interne systemene til Making Waves og hente ut, skrive eller endre den informasjonen vi trenger. Office 365 SDK for Android Office 365 er vår hovedkommunikasjonsåre for å hente ut informasjon og for autentisering av brukere, og vi behøver derfor en måte å kommunisere med dette på en effektiv måte. For å kunne kommunisere med eksterne systemer hos Making Waves via mobilapplikasjonen, måtte vi ta I bruk en 3. parts SDK (Software Development Kit). Det viste seg tidkrevende å finne et passende verktøy som utførte de oppgavene vi behøvde. Vi prøvde oss først frem med EWS-Java-API, som står for Exchange Web Services Java Application Programming Interface. Her fikk vi løst noen av oppgavene, som f.eks. booking av møter og sending av e-post, men det oppsto store konflikter som ikke lot seg løse med autentiseringen av brukerne. Vi gjorde også et forsøk på webløsninger som kunne overføres og tilpasses Android, men disse ga ikke den responsiviteten vi ønsket I vår mobilapplikasjon, og ble derfor skrinlagt. Det ble nylig sluppet et Microsoft-utviklet SDK for å kommunisere med Office 365 via Android-enheter ved navn “Office 365 SDK for Android”. Denne SDK’en er open source (Norsk: åpen kildekode), vil si at koden som ligger til grunne ligger åpent ute og mer eller mindre hvem som helst kan benytte seg av den. Office 365 SDK for Android går under MIT-lisensen, hvilket kan leses i sin helhet som vedlegg 11. MIT-lisensen sier i korte trekk at man kan bruke kildekoden så lenge man har med en kopi av lisensteksten i hver utgave av programvaren. I tillegg til en ren SDK, har utviklere hos Microsoft lagt ut flere nyttige metoder som man kan bruke mot Office 365. Disse hjelpemetodene ble lagt under prosjektet O365-Android-Snippets på Github. Disse har vi tilpasset vårt formål og brukt i vårt prosjekt. 42 LoginActivity Den første aktiviteten man møter i applikasjonen er loginvinduet. Hovedfunksjonen med dette vinduet er å sørge for autentiseringen av brukere, for å være sikker på at de er skikket til å få bruke applikasjonen. Vinduet følger designmalene til Making Waves med passende bakgrunn, fargevalg og font. Når man trykker login-knappen i bunnen av skjermbildet, blir metoden connectToO365() kalt. Denne metoden kjører flere hjelpemetoder som sjekker bl.a. CLIENT_ID og REDIRECT_URI før den sender deg til Microsofts innlogging mot Azure AD. Her blir brukeren bedt om å fylle inn deres brukernavn og passord til det interne systemet til Making Waves, før de blir sendt videre til neste skjermbilde. Om det har seg slik at brukeren har logget på applikasjonen på deres mobiltelefon tidligere, så vil klikk på “login-knappen” føre de direkte videre til neste skjermbilde uten at de behøver å logge seg inn. Brukerinformasjonen blir da lagret lokalt på telefonen for å spare brukeren for unødvendig mange klikk, og det kutter ned på tiden det tar en bruker å booke et møte gjennom applikasjonen. Om brukeren har logget ut av applikasjonen ved en tidligere anledning, må de logge inn igjen slik som de gjør første gang de brukte Making Room. Figur 32 connectTo0365() 43 MainActivity.java MainActivity.java er hovedaktiviteten i applikasjonen. Det er her brukeren får informasjon om hvilke rom det ikke er aktivitet i og hvilke rom som ikke er oppført som opptatt i AAD. Brukeren starter med å velge møtets varighet. I betaversjonen vil ”30 min” være forhåndsvalgt, men dette er åpent for endring etter hvert som bruksmønsteret blir kartlagt. Når brukeren trykker på ”oppdater”-symbolet i øvre høyre hjørne, kalles metoden doInBackground() i den indre klassen LoadAllRooms som extender AsyncTask. Her blir først et JSONObject satt til å utføre en HttpRequest som henter inn rommene som er oppført i sensortabellen med hver sin respektive status. Figur 33 JSONObject Klassen AsyncTask gjør det mulig å utføre bakgrunnsoperasjoner og publisere resultater på UI-tråden uten å manipulere tråder. Når applikasjonen først starter opp, vil LoadAllRooms() bli kalt fra onCreate(), men deretter må bruker oppdatere manuelt. Etter at bruker har trykket på ”oppdater”, fylles den horisontale listen med rom uten aktivitet, og bruker vil få mulighet til å velge ønsket rom. Hvis rommet ikke står oppført som opptatt i AAD, kan bruker booke rommet. Er det derimot allerede booket, vil bruker bli møtt med en ”AlertDialog”, hvor han får beskjed om at noen allerede har booket rommet, men siden det ikke er aktivitet der, kan han/hun ta en titt for å se om det er ledig. Når bruker har valgt møtets varighet og et ledig rom han/hun ønsker, kan brukeren trykke ”book rom”-knappen for å booke rommet. Når knappen trykkes, blir metoden createCalendarEvent(Event eventToCreate) kjørt. Her blir eventet ”eventToCreate” sendt med som parameter. Eventet har parametere for tidspunktet av møtet og hvem som skal delta. Tidsperioden brukeren har valgt, blir sendt med som tiden, og det valgte rommet blir satt som deltaker på møtet. Figur 34 createCalendarEvent 44 LiveMeetingActivity LiveMeetingActivity.java er den siste aktiviteten som brukere møter når de skal booke møter i Making Room. Skjermbildet består av 3 hovedelementer. En timer for hvor lenge det er igjen av det aktive møtet, en knapp for å utvide møtet med 15 minutter (om mulig) og en knapp for å kansellere møtet. Om et møte er aktivt, vil ikke brukeren kunne gå tilbake fra dette skjermbildet, men må kansellere møtet først. Dette er gjort for å forhindre at en bruker prøver å booke to møterom samtidig. Metoden som blir kjørt når en bruker trykker på “avslutt møte”-knappen heter deleteCalendarEvent(String eventId). Denne metoden henter eventID’en til det pågående møtet og avslutter det ved bruk av hjelpemetoder som ligger i Office 365 SDK for Android. Figur 35 deleteCalendarEvent() Når det gjelder utvidelse av møteromsbookingen, foregår dette i to omganger. Først blir det sjekket at det gjeldende møterommet er ledig de neste 15 minuttene for så at det blir booket et nytt møte som varer disse 15 minuttene. Det er createCalendarEvent(Event eventToCreate) som blir utført når man skal opprette dette møtet på nytt. Her sender man med et event-objekt som har en varighet på 15 minutter som parameter. Det siste elementet i denne aktiviteten er nedtellingen. Dette er et objekt som vi oppretter i en hjelpeklasse som heter CircularCountdown.java. Her bruker vi Androids egne Paint-objekter for å tegne og animere nedtellingen. I hjelpeklassen setter vi farge, fonter og varighet. Varighet for denne nedtellingen, altså den tiden brukeren har valgt at møtet skal vare, blir sendt med som et ekstra parameter fra MainActivity.java. Applikasjonen skal, som nevnt, hente ut status på rommene fra en MySQL-database som ligger på en webserver. 45 Konklusjon Måloppnåelse Vi hadde satt oss mange mål å nå i prosjektperioden. Vi har nådd flere av disse. Vi har lært gode måter å kommunisere mellom hardware og eksterne systemer. Ved hjelp av websockets, PHP og radiofrekvenser får vi sendt data fra sensorer og vist det i et forståelig format. Vi har fått benyttet og utviklet kunnskapen vi har opparbeidet oss i årene som dataingeniørstudenter. Vi har fått en dypere forståelse for Android-programmering, mikrokontrollere og systemutvikling generelt. I tillegg til dette, har vi fått god erfaring med å jobbe i team. Vi har fordelt arbeidsoppgaver og kommunisert tett gjennom hele prosjektperioden. Dessuten har vi fått godt innblikk i hvordan arbeidsdagen som systemutvikler kan være. Konklusjon av produkt I begynnelsen av prosjektperioden satte vi oss en del resultatmål og effektmål vi ønsket å oppnå med produktet. Mobilapplikasjonen kommuniserer i dag med trådløse sensorer, som skal bli plassert i møterommene. Vi har også fått gjort god research rundt forskjellige sensorløsninger for å finne den løsningen som passer best til dette formålet. Hardware har blitt implementert, og dette kommuniserer med både mobilapplikasjonen og eksterne systemer. Mobilapplikasjonen kommuniserer i dag med vårt testmiljø, i påvente av at Making Waves skal gå over til Office 365. Av effektmål ønsket vi å oppnå en mer effektiv bruk av møterom. Dette håper vi å se når mobilapplikasjonen etter hvert blir tatt i bruk. I videre utvikling av systemet ser vi for oss at sensorene får et 3D-printet deksel som skjuler komponentene den består av. Vi har fått laget en 3D-modellering av et slikt deksel som skisse for hvordan dette kan se ut. Et par skjermbilder av denne modellen kan sees i vedlegg 12. For fremtidige utviklere av systemet er dataen som sensorene detekterer lett tilgjengelig for andre plattformer som iOS og Windows Phone. 46 Prosessrapport Bookingsystem for Making Waves Snorri Engen – s188094 Mathias Faanes Olsen – s188066 47 Sammendrag Etter en kort intervjurunde ble denne oppgaven tildelt oss fra Making Waves. Vi fikk en veileder etter at vi hadde fått klarsignal fra MW om at de ønsket oss som gruppe. Dette skjedde november-desember 2014. Kort tid etter dette begynte vi med å løse oppgaven i dette hovedprosjektet. Ettersom dette prosjektet besto av mye nytt var det vanskelig å beregne tid. Vi gjorde likevel et forsøk på å forholde oss til 14-dagers planer med inndelte oppgaver som man skulle gjøre i løpet av disse to ukene. Hvordan dette fungerte og hvordan samarbeidet i gruppa har vært kan det leses videre om i prosessrapporten. Innholdsfortegnelse Sammendrag .............................................................................................................................. 47 Innledning ................................................................................................................................... 48 Om gruppen ................................................................................................................................ 49 Om bedriften .............................................................................................................................. 49 Planlegging og Metode ........................................................................................................... 49 Verktøy ......................................................................................................................................... 51 Utfordringer ............................................................................................................................... 51 Utvikling av Applikasjonen................................................................................................... 51 Samarbeid ................................................................................................................................... 51 Veiledning ................................................................................................................................... 52 Konklusjon .................................................................................................................................. 52 48 Innledning Prosessrapporten består av informasjon om hvordan vi har arbeidet med hovedprosjektsoppgaven. Her vil det også forekomme opplysninger om bachelorgruppen, om bedriften vi utvikler produktet for, planlegging og metode. Om gruppen Gruppen som har jobbet med dette prosjektet består av Mathias Faanes Olsen og Snorri Engen. Vi studerer begge Ingeniørfag Data v/ Høgskolen i Oslo og Akershus. Vi sendte ut søknader til flere bedrifter tidlig høsten 2014 om at vi hadde et ønske om å skrive bachelor for deres bedrift. 24. oktober mottok vi en e-post fra Making Waves om at de ønsket å ha et intervju med oss hvor vi ville diskutere den potensielle oppgaven. Det var flere som responderte på søknadene våre, men det var oppgaven hos Making Waves som appellerte mest. 14. november fikk vi bekreftet at vi hadde fått oppgaven og vi kunne sette i gang med undersøkingen. Vi har arbeidet i gruppe sammen flere ganger tidligere de siste årene i løpet av utdannelsen vår. Vi kjenner derfor godt til både hverandres sterke og svake sider. Gruppen har fått utfordret seg veldig mye i arbeidet med dette prosjektet når det kommer til nye felt og systemer, men vi har samtidig fått nytte av mange av de emnene vi har hatt opp gjennom den 3årige utdannelsen vår. Om bedriften Making Waves (MW) er eksperter på digital tjenesteutvikling og innovasjon. MW har avdelinger for rådgivning, design, teknologi, innholdsproduksjon og drift. MW er en digital innovasjonspartner for mange av Nordens største merkevarer og offentlige virksomheter. Blant deres kunder finner man Regjeringen, NorgesGruppen, NSB, Norrønna og Sparebank 1 Forsikring. MW spesialiserer seg på gode brukerløsninger og god design. Making Waves har kontorer både i Oslo og Krakow og åpnet nettopp i desember 2014 kontorer i Stockholm også. Figur: Making Waves - Logo 49 Planlegging og Metode Utviklingsmodell Vi ønsket tidlig å benytte oss av en form for utviklingsmodell, men innså ganske raskt at Fossefall eller Scrum ikke ville fungere så bra ettersom vi beveget oss stort sett i ukjent terreng. Derfor ble tidsestimeringen en vanskelig oppgave. Vi bestemte oss for å ha dele prosjektet opp i 3 isolerte faser. Når vi sa oss ferdig med den ene, kunne vi bruke informasjonen vi lærte i denne i neste fase av prosjektet. Vi hadde samtidig noen 14-dagersplaner som vi kontinuerlig oppdaterte for å se hva vi skulle jobbe med videre og hva som var blitt gjort i Produkt Hardware Applikasjonsutvikling Reasearch Figur: Fasene i vår utviklingsmodell denne fasen av prosjektet. Vi har valgt å kalle denne metoden for «Tripp-trapp-modellen». Hvert trinn er isolert, men samtidig så bygger de på hverandre til å skape et helhetlig resultat tilslutt. I 14-dagersplanene tok vi for oss innhenting av informasjon, testing, implementasjon og dokumentasjon for hver deloppgave vi skulle implementerte. 50 Verktøy Android Studio – Plattform for utvikling av android-applikasjoner Xamarin Studio – Plattform for utvikling av kryssplatform-applikasjoner FileZilla – Program for tilkobling til og bruk av FTP Sublime Text 2 – Program for utvikling av mindre kodesnutter (PHP, JavaScript, Python, C, HTML, CSS) Word – Tekstbehandlingsprogram for dokumentasjon Google Drive – Overføring av filer mellom gruppemedlemmer Google Docs – Nettleserbasert redigering av dokumentasjon på en åpen plattform. Google Sheet – Nettleserbasert regneark Dropbox – Skybasert lagringstjeneste Slack – Nettleserbasert kommunikasjonsverktøy mellom deltakere og kontaktperson i MW. Balsamiq – Wireframe/Mockup/Prototypingsverktøy for visualisering. Raspbian 3.18 – Operativsystem på Raspberry Pi som utfører alle oppgaver den skal gjøre. www.spark.io/build – Utviklingsplattformen for spark.io-løsningene. Utfordringer Kravspesifikasjonen fra oppdragsgiver for denne oppgaven var veldig åpen. En kombinasjon av dette og at mye var helt nytt for gruppemedlemmene medførte til at mye måtte testes ut før vi falt for en løsning som vi var fornøyd med. Dette gjaldt spesielt hvilken hardware-plattform vi skulle gå for og kommunikasjonen med MW sitt system. Mye tid gikk bort på dette, men vi ser ikke på dette som bortkastet ettersom vi fikk mye viktig læring på forskjellige områder. I tillegg til dette ble tidsestimering et problem, men vi føler vi fikk kontroll da vi benyttet oss av vår utviklingsmodell. Utvikling av Applikasjonen Utviklingen av selve applikasjonen har vært spennende. Vi har fått benyttet oss av læring vi har hatt fra emner som applikasjonsutvikling, systemutvikling, databaser og sikkerhet fra HiOA. Vi har fått en dypere forståelse for applikasjonsutvikling og hvordan man skal kommunisere med fysiske objekter/sensorer fra en digital plattform. Vi har måtte fokusere mer på brukeropplevelse og personvern enn tidligere, ettersom sluttproduktet er noe de ansatte hos MW skal bruke i sin arbeidshverdag. Samarbeid Som nevnt tidligere, så kjenner vi hverandre godt fra før. Vi har jobbet sammen på prosjekter tidligere og vet hvordan vi jobber best. Vi begynte tidlig i prosjektprosessen med daglige møter både på kontorplassene vi hadde fått utdelt hos MW, men også på skolen, hvor vi drøftet løsninger og designvalg for applikasjonen. Dette foregikk gjennom hele de to første fasene av prosjektet hvor vi planla og utviklet hardware/den fysiske biten av prosjektet. Da vi beveget oss over i den avsluttende fasen gikk vi over til å jobbe mer selvstendig ettersom dette var mer kjent for oss. Vi snakket fremdeles sammen daglig over e-post, tekstmeldinger og Slack. 51 Begge gruppemedlemmer har fått tatt del i alle aspekter av prosjektet og har derfor fått maksimal læringsutbytte. Kommunikasjonen har vært god og vi har vært hyppige med å gi hverandre tilbakemeldinger og innspill på hvordan vi føler ting kunne vært gjort annerledes eller om oppgaver er blitt godt utført. Veiledning Intern veileder Vi har hatt høgskolelektor Torunn Gjester som vår interne veileder fra Høgskolen i Oslo og Akershus. Det har vært ukentlige møter hver tirsdag med Torunn. I disse møtene har vi hatt samtaler om hva vi har arbeidet med de siste ukene, hva vi burde fokusere på fremover og fått tips til hvordan vi skal gå frem med dokumentasjonen i forhold til prosjektprosessen. Vi forsøkte tidlig i prosessen å lage 14-dagersplaner for vår veileder slik at hun kunne være litt oppdatert på hva vi gjorde, men ettersom disse var i konstant endring falt disse litt bort. Disse møtene har vært til stor hjelp hva det gjelder input og Torunn som støttespiller i denne prosjektperioden. Ekstern veileder Making Waves utnevnte Kristoffer Sundmyhr som vår kontaktperson i bedriften. Kristoffer jobber som front-end utvikler og har jobbet i MW snart 2 år. Hver mandag har det vært møter med Kristoffer hvor vi har gått gjennom hva vi har gjort og hva som ligger foran oss. Denne applikasjonen er dypt inne i back-endmiljøer, og vi fikk derfor ikke benyttet oss så mye av Kristoffer sin ekspertise hva det gjelder utviklingen, men han kom med mye innspill på prosjektprosessen ettersom han jobber i prosjekter til daglig. Konklusjon Prosessen med å jobbe med dette produktet har vært veldig lærerikt for oss. Vi har lært mye faglig sett, om systemutvikling, programmering, applikasjonsutvikling og sikkerhet. Vi har lært en del om det å arbeide tett sammen om et prosjekt over lang tid og vi har lært noe om hverandre. Bortsett fra det rent faglige, så er det å ha erfaring med prosjektoppgaver helt klart det viktigste vi tar med oss etter å ha ferdigstilt dette produktet. Det å arbeide systematisk og å planlegge godt i forveien er gull verdt. Vi tar med oss ny lærdom om maskinvare og hvordan dette kommuniserer med digitale komponenter som vi utvikler selv. Det har dessuten vært veldig interessant å ha en oppdragsgiver som gir oss en oppgave med spesifikke krav som vi må tilfredsstille. Vi er stolte over produktet vi har laget og gleder oss til å se det i bruk hos Making Waves i tiden som kommer. 52 Kilder og lenker Internett [1]: http://www.gartner.com/newsroom/id/2636073 [2]: http://products.office.com/nb-no/try [3]: https://manage.windowsazure.com/ [4]: http://www.techspot.com/news/57228-google-shows-off-new-version-ofandroid-announces-1-billion-active-monthly-users.html Følgende ble brukt som oppslagsverk gjennom hele perioden: URL: http://www.w3schools.com/ URL: http://developer.android.com URL: https://hc.apache.org/ URL: https://community.particle.io/ URL: https://lowpowerlab.com/forum/ URL: https://github.com/OfficeDev/Office-365-SDK-for-Android URL: https://github.com/OfficeDev/O365-Android-Snippets 53 Vedlegg Vedlegg 1 Kravspesifikasjon Funksjonelle krav til applikasjonen fra Making Waves Brukernavn og passord skal settes i Office 365 Azure AD Gjenkjenne bruker etter første innlogging Bruker skal kunne logge ut Bruker skal kunne oppdatere sensordata Bruker skal ha oversikt over tilgjengelige rom Rom som allerede er booket, men uten aktivitet skal vises men ikke være mulig å booke. Booke møte gjennom Office 365 Bruker skal kunne kansellere møte Bruker skal kunne se hvor lenge det er igjen av møtet Utvide møtets varighet Er det booket et møte skal det ikke være mulig å booke et nytt uten å kansellere pågående møte Applikasjonen skal ha 3 skjermbilder inkludert “Logg inn” Funksjonelle krav til sensorsystem Sensor skal detektere bevegelser Sensor skal ha en rekkevidde på minimum 5 meter Systemet skal lagre sensordata på en database Sensor skal gå på batteri Sensor skal ikke være sjenerende Sensor skal gi synlig signal når bevegelse er oppdaget Systemet skal kunne benyttes av andre plattformer Funksjonelle krav til kommunikasjon med eksterne systemer Applikasjonen skal kommunisere med det nåværende bookingsystemet til Making Waves. Applikasjonen skal kunne hente ut møterom fra Exchange Online serveren til Making Waves. Pålogging skal fungere ved at brukere benytter seg av sin Office 365konto. 54 Personvern Sensordatabasen skal tømmes en gang i døgnet Det skal ikke lagres noe personopplysninger i MySQL databasen. Krav til kode Alle metoder skal kommenteres forståelig for andre utviklere Selvforklarende metode-navn Koden skal optimaliseres for videre utvikling All tekst skal lagres i strings.xml for enkel endring av språk Universell utforming Applikasjonen skal være lett forståelig Applikasjonen fungere med minimal brukerinteraksjon Applikasjonen skal ikke har unødvendig forstyrrende elementer Tilrettelagt for endring av språk. Tekniske krav Programmeringsspråk: Java, PHP, JavaScript, Python, C Markeringsspråk: Extensible Markup Language (XML) Databasekommunikasjon: MySQL, Exchange Online, Azure Active Directory Ikke-funksjonelle krav Prosjektet skal dokumenteres etter HiOA sine standarder Dokumentasjon skal være ferdig innen gitt tidsfrist Betaversjon av applikasjon skal være klar innen gitt tidsfrist Prosjektperioden skal følge milepælplanen 55 Vedlegg 2 Office 365 hovedportal 56 Vedlegg 3 Windows Azure Portal 57 Vedlegg 4 Figur av Administrasjonsportalen til Exchange 58 Vedlegg 5 Oversikt over rommene i Administrasjonsportalen til Exchange 59 Vedlegg 6 Hvordan opprette rom i Exchange 60 Vedlegg 7 Spørreundersøkelsen 61 62 Vedlegg 8 Svar på spørreundersøkelsen 63 64 65 66 Vedlegg 9 Tidlig skisse av applikasjonens hendelsesforløp 67 Vedlegg 10 Detaljert beskrivelse av Use-Case Use Case Aktør Prebetingelser Postbetingelser Hendelsesflyt Variasjoner Logg Inn Sluttbruker Bruker vil logge inn Bruker er logget inn 1. Bruker åpner applikasjonen 2. Bruker skriver inn epost og passord 3. Bruker trykker “login”-knappen 4. Epost og passord blir sjekket opp mot “credentials” som ligger i Office 365 Azure AD 5. Bruker blir logget inn i systemet 1. Bruker har glemt passord a. Bruker må kontakte systemansvarlig for reset av passord 2. Bruker fyller inn feil passord a. Bruker blir bedt om å fylle inn korrekt passord b. Bruker får forsøke på nytt 3. Bruker fyller inn feil e-post a. Bruker blir bedt om å fylle inn gyldig e-post b. Bruker får forsøke på nytt 4. Autentiseringssystem er nede a. Systemet gir feilmelding som vises på skjerm i applikasjon b. Bruker får forsøke på nytt 5. Bruker har ikke e-post eller brukernavn a. Bruker må kontakte systemansvarlig for å motta innloggingsinformasjon 6. Bruker trykker “avbryt”-knappen a. Bruker blir sendt tilbake til hovedside 68 Use Case Aktør Prebetingelser Postbetingelser Hendelsesflyt Variasjoner Use Case Aktør Prebetingelser Postbetingelser Hendelsesflyt Variasjoner Kansellere møte Sluttbruker Bruker vil avslutte møte Bruker har en gyldig booking pågående Bruker er innlogget Bruker er inne i applikasjonen Bruker har kansellert møtet 1. Bruker har “aktivt møte” -siden oppe 2. Bruker trykker “Avslutt møtet”-knappen 3. Møtet blir avsluttet 4. Rommet blir frigjort 5. Bruker blir sendt tilbake til “book rom” -side. 1. Systemfeil gjør at man ikke får avsluttet møte tidligere enn satt opp a. Bruker får feilmelding i applikasjon om at rommet ikke kan frigis tidligere pga feil i systemet. Utvide romreservasjon med 15 min Sluttbruker Bruker vil utvide tiden møte skal vare Bruker har gyldig booking pågående Bruker er innlogget Bruker er inne i applikasjonen Bruker har forlenget møtet sitt med 15 min 1. Bruker har “aktivt møte” -siden oppe 2. Bruker trykker på “+15”-knappen 3. Bruker får spørsmål om de vil utvide reservasjonen med 15 minutter 4. Bruker trykker “ok” 5. Varigheten til reservasjonen blir økt med 15 minutter 6. Bruker kommer tilbake til “aktivt møte” -siden 1. Andre har booket et møte i gjeldende tidspunkt a. Bruker får feilmelding med beskjed om at +15 ikke går ettersom det er opptatt. b. Bruker sendes tilbake til “aktivt møte” -side. c. Reservasjon blir ikke utvidet. 2. Bruker skal selv ha møte innen de neste 15 minuttene a. Bruker får feilmelding med beskjed om at +15 ikke går ettersom bruker har andre møter. b. Bruker sendes tilbake til “aktivt møte” -side c. Reservasjon blir ikke utvidet 69 Vedlegg 11 MIT-Lisensen Copyright (c) <year> <copyright holders> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 70 Vedlegg 12 3D-Modelleringer av deksel til romsensor 71
© Copyright 2024