• No results found

EXAMENS ARBETE

N/A
N/A
Protected

Academic year: 2021

Share "EXAMENS ARBETE"

Copied!
54
0
0

Loading.... (view fulltext now)

Full text

(1)

EXAMENS ARBETE

Högskoleingenjör i Datorteknik, 180hp

Bokningssystem för laddstolpar

Richard Solti och Christoffer Lindström

Examensarbete, 15hp

Halmstad 2015-10-21

(2)

 

   

(3)

Sammanfattning 

Projektet handlar om att utveckla ett bokningssystem för laddstationer för  elbilar. 

 

Målet är att skapa en prototyp som kan användas för att boka laddstationer och  utnyttja bokningar. 

 

Målet uppnås genom att kombinera en databas, webbplats, server och  laddstationer så att de kommunicerar med varandra. 

 

Resultatet av detta är ett öppet bokningssystem som kan anpassas för andra  ändamål än bokning av laddstationer. 

   

                                                               

(4)

   

                                                                                   

II 

(5)

Förord 

Vi vill säga ett tack till vår handledare Erik Hertz som har hjälpt oss med att få  en struktur på denna rapport. 

                                                                                           

III 

(6)

1 Inledning...

1.1 Bakgrund...

1.1.1 Liknande lösningar...

1.2 Syfte...

1.3 Mål...

1.4 Frågeställning... 3  

1.5 Avgränsning...

2 Teori... 5  

2.1 Systembeskrivning...

2.1.1 Webbplats...

2.1.2 Databas...

2.1.3 Server...

2.1.4 Simulation av Laddstation...

2.2 Mjukvaruprogrammering...

2.2.1 Objektorienterad programmering... 6 

2.2.2 Procedurell programmering...

2.3 Webbplats...

2.3.1 Interaktiv karta……….. 8 

2.3.2 Webbserver... 10 

2.4 Databaser... 10 

2.4.1 Databashanterare... 10 

2.5 Server... 11 

2.5.1 Klient­Server förhållandet... 11 

2.5.2 Flera samtidiga anslutningar... 11 

2.5.3 Kommunikation... 12 

3 Metod... 15 

3.1 Webbplats... 15 

3.1.1 Valet av webbplats framför mobilapplikation... 16 

3.1.2 Leafletjs... 16 

3.2 Databas... 16 

3.3 Server... 16 

3.3.1 Trådning... 16 

3.4 Kommunikation... 17 

3.4.1 Kommunikation mellan server och databas... 17 

3.4.2 Kommunikation mellan server och laddstation... 17 

3.4.3 Kommunikation mellan server och webbplats... 17 

3.4.4 TCP... 17 

3.5 Simulering av laddstation... 17 

4 Testning... 19 

4.1 Bokningssystemet... 19 

4.2 Testerna på alla delsystem... 19 

4.2.1 Tester på servern... 19 

4.2.2 Tester på databasen... 19 

4.2.3 Tester på simulationen av laddstation... 19 

4.2.4 Tester på webbplatsen... 19 

4.2.5 Dokumentation av tester... 19   

     

IV 

(7)

5 Resultat ... 21 

5.1 Webbplats... 21 

5.1.1 Registrering och inloggning... 23 

5.1.2 Använding av kartan... 23 

5.2 Simulering av laddstation... 24 

5.3 Server... 26 

5.3.1 Databasanslutning... 26 

5.3.2 Klientanslutning... 26 

5.4 Databas... 27 

5.5 Bokning/hela systemet... 27 

5.6 Laddning... 29 

5.7 Analys... 29 

5.7.1 Analys av tester... 29 

5.7.2 Svar på frågeställningar... 30 

6 Diskussion... 33 

6.1 Delsystem... 33 

6.1.1 Webbplats... 33 

6.1.2 Databas... 33 

6.1.3 Server... 33 

6.1.4 Simulation av laddstation... 33 

6.2 Projektets påverkan på samhället... 34 

6.2.1 Miljöpåverkan... 34 

6.2.2 Ekonomi... 34 

6.3 Vidareutveckling... 34 

6.3.1 Databas... 34 

6.3.2 Webbplats... 34 

6.3.3 Server... 35 

6.3.4 Simulation av laddstation... 35 

7 Slutsats... 37 

8 Referenser... 39 

Appendix ... 43 

A ­ Krav på systemet... 43 

B ­ Testspecifikation för generella krav...  44 

B ­ forts...  44   

                             

(8)

 

 

   

(9)

1 Inledning 

Detta kapitlet beskriver bakgrund, syfte, avgränsning och metoder som användes för att  genomföra examensarbetet. 

 

Det här projektet är gjort i samarbete med utvecklingsingenjörerna Anna Ekelund och Eric  Standár från Högskolan i Halmstad åt företaget Mutual Benefits som är belagda i Göteborg. 

 

1.1 Bakgrund 

De första elbilarna producerades runt 1880 [1,2] och var väldigt populära tills nya tekniker  inom förbränningsmotorer upptäcktes på tidigt 1900­talet. Populariteten avtog radikalt och  elbilar slutade produceras redan vid 1920­talet då bilar med förbränningsmotorer dominerade  99% av bilproduktionen [1,2]. Från och med sent 1990­tal började elbilar återigen bli 

populära för att nya batteritekniker upptäcktes och på grund av det ökande bekymret [1,2] 

med ökande bränslepriser och växthuseffekten. Olika orter har även satt upp mål för elbilar,  bland annat Stockholm som siktar på en fossilbränslefri stad vid år 2050 [3]. 

 

Flera biltillverkare lägger mycket resurser [4,5,6] på elbilar och därmed ökar även intresset  för elbilar. Tävlingssporten Formel 1 [7] har även fått en elbilsversion där tävlande använder  bilar som liknar en Formel 1 bil men körs enbart på elektricitet. Den nya sporten kallas  Formel E [8]och den första säsongen startades i 2014. Den stora satsningen beror till viss del  på rejält minskade batteripriser [9]. I Sverige, som till stor del använder förnybar energi [10],  sker det en stor satsning på elbilar och infrastruktur för elbilar bland annat genom bidrag från  staten [11]. 

 

Att ha en elbil kan även bli miljövänligare i framtiden eftersom det bidrar till ett oberoende av  fossila bränslen, huvudsakligen i länder där vatten­, vind­ och solkraft står för större delen av  energiproduktionen. I sådana länder skulle utsläppet som personbilar orsakar minska då  mindre mängder av fossila bränslen används. I andra länder, som använder främst kolbaserad  elproduktion är det inte lika miljövänligt. Detta är på grund av att hela förloppet från råvara  till el för elbilar kan ha en högre kostnad än produktionen av fossila bränslen[12] 

 

Eftersom elbilar blir allt mer populära [13] så måste även infrastrukturen hänga med. Det  finns alltså för få laddstationer i Sverige [13] och det är en möjlighet att en elbilsägare väljer  att inte använda sin elbil på grund av oron att det inte finns möjlighet till att ladda elbilen  [14]. 

 

1.1.1 Liknande lösningar 

En tjänst som tillåter bokning av laddstationer finns inte i Europa. Liknande men  ofullständiga lösningar finns däremot många av. Laddinfra.se [15] har en databas av alla  laddstationer som har en intelligens i sig. Databasen används av många olika karttjänster i  Sverige. Dessa karttjänster är bland annat Eniro [16] och Fortum [16].  

 

I USA finns ChargePoint [17] som tillåter bokning av laddstationer. Systemet är fortfarande  under utveckling och har endast ett fåtal laddstaioner som är bokningsbara. Förutom 

bokningsbara stationer så finns även icke­bokningsbara stationer med i ChargePoints system. 

Personen som vill ladda hos en av ChargePoints laddstationer måste ha antingen ett 

“ChargePoint Card” eller ChargePoints app på mobilen. Kortet fungerar så att användaren 

(10)

Appen kan användas för att göra samma sak som kortet. ChargePoint har även lagt till  laddstationer som inte är deras. 

 

Det finns, precis som i Sverige, även andra karttjänster som visar laddstationer på en karta. 

Karttjänsten från US Energy Department [18] är en sådan. 

Denna karttjänst är inte begränsad till laddstationer för elbilar utan innehåller även  bensinmackar, vätgasmackar mm. 

1.2 Syfte 

Syftet med bokningssystemet är att underlätta resor för elbilsägaren som vill resa längre  sträckor med elbilen genom att erbjuda möjligheten att boka laddstationer.  

Bokningsystemet är avsett att kunna standardisera och samla alla laddstationer i Sverige under  ett och samma system. En standardisering innebär att elbilsägaren endast använder en typ av  identifiering och betalning.  

 

Norge har problem med att det är för få laddstationer för antalet elbilar och köer bildas på  många ställen med laddstationer [14]. Samma problem är sannolikt att hända i Sverigen men  förmodligen i mindre omfattning. Problemet reduceras till en viss mån genom att elbilsägaren  kan planera sin resa i förväg och säkerställa att det kommer finnas en plats att ladda på. 

 

1.3 Mål 

Målet är att utveckla ett bokningssystem som nya laddstationer kan kopplas upp mot och som  möjliggör bokning av redan uppkopplade laddstationer. Laddstationerna som är tillagda i  systemet ska kunna bokas av en användare som har registrerat sig. Användare registrerar sig i  systemet via en hemsida. Bokningssystemet ska vara öppet i den meningen att olika de i  framtiden utvecklade applikationer för smarta mobiler kan fungera med bokningssystemet. 

Bokningssystemet i sig ska inte ändras för att förut nämnda applikationer ska fungera. 

Bokningssystemet är uppdelad i fyra delsystem. 

De fyra delsystemen är: 

● Webbplats  

○ Webbplatsen låter användare registrera, logga in och visuellt interagera med  bokningssystemet och utnyttja dess funktioner. Webbplatsen ska ha en  interaktiv karta som låter användaren se laddstationer i Sverige, deras status  och boka laddstationer. En “Min Sida” webbsida ska lista alla bokningar och  även låta användaren avboka laddstationer. 

● Databas 

○ Databasen lagrar data som behövs för att bokningssystemet ska fungera. 

Databasen lagrar bland annat information om laddstationernas fysiska  koordinater, bokningar och användare. Bokningssystemet använder datan för  inloggningar, bokning och diverse funktioner. 

● Server 

○ Servern hanterar all kommunikation mellan webbplatsen, databasen och  laddstationerna som är registrerade i systemet. Hanterar även annan  kommunikation som exempelvis förut nämnda applikationer. 

● Simulation av laddstation 

○ En enkortsdator som härmar en laddstation och använder visuella signaler för  att indikera dess tillstånd. 

De fyra delsystemens teori och genomförande kommer förklaras mer ingående under stycken  Teori respektive Metod. 

(11)

För att projektet ska ses som klart ska den uppfylla alla kraven som är nedskrivna i en  kravspecifikation som är bifogad som Appendix A. 

1.4 Frågeställning 

Dessa frågeställningar har ställts på projektet. Frågeställningarna besvaras i Resultatdelen. 

1. Hur kan en person identifieras när hen vill använda en bokad laddstation? 

2. Är det möjligt att standardisera redan aktiva laddstationer så att de fungerar  med bokningssystemet? 

○ Vilket är bästa sättet att göra det på? 

3. Vad innebär att systemet är öppet i avseendet att det kan användas till att boka  annat än laddstationer? 

○ Finns det en nivå för hur öppet ett system är? 

○ Finns det nackdelar med att ett system är öppet? 

4. Är en mobil­vänlig hemsida bättre än applikationer för mobiler? 

○ Nackdelar och fördelar med hemsida respektive applikation? 

5. Vad gör ett bokningssystem färdig? 

○ Vilka är de karaktäristiska funktionerna som gör bokningssystemet till ett  bokningssystem? 

6. Skulle man kunna göra ett bokningssystem utan en central server? 

7. Hur kan en databas effektivt utformas för att lätt komma åt data? 

1.5 Avgränsning 

Saker som inte tas hänsyn till i det här projektet är: 

 

● Design  

Hemsidans design kommer att vara minimalistisk men annars läggs inte mer tid än  nödvändigt på hemsidans design. 

 

● Betalningsmetoder 

Betalning och penninghantering kommer ingår inte i projektet. 

 

● Säkerhet 

Säkerhetsfrågor, exempelvis kryptering av data, ingår inte i projektet. 

 

● Byggnad av laddstation 

Byggnad av laddstation ingår inte i projektet. 

 

● Begränsad till Sverige 

Bokningssystemet är utvecklad med endast Sverige i tanken och därför kommer större hänsyn  inte tas till andra länder. 

 

● Kommunikationssätt för laddstationer 

Eftersom det finns väldigt många olika sätt att kommunicera med laddstationer så antas det att  laddstationerna kommunicerar med systemet via internet. Avgränsningen är då att 

kommunikationssätt som inte är via internet iaktas inte. 

 

● Utveckling av webbserver 

En egen webbserver kommer inte att utvecklas utan befintliga program kommer att utnyttjas. 

   

(12)

 

   

(13)

2 Teori 

2.1 Systembeskrivning  

En längre beskrivning av hur systemet är uppbyggt med avsikten att skapa en relevans för  resten av Teori­delen. 

Förklaring av systemet 

 

Figur 2.1. Figuren visar hur delsystemen är kopplade med varandra. Ponera att webbplatsen behöver information  som är lagrad i databasen. Webbplatsen måste då göra det via Servern.  

 

Systemet består av fyra delsystem. Figur 2.1 visar hur de är i relation till varandra. 

Webbplatsen kan endast  komma åt information i databasen och laddstationerna via Servern. 

Servern, som är en slags mellanhand, har en förbindelse med alla andra delsystemen. 

Laddstationerna och webbplatsen skickar förfrågningar till servern och servern tillhandahåller  dem. Dessa fyra delsystem är: 

2.1.1 Webbplats 

Webbplatsen är användarens verktyg för att interagera med systemet. Den är utrustad med en  karta som visar laddstationerna. Dessa ska då gå att trycka på för att boka inom en önskad  tidsram. 

2.1.2 Databas 

En databas krävs för att kunna lagra data som är långlivad. Data som lagras är användare,  laddstationer och bokningar i så kallade tabeller. Eftersom data som lagras är relaterade till  varandra så är det lämpligt att en relationsdatabas används för att lagra data. Databasens enda  kommunikation i systemet är med Servern som manipulerar databasen.   

(14)

2.1.3 Server 

En anslutning till en databas är prestandakrävande att skapa [19]. Detta är på grund av att  databasen bland annat reserverar minne för varje anslutning och dessa steg är tidskrävande. 

Delsystemet “Server” är en central server som samlar alla anslutningar från laddstationer och  webbplatsen till att använda en och samma databasanslutning. 

2.1.4 Simulation av Laddstation 

En laddstation kan efterliknas genom att programmera en enkortsdator till att härma en  laddstations beteende. 

Enkortsdatorn upprätthåller en anslutning till servern och begär information om dess status. 

Olika visuella signaler används beroende på vad statusen är. Förutom att inte kunna ladda en  elbil så uppför sig enkortsdatorn som en laddstation förväntas att uppföra sig. Detta delsystem  är endast för demonstration som görs för att visa att bokningssystemet fungerar. 

2.2 Mjukvaruprogrammering 

 

För att utveckla ett program som är effektivt kodad så är det fördelaktigt att använda sig av en  eller flera programmeringsmetoder. Endast två metoder, objektorienterad och procedurell  programmering, tas upp då det finns från tidigare kunskaper inom dessa. 

2.2.1 Objektorienterad programmering 

Objektorienterad programmering [22] lämpar sig bäst när programmet hanterar stora mängder  av data som är olika med har likadana egenskaper. Egenskaperna som skiljer sig åt kan sparas  i instanser av en klass [23]. Ett exempel kan vara ett program som visar många bollar som  studsar på skärmen. 

 

Figur 2.6. Bollar som har olika färger och studshöjder   

I figur 2.6 har bollarna egenskaper som är gemenesamma och egenskaper som inte är  gemensamma.Alla bollar är runda, har samma storlek och samma hastighet. Alla bollar har  olika färger, studshöjder, rör sig antingen upp eller ner och har olika höjdpositioner. En klass  vars attribut är olikheterna och metod som uppdaterar bollen kan då skapas. 

 

Figur 2.7. Exempel på hur en klass för en boll kan se ut   

Alla bollar är då samlade, som i figur 2.7, under deras egna datatyp som heter “Ball”. 

Objektorienterad programmering är väldigt unik med det att klasser kan ofta återanvändas i 

(15)

andra program utan större ändringar och den tillåter även abstrahering och modularitet. 

Detsamma gäller för klassen Ball som i andra program kan abstraheras till exempelvis 

“BasketBall”, “FootBall” och “PingPongBall”.  

 

Denna metod används främst när det finns många liknande ‘saker’ i programmet och  programmeraren vill generalisera dessa ‘saker’. På så sätt slipper programmeraren skriva  samma kod igen varje gång en annorlunda ‘sak’ läggs till i programmet. Om man substituerar 

‘sak’ med ‘boll’ som använder koden som visas i figur 2.7 så behöver programmeraren endast  ändra de fyra attributen som finns i figuren. Programmeraren slipper skriva metoderna 

“DrawBall” och “MoveBall”. 

2.2.2 Procedurell programmering 

Kod som är strukturerad med klasser och funktioner men är inte objektorienterad kallas för  procedurell [24]. I sådan kod är klasserna ofta statiska [25]. 

I samma exempel som i figur 2.7 hade en array skapats för varje attribut. 

 

Figur 2.8. Exempel på hur koden i figur 2.7 kan se ut med procedurell programmering   

Som det märks i figur 2.8 så blir koden genast svårare att förstå. Det finns inget som riktigt  antyder att det är bollar som kodsnutten i figur 2.8 handlar om. Slutsatsen att det handlar om  bollar kan inte dras utan kommentarerna i koden. 

 

Statiska klasser och metoder (eller funktioner) i procedurell programmering används ofta  endast för att strukturera koden. Funktionerna i klasserna är subrutiner som utför operationer  på primitiva datatyper [26]. En subrutin kan exempelvis vara en funktion som omvandlar  grader till radianer eller en funktion som räknar ut en rätvinklig triangelns hypotenusa.  

Ett procedurellt program kan ses som en produktionslinje där de olika stegen av 

produktionslinjen är subrutinerna. Procedurell programmering är lämplig då programmet ska  utföra en process enligt löpandebandprincipen [27] eller liknande. 

 

   

(16)

2.3 Webbplats 

En webbplats består av en eller flera webbsidor som visas i en webbläsaren. Nästan alla  webbplatser är skrivna i HyperText Markup Language (HTML)[28] som är en standard. 

HTML kan dock användas i kombination med andra språk och metoder. 

 

HTML bestämmer en webbsidas struktur och till en viss del innehållet.  

 

Cascading Style Sheet (CSS) [29] kan användas för att generalisera strukturen för alla  webbsidor så att de använder en och samma struktur. Eftersom innehållet som HTML kan  visa är begränsad så måste andra metoder användas. Hypertext PreProcessor [30] (PHP) och  Javascript [31] används vanligen ihop med HTML. 

 

PHP används till att bestämma innehållet på en webbsida innan den laddas i webbläsaren. 

Javascript används för att bestämma och ändra innehållet efter att webbsidan har laddats i  webbläsaren.  

 

JavaScript kan användas för att lägga till interaktiva moment eller animationer på webbsidan. 

2.3.1 Interaktiv karta 

Att skapa en interaktiv karta med funktioner och objekt kräver mycket arbete, för detta finns  redan färdiga tjänster, bland annat Leafletjs [32] och Google Maps [33].  

Exempel på funktioner som dessa tjänster bidrar med är kartan i sig men de bidrar även med  markörer, former, zoom och drag funktioner. De populäraste karttjänsterna är Leafletjs,  OpenLayers, Google Maps. 

 

Leafletjs  

Leafletjs är en gratis, open­source karttjänst som går att anpassa till smartphones och tablets  och har stöd för HTML 5, CSS3 och är skriven i JavaScript vilket gör det enkelt att integrera  på webbsidor.Tjänsten är skapad för att göra det enkelt att implementeras av utvecklare som  inte har omattande kunskaper inom geografiska informationssystem [34]. 

 

Figur 2.9 visar hur en typisk karta byggd med Leafletjs kan se ut. 

   

Figur 2.9. Exempel på en leafletjs karta med markör (blå i mitten) och popupfönster (vit ruta). 

 

(17)

OpenLayers 

Openlayers är en gratis, open­source karttjänst som liknar Leafletjs. Den är större och har fler  fördefinierade verktyg vilket gör tjänsten mer flexibel men kan uppfattas som lite mer  komplicerad. 

 

Figur 2.10 visar hur en typisk karta byggd med OpenLayers kan se ut. 

 

 

Figur 2.10. Exempel på en OpenLayers karta med ett popupfönster som visar Halmstads koordinater. 

 

Google maps 

Google maps är en annan karttjänst som kan användas gratis så länge webbplatsen inte  används för att generera vinst eller har under 25000 besökare dagligen. Den är heller inte  open­source vilket gör att programmeraren blir låst till Googles verktyg utan att kunna  modifiera den så som programmeraren vill, oftast så vill man kunna modifiera och skapa egna  verktyg och då är det ett hinder att det inte är open­source. 

 

Användarvänligheten hos Google maps är mycket lägre då den har ett mer omfattande utbud  av funktioner. Det gör att Google maps kan anses mycket svårare att integrera i webbsidor  för. 

 

Figur 2.11 visar hur en typisk karta byggd med Google Maps kan se ut. 

 

  Figur 2.11. Exempel på Google Maps API med markörer (röda nålar) 

 

   

(18)

2.3.2 Webbserver 

En webbläsare är en klient för webbservern [35]. Webbservern är en server för webbplatsen  och används till att tillhandahålla webbsidor för webbläsaren. Innan en webbsida skickas till  webbläsaren så läser webbservern av webbsidans kod och processerar PHP­kod som finns i  webbsidan. Efter det skickas webbsidan till webbläsaren för att visas för användaren. 

 

2.4 Databaser 

En relationsdatabas [36] används främst när olika typer av data har relationer till varandra. En  sådan databas består av flera tabeller som är uppdelade i kolumner och rader. Figur 2.12 visar  ett exempel på hur en tabell kan se ut. 

 

Figur 2.12. Exempel på hur en tabell kan se ut. An tabell kan förstås ha fler kolumner och rader. 

 

Data kan manipuleras i databasen med hjälp av språket Structured Query Language [37] 

(SQL) som är ett standardiserat språk för relationsdatabaser. SQL använder deklarativ  programmering [38] som innebär att koden specifierar vad resultatet ska vara istället för att  specifiera hur något ska göras. En query är en kodrad som beskriver vad resultatet önskas vara  som beskriver vad resultatet önskas vara. En simpel query är select­kommandot som hittar  och hämtar data. Figur 2.13 visar några exempel på select­kommandot och vad för slags data  en query med select hämtar. På vänster sida är tre olika queries. I mitten visas vilken tabell  queryn skickas till och till höger visas resultatet. 

Figur 2.13. Exempel på flera queries. Uppifrån neråt betyder dessa: Hämta alla rader där åldern är 26, Hämta  alla rader där förnamnet är Doe, Hämta alla rader där förnamnet är Jane men visa endast ålder i de raderna. 

 

Det brukar vanligtvis finnas en kolumn i tabellen som är den primära nyckeln för varje rad. 

Nyckeln ska vara unik och kan användas till för att exempelvis hämta data från andra tabeller.  

2.4.1 Databashanterare 

En databashanterare är ett program som användaren kan bygga databaser med. Dessa program  sköter allt ifrån installering av en server för databasen till manipuleringen av databasen. 

De 3 mest populära databashanterarna är Oracle Database, Microsoft SQL Server och  MySQL. Alla tre uppfyller till stor del samma funktion, vilket är att hantera databaser. 

Oracle Database används främst av företag och är till för att hantera en objekt­orienterad  relationsdatabas.  

Microsoft SQL Server är en äldre relationsdatabashanterare som är utvecklad av Microsoft. 

MySQL är en populär relationsdatabashenterare bland privata utvecklare och småprojekt som  inte är monetiserad.  

(19)

2.5 Server 

En server är, i datakommunkationens mening, ett datorsystem som servar klienter över ett  nätverk.  

 

2.5.1 Klient­Server förhållandet 

Som konstaterat innan, så är det dyrt prestandamässigt att skapa en anslutning till databasen  då databasen gör flera steg som exempelvis allokering av mycket minne. Servern är skapad  för att samla alla anslutningar, som laddstationer och webbplatsen gör, och sedan använda en  och samma anslutning med databasen för att hämta informationen som begärs via 

anslutningarna.  

En anslutning mellan servern och en laddstation eller webbplatsen kräver mindre resurser av  datorn än en anslutning till en databas. 

 

I ett klient­server förhållande så är det databasen som servar servern och servern är en klient  för databasen. Alla andra anslutningar från laddstationer och webbplatsen är klienter för  servern. Figur 2.14 illustrerar detta. 

 

Figur 2.14. Visar förhållande mellan databas, server och laddstationer/webbplats.  

 

2.5.2 Flera samtidiga anslutningar 

Om servern ska hantera flera anslutningar samtidigt så snabbt som möjligt så är det  fördelakigt att programmera in stöd för det. I C++ finns två sätt att uppnå detta. Den ena är  funktionen select [39] och den andra är trådning [40]. 

Select 

Select [39] är en funktion som kan inkluderas i programmet. Funktionen läser genom ett eller  flera socket [41] objekt för att låta användaren kolla om det finns ett meddelande som har  mottagits av klienterna. Funktionen fungerar endast för sockets.  

 

En socket är ett objekt som beskriver en förbindelse mellan en klient och en server. 

Trådning 

Trådning [40] används i många program. Den används för att dela upp ett program så att olika  delar kan processeras samtidigt. I serverns fall skulle trådning användas till att skapa en tråd  för varje anslutning. 

 

Svårigheterna med trådning är bland annat att de måste synkroniseras om de har använder en  global variabel. Ett sådant problem kan illustreras med tankeexperimentet “Ätande Filosofer” 

[42]. 

(20)

   

Figur 2.15 . De fem filosoferna kan ses som trådar och gafflarna är resurser, eller variabler, som används av  trådarna/filosoferna som är bredvid.  

 

Problemet är, kort skrivet, att varje filosof, eller tråd, kan endast arbeta vidare om den 

använder både den vänstra och högra gaffeln, eller variabeln. Alla trådar tar den högra gaffeln  först och detta resulterar i att alla gafflar blir tagna och alla filosofer väntar på att kunna ta  gaffeln från vänster. Alla trådar fastnar då och väntar i all evighet. 

2.5.3 Kommunikation 

 

Servern kommer att kommunicera via internet och därför finns två dataöverföringsprotokoll  att välja bland. Dessa är Transmission Control Protocol (TCP) [43] och User Datagram  Protocol (UDP) [44]. Eftersom alla delsystem är beroende av varandra så måste de använda  samma typ av kommunikation som servern. 

TCP ­ Transmission Control Protocol 

TCP[43]  används när pålitlighet prioriteras framför hastighet. En fil som överförs med TCP  är garanterad att överföras felfritt mot kompromissen att det tar längre tid. På vänster sida av  figur 2.15 illustreras hur TCP skickar samma data igen när den inte får en bekräftelse. Genom  att bekräfta varje sändning så garanteras det att filen, eller det som skickas, kommer fram hel. 

UDP ­ User Datagram Protocol 

UDP[44] används när snabbhet prioriteras framför pålitlighet. En fil som överförs med UDP  går oftast snabbare än TCP men kompromissen är att filen som överförs saknar vissa delar. På  högra sida av figur 2.16 illustreras hur UDP ignorerar att data inte kommer fram. “Data 3” blir  förlorad, men UDP fortsätter med att skicka “Data 4”. 

(21)

 

Figur 2.16. Figuren visar ett  väldigt förenklad exempel på hur TCP skickar samma data igen om den inte får en  bekräftelse och hur UDP inte bryr sig om att data förlorades. 

 

 

   

(22)

 

   

(23)

3 Metod 

När ett större system skapas så är det fördelaktigt att dela upp det i flera mindre delsystem. 

Det underlättar arbetet och gör det även lättare att presentera systemet i sin helhet. Figur 3.1  illustrerar hur det här projektet är uppdelad i mindre system. 

 

Figur 3.1. Figuren visar hur delsystemen är kopplade med varandra. Ponera att webbplatsen behöver information  som är lagrad i databasen. Webbplatsen måste då göra det via Servern.  

 

Servern är hjärnan av bokningssystemet och de andra kretsar runt servern. Detta är för att  bokningssystemet skulle vara så öppet som möjligt. Ponera att kunden vill använda  bokningssystemet till något annat än för elbilsladdstationer. Då sitter inte systemet fast i  någon hemsida utan det är öppet att implementeras på ett annat håll utan att behöva skrivas  om från grunden. 

 

3.1 Webbplats 

För programmering av webbplatsen finns endast ett alternativ. Det är HyperText Markup  Language (HTML) [28] som är standarden för alla webbsidor och därför kommer HTML  användas när webbplatsen skapas. 

 

Webbplatsen är strukturerad med en kombination av HTML och CSS kod. 

Webbplatsen har utvecklats i utvecklingsmiljön Aptana [45]. Det finns flera andra 

utvecklingsmiljöer men av erfarenhet fungerar Aptana bäst för projektets ändamål på grund  av dess inbyggda webbserver som bland annat tillåter att PHP filer kan exekveras direkt. 

 

Webbplatsen är anpassad för att fungera på Google Chrome [46]. Anledningen är att Internet  Explorer [47] inte alltid har haft stöd för alla nödvändiga funktioner till projektet. 

Då webbplatsen endast är för att bevisa att bokningssystemet fungerar så är det acceptabelt att  den inte en kompatibel med andra webbläsare än Google Chrome pga deras brister. 

 

   

(24)

3.1.1 Valet av webbplats framför mobilapplikation 

Det ansågs vara lämpligast att utveckla en hemsida då kunskap redan fanns om 

hemsideskapande. Hemsidor går även att nås via både smartphones och datorer, medan  mobilapplikationer ofta är begränsade till smartphones.  

Hade en mobilapplikation skapats så hade fokus och tid behövts för att lära sig de olika  operativsystemen som finns för smartphones och vad för språk respektive utvecklingsmiljö de  använder sig utav. De olika försäljningstjänsterna har även olika avtal om vad som gäller för  att sälja sin mobilapplikation. 

3.1.2 Leafletjs 

Leafletjs var det lämpligaste valet framför google maps och OpenLayers. 

Eftersom LeafletsJS är ett mycket mindre bibliotek än OpenLayers så är det lämpligare. 

Anledningen till att det är lämpligare att det är mindre är att webbplatsens karta endast ska  visa var laddstationernas koordinater och status är och till detta skulle OpenLayers ta onödigt  mycket plats. Det är främst i hänsyn till de kunder som använder smartphones.  

 

LeafletJS är även lämpligare än Google docs då kunskap och erfarenhet om geografiska  informationssystem system saknas. LeafletJS är enklare att förstå och det går snabbare att  sätta sig in i.  

Det som gör LeafletJS mest intressant är att det är både gratis och open­source vilket ger  kartan potential till större flexibilitet.  

3.2 Databas 

Databashanteraren MySQL [48] valdes för projektet. MySQL tillåter hantering av  relationsdatabaser och är färdigutvecklade verktyg för databashantering. 

 

Valet att lagra all data i en färdig relationsdatabas istället för ett eget databassystem gjorde  pga att MySQL har utvecklats med fokus på att lätt och snabbt kunna hantera en databas. Att  lagra samma data i egna filer skulle kräva tid och fokus på att skapa en struktur för lagring  och sedan ett sätt att manipulera data. Allt detta finns redan tillgängligt i MySQL. 

3.3 Server 

Servern som hanterar all kommunikation inom systemet har utvecklats med 

utvecklingsverktyget Visual Studio Express 2013 [49]. Det fanns andra val men Express var  redan tillgänglig. Servern är programmerad i C++ [50] för att även här fanns resurser  tillgängliga från tidigare projekt och erfarenhet inom språket från tidigare. C# [51] eller Java  [52] kunde ha använts likvärdigt men i det här fallet var C++ det snabbare valet på grund av  redan tillgängliga resurser och bättre kunskaper inom språket. Programeringsmetoden som  användes är till en stor del procedurell programmering [24] och liten del objektorienterad  programmering [22]. Objektorienterad programmering användes endast till att strukturera  koden i statiska klasser. Procedurell programmering är mest lämpad för servern då den endast  arbetar med primitiva datatyper. 

3.3.1 Trådning 

För att servern ska kunna hantera flera anslutningar samtidigt så valdes trådning framför  select­funktionen. Båda metoder kunde ha använts likvärdigt men trådning var det smartare  valet eftersom man får ut mer av att lära sig trådning då det kan användas till annat än bara  datakommunikation. 

(25)

3.4 Kommunikation 

3.4.1 Kommunikation mellan server och databas 

Databasen måste först acceptera serverns anslutning innan den upprättas. Servern skickar med  ett inloggningsnamn och lösenord när den ansluter till databasen. Databasen kollar då om  servern angav rätt info och antingen accepterar eller nekar anslutningen. Det är så här MySQL  fungerar. 

3.4.2 Kommunikation mellan server och laddstation 

Då fysiska laddstationer som är kompatibla med bokningssystemet inte finns så gjordes  antagandet att de kommunicerar med servern via internet med TCP. Andra metoder för  laddstationen vore att använda telefonnätverket eller en radiofrekvens för att kontakta ett  annat system. Detta “annat system” skulle kunna kontakta servern via internet och 

vidarebefordra laddstationens meddelande. Det är delvis på detta sättet som systemet är öppet,  genom att andra system kan kopplas till servern. 

3.4.3 Kommunikation mellan server och webbplats 

Webbplatsen kommunicerar med servern på samma sätt som exempelvis laddstationerna gör. 

Servern har således ingen kännedom om att webbplatsen är en webbplats utan behandlar den  som en vanlig klient. Det är webbplatsen som använder datan från servern för att visuellt  presentera datan för användaren. 

3.4.4 TCP 

TCP används när servern kommunicerar med laddstation och hemsidan. Detta är på grund av  TCPs egenskap att den kan garantera att det som skickas kommer fram utan någon förlust av  data. Att kunna garantera att en laddstation är bokad eller ledig på hemsidan är en prioritet för  att kunna ge hög kundservice. Samma sak gäller när en kund vill boka en laddstation, då  måste systemet garanterat ha gjort en bokning och på rätt laddstation. 

3.5 Simulering av laddstation 

Enkortsdatorn som valdes är en UDOO [19, 20] för att den uppför sig som en vanlig dator och  har en inbyggd programmerbar processor som kan användas för att manipulera de in­ och  utgångar som är anslutna till den. Observera att simuleringen är en utgångspunkt för hur en  laddstation förväntas att fungera. 

 

Högskolan i Halmstad hade redan tillgång till UDOO [19,20] och därför valdes den. 

 

Flera lampor och en switch har kopplats till UDOOn och dessa kan användas för att signalera  användaren vad som händer. 

 

UDOOs vanliga datordel användes till att skapa en klient som kan ansluta till servern. 

Klienten hämtar statusen för laddstationen från servern och skickar vidare det till den  inbyggda processorn. Den inbyggda processorn programmerades så att den tänder lampor i  olika kombinationer, beroende på vad statusen är. När switchen switchas så skickar den  inbyggda processorn en signal till klienten. 

 

   

(26)

 

   

(27)

4 Testning 

Beskriver hur testning är relevant, hur det utfördes, varför det utfördes som det utfördes och  vad det betyder för projektet. Slutligen beskriv hur krav på bokningssystemet uppfylldes. 

4.1 Bokningssystemet 

● Bokningssystemet ska ha uppfyllt en kravspecifikation för att projektet ska anses vara  klar. Dessa kraven är nedskrivna i en tabell i Appendix A. 

4.2 Testerna på alla delsystem 

Testning på delsystem gjordes så att in parametrar antogs vara rätt. Som ett exempel så  testades en funktion i servern genom att funktionen anropades med parametrar som den  förväntar. Då bokningssystemet endast arbetar med data som är hämtad från databasen så är  det osannolikt att de olika delsystemen får felaktig data. Användare av systemet, dvs personer  som använder webbplatsen, ser endast sådan information som kommer från databasen.  

 

4.2.1 Tester på servern 

Det fanns två olika typer av tester som utfördes på servern. Den första typen var små löpande  tester för funktioner och dylikt i programkoden. Dessa små tester gjordes genom att 

funktioner anropades med olika parametrar och sedan felsöktes funktionen om det behövdes. 

De olika parametrarna var bland annat funktionens förväntade parametrar och även  parametrar som inte är rätta. 

 

4.2.2 Tester på databasen 

Det var inte möjligt att testa databasen då MySQL är i princip ett program som installeras på  datorn.  

 

Tester som är relaterade till databasen, som exempelvis tester för servern, kontrollerades  genom MySQLs egna grafiska användargränssnitt som man kunde enkelt kontrollera om data  har lagts till eller tagits bort från databasen. 

4.2.3 Tester på simulationen av laddstation 

Eftersom simulationen, använder lampor för att indikera dess status så kunde samma visuella  indikatorer användas till att testa och felsöka kod.  

4.2.4 Tester på webbplatsen 

Tester på webbplatsen skedde på samma vis som för simulationen av laddstation, men med  pop­up fönster istället för lampor. 

4.2.5 Dokumentation av tester  

Dokumentering har endast skett då testningen gjordes för krav på projektet.  

Ett integrationstest gjordes efter tester på delsystemens krav. Integrationstestet innebär att  generella krav testas. De generella kraven som finns beskrivna i Appendix A är krav som kan  endast testas då alla delsystemen är klara eftersom generella krav innefattar kraven för  delsystemen. Testerna som gjordes för generella krav kan läsas i Appendix B. 

 

(28)

 

   

(29)

5 Resultat 

I resultatkapitlet samlas de resultat, som uppnåtts med de metoder som beskrivits tidigare. 

Även frågeställningarna i Inledning. 

5.1 Webbplats 

Webbplatsen är registrerad på domänen ecgocharge.tk och på denna kan en användare  registrera sitt konto, boka en laddstation på kartan och se över sina bokningar. 

 

Figur 5.1 visar hur hemsidan ser ut med karttjänsten och figur 5.2 visar hur sidan ser ut där  man kan se över sina bokningar. 

 

 

Figur 5.1. Webbplatsens hemsida tar dig direkt till kartan som visar var laddstationer finns. I det här exemplet så  finns det en laddstation där den gröna cirkeln markerar. Klickar användaren på cirkeln så får användaren välja  tid och datum för en bokning. 

 

(30)

 

Figur 5.2. Webbplatsens “Min sida” tar användaren till en sida där användaren kan se över dina bokningar i en  tabell och där den också ger användaren möjlighet att avboka en laddstation eller aktivera en laddstation när  användaren är vid stationen vid sin bokade tid för att autentisera sig. 

 

Webbplatsen kommunicerar med servern med hjälp av TCP. Figur 5.3 visar med en enkel bild  hur kommunikationen sker med alla delarna. 

 

  Figur 5.3. Figuren visar enkelt hur processen sker för hela kommunikationskedjan när man interagerar med 

kartan. 

   

   

(31)

5.1.1 Registrering och inloggning 

För att en användare ska kunna använda funktioner som att hitta stationer på kartan, boka eller  avboka en laddstation så måste personen registrera sig på webbplatsen. Registreringen går till  på så sätt att användaren skriver in tre uppgifter, visningsnamn, namn som personen vill logga  in med och lösenord. När denne är registrerad så tas den automatiskt till den inloggade  varianten av sidan där loginfunktionerna är borttagna och ersatta med en logga ut­knapp. 

 

5.1.2 Använding av kartan 

För att kunden ska kunna boka en laddstation så finns det en interaktiv karta på en av  webbsidorna på webbplatsen. Efter att användaren har zoomat in på rätt nivå så ska  webbsidan visa laddstationer inom en viss radie. Dessa laddstationer är markerade med  färgerna grön, gul eller röd för att visa användaren om stationen är ledig, bokad inom  närmaste timmen respektive bokad eller upptagen. 

När användaren har bestämt sig för vilken station denne vill ha och klickar på dess markör så  kommer ytterligare information om stationen upp så som koordinater. Detta är en mall som  ska utökas med gatunamn, ägare och energikälla. Användaren får även välja tidsramen för  bokningen.  

 

Hemsidan är ett instrument för att visa att bokningssystemet fungerar. Fler verktyg och  funktioner kommer att implementeras och säkerheten av behandlingen av konton kommer att  förstärkas. 

 

   

(32)

5.2 Simulering av laddstation 

Simulering av laddstation sker med en UDOO, fyra leds och en switch.  

 

Figur 5.4. Figuren visar enkelt hur processen sker för kommunikationskedjan från servern, till ARM processorn  som tänder/släcker lampor. 

 

UDOOs datordel skapar en klient som ansluter till servern. Klienten hämtar närmsta  bokningstid från servern och använder sedan tiderna för att räkna ut vilket tillstånd den  befinner sig i. Den kan befinna sig i 5 olika tillstånd som är: 

● Ledig, första bilden i figur 5.5 

○ Laddstationen kan användas fritt för att ladda bilen. 

● Bokad inom en timme, andra bilden i figur 5.5 

○ Samma som “Ledig” men indikerar att det finns en bokning inom en timme. 

● Bokad, tredje bilden i figur 5.5 

○ Laddstationen är bokad och kan inte användas 

● Bokad & Aktiverad, fjärde bilden i figur 5.5 

○ Laddstationen är bokad och kan användas eftersom användaren som gjorde  bokningen har aktiverat den. 

● Upptagen & Laddar, femte bild i figur 5.5 

○ Laddstationen används till att ladda en elbil. 

   

(33)

 

Figur 5.5. Från vänster: Ledig, Bokad inom en timme, Bokad, Bokad och aktiverad, Upptagen och Laddar   

Hur tillstånden ändras visualiseras i figur 5.6. 

 

Figur 5.6. Bubblorna respresenterar tillstånden och pilarna visar hur tillstånd kan ändras. 

   

 

   

(34)

5.3 Server 

Server hanterar kommandona som skickas från webbplats och laddstation och använder sedan  parametrarna som den får därefter. Beroende på vilka kommandon den får så skickar den  olika meddelanden till databasen. Databasens svar skickas sedan till klienten som gjorde  begäran. 

5.3.1 Databasanslutning 

Anslutningen till databasen sker via ett av MySQLs bibliotek som heter Connector/C++ [53] 

som är till för att kunna ansluta till och hantera en MySQL databas. Koden för 

databasanslutning är kapsulerad i sin egen statiska klass som heter Connector. Klassen har två  funktioner: Init och Query. 

Funktionen Init initialiserar anslutningen så att servern blir uppkopplad mot databasen. 

Funktionen Query skickar ett query­meddelande till databasen som sen även tar emot svaret  från databasen. 

Svaret från databasen är lagrad i en datatyp som heter ResultSet [54] som är inkompatibel  med de andra delsystemen. På grund av inkompatibeliteten måste ResultSet formateras till en  annan datatyp som de andra delsystemen känner till och det är en sträng [55]. 

 

ResultSet använder en struktur med rader och kolumner. Varje kolumn i varje rad måste läsas  från ResultSet för att formatera till en sträng. Eftersom en sträng är endast en samling av  karaktärer så saknar den en struktur som efterliknar rader och kolumner. För att lösa det så  måste specialtecken användas för att åtskilja rader och kolumner. Tecknena “ “ (mellanslag)  och “\n” (radbrytning) används för att åtskilja kolumner respektive rader. 

Figur 5.7 visualiserar hur ResultSet kan se ut och den formaterade strängen till höger. 

Algoritmen läser först in värdet av Kolumn 1 i Rad 1, sedan Kolumn 2 i Rad 1 och så vidare  tills alla kolumner har blivit lästa. När alla kolumner är lästa så görs samma procedur igen  med nästa rad. 

 

 

Figur 5.7. <R1 K1> är värdet av Kolumn 1 i Rad 1. Till höger visas den formaterade strängen.  

Strängen returneras sedan tillbaka till den funktion som anropade Query. 

 

5.3.2 Klientanslutning 

Klientanslutningen är en samlingsnamn för alla anslutningar som kommer från laddstationer  och webbplatsen. Det som ansluter till servern ses alltid som en klient och en tråd [36] skapas  för varje klient för att fler än en klient ska kunna ansluta. En klient förväntas skicka 

kommandon tillsammans med de parametrar som behövs. Det är ett krav att alla anslutningar  sker med TCP eftersom det är viktigt att begäran och svar från och till klienten är felfri. 

Varje klientanslutning består av två delar, dessa är tråden och kommandohanteraren. 

 

   

References

Related documents

Detta gör, förklarar arbetsledaren, att planeringsprocessen är mycket viktig vid projektet och platschefen betonar att SEFAB tagit hjälp av olika kompetenser för att ta fram den

När vi studerat upplysningarna hos de svenska bankerna ser vi att Nordea är den bank som använder samma struktur under både 2007 och 2012, vilket underlättar möjligheten för en

För tillfället har Range Servant endast en variant av golfbollstvättar som har mycket god funktion men är alldeles för otymplig och dyr att tillverka, och det är där gruppen

Frågeställningarna användes som stöd för att analysera de vetenskapliga artiklarna samt för att få fram sjuksköterskors attityder gentemot patienter med HIV/AIDS..

[r]

Uppdragsgivare och organisation .... Mål och

Aktiva, devizový kurz, FIFO, LIFO, majetek, náklady, náklady s pořízením související, oceňování, pasiva, pevná skladová cena, pořizovací cena, rozvaha,

Aktiva, devizový kurz, FIFO, LIFO, majetek, náklady, náklady s po ízením související, oce ování, pasiva, pevná skladová cena, po izovací cena, rozvaha, ú etní