ii
ˇ e vysok´e uˇcen´ı technick´e v Praze Cesk´ Fakulta elektrotechnick´a Katedra poˇc´ıtaˇc˚ u
Bakal´aˇrsk´a pr´ace
Zpracov´ an´ı dat o provozu automobil˚ u pro projekt Metrocar Roman Kub˚ u
Vedouc´ı pr´ace: Ing. Martin Kom´arek
Studijn´ı program: Softwarov´e technologie a management, Bakal´aˇrsk´ y Obor: Softwarov´e inˇzen´ yrstv´ı 21. kvˇetna 2013
iv
v
Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem pr´ aci vypracoval samostatnˇe a pouˇzil jsem pouze podklady uveden´e v pˇriloˇzen´em seznamu. Nem´am z´ avaˇzn´ y d˚ uvod proti uˇzit´ı tohoto ˇskoln´ıho d´ıla ve smyslu §60 Z´akona ˇc. 121/2000 Sb., o pr´ avu autorsk´em, o pr´ avech souvisej´ıc´ıch s pr´avem autorsk´ ym a o zmˇenˇe nˇekter´ ych z´akon˚ u (autorsk´ y z´ akon).
V Praze dne 20. 5. 2013
.............................................................
vi
Abstract This work is about development of car unit moduls for supporting of the car-sharing project Metrocar. Moduls provide getting data from OBD2 standard, getting GPS coordinates, sending captured records on server Metrocar, getting reservation from server Metrocar and car imobilization.
Abstrakt Pr´ace se zab´ yv´ a v´ yvojem modul˚ u palubn´ı jednotky pro podporu sd´ılen´ı automobil˚ u v projektu Metrocar. Moduly zajiˇst’uj´ı z´ısk´av´an´ı dat z OBD2 standardu osobn´ıho automobilu, z´ısk´av´ an´ı GPS souˇradnic automobilu, odes´ıl´an´ı z´ıskan´ ych dat na server Metrocar, z´ısk´av´ an´ı rezervac´ı ze serveru Metrocar, imobilizaci automobilu.
vii
viii
Obsah ´ 1 Uvod 1.1 Historie projektu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 2
2 Popis probl´ emu, specifikace c´ıle 2.1 Modul pro z´ısk´ an´ı dat od jednotky podporuj´ıc´ı ODB2 protokol 2.2 Modul pro z´ısk´ an´ı polohy automobilu . . . . . . . . . . . . . . 2.3 Modul pro odesl´ an´ı z´ıskan´ ych dat . . . . . . . . . . . . . . . . . 2.4 Modul pro z´ısk´ an´ı rezervac´ı . . . . . . . . . . . . . . . . . . . . 2.5 Imobilizace automobilu . . . . . . . . . . . . . . . . . . . . . . . 2.6 Knihovna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.7 Existuj´ıc´ı ˇreˇsen´ı a podobn´e projekty . . . . . . . . . . . . . . .
. . . . . . .
3 3 3 3 4 4 4 4
. . . . . . . . . . . . . .
7 7 7 8 8 8 8 9 9 10 10 12 12 13 14
. . . . . .
15 16 17 17 17 20 21
3 Anal´ yza ˇ reˇ sen´ı 3.1 Funkˇcn´ı poˇzadavky . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Nefunkˇcn´ı poˇzadavky . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Anal´ yza OBD2 jednotky a jej´ı komunikace s palubn´ı jednotkou 3.3.1 Protokoly jednotek motoru . . . . . . . . . . . . . . . . 3.3.2 Co je to OBD2 jednotka . . . . . . . . . . . . . . . . . . 3.3.3 Pˇr´ıkazy OBD2 standardu . . . . . . . . . . . . . . . . . ˇ ıd´ıc´ı pˇr´ıkazy . . . . . . . . . . . . . . . . . . . . . . . . 3.3.4 R´ 3.3.5 Informaˇcn´ı pˇr´ıkazy . . . . . . . . . . . . . . . . . . . . . 3.3.6 Chybov´e odpovˇedi . . . . . . . . . . . . . . . . . . . . . 3.3.7 Uk´ azka komunikace s OBD2 jednotkou . . . . . . . . . . 3.4 Anal´ yza komunikace se serverem Metrocar . . . . . . . . . . . . 3.4.1 Z´ısk´ an´ı rezervac´ı . . . . . . . . . . . . . . . . . . . . . . 3.4.2 Odes´ıl´ an´ı z´ıskan´ ych informac´ı . . . . . . . . . . . . . . . 3.5 Anal´ yza imobilizace automobilu . . . . . . . . . . . . . . . . . . 4 N´ avrh a implementace 4.1 Palubn´ı jednotka . . . . . . . . . . 4.1.1 V´ ybˇer v´ yvojov´eho prostˇred´ı 4.1.2 OBD2 modul . . . . . . . . 4.1.2.1 ObdMessages . . . 4.1.2.2 Sekvenˇcn´ı diagram 4.1.3 Spr´ ava Handleru . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . PidMessage . . . . . . .
ix
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . . .
. . . . . . . . . . . . . .
. . . . . .
. . . . . . .
. . . . . . . . . . . . . .
. . . . . .
. . . . . . .
. . . . . . . . . . . . . .
. . . . . .
. . . . . . .
. . . . . . . . . . . . . .
. . . . . .
. . . . . . .
. . . . . . . . . . . . . .
. . . . . .
. . . . . . .
. . . . . . . . . . . . . .
. . . . . .
. . . . . . .
. . . . . . . . . . . . . .
. . . . . .
x
OBSAH
4.2
4.1.4 Z´ısk´ av´ an´ı polohy automobilu . 4.1.5 Rezervace . . . . . . . . . . . . 4.1.6 Odes´ıl´ an´ı z´ıskan´ ych u ´daj˚ u . . . 4.1.7 Imobilizace automobilu . . . . 4.1.8 Autorizace uˇzivatele . . . . . . 4.1.9 Datab´ aze . . . . . . . . . . . . 4.1.10 Automatick´e spuˇstˇen´ı po startu 4.1.11 Potˇrebn´ a opr´ avnˇen´ı . . . . . . 4.1.12 Hlavn´ı modul . . . . . . . . . . Imobilizaˇcn´ı jednotka . . . . . . . . . . 4.2.1 V´ ybˇer v´ yvojov´eho prostˇred´ı . . 4.2.2 Bluetooth modul . . . . . . . . 4.2.3 Arduino . . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . . . . . . .
5 Testov´ an´ı 5.1 Zaˇr´ızen´ı pouˇzit´ a pˇri testov´ an´ı . . . . . . . . . . . . . . . . 5.2 Testov´ an´ı oproti OBDSim . . . . . . . . . . . . . . . . . . 5.3 Testov´ an´ı oproti re´ aln´emu automobilu . . . . . . . . . . . 5.3.1 Nemoˇznost opˇetovn´eho pˇripojen´ı k jednotce . . . . 5.3.2 Rychlost dotazu . . . . . . . . . . . . . . . . . . . 5.3.3 V´ıcen´ asobn´e vkl´ ad´ an´ı z´ aznam˚ u na server Metrocar 5.3.4 Zobrazen´ı cesty automobilu na serveru Metrocar . 5.4 Jednotkov´e testov´ an´ı . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . .
. . . . . . . .
. . . . . . . . . . . . .
21 21 21 23 23 23 24 24 25 26 27 27 27
. . . . . . . .
29 29 30 30 30 31 31 32 34
6 Z´ avˇ er
35
7 Seznam pouˇ zit´ ych zkratek
41
8 Instalaˇ cn´ı pˇ r´ıruˇ cka 43 8.1 Hardwarov´e poˇzadavky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 8.2 Instalaˇcn´ı pˇr´ıruˇcka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 9 Uˇ zivatelsk´ a pˇ r´ıruˇ cka 9.1 Z´akladn´ı nastaven´ı aplikace . 9.2 Nastaven´ı Imobilizace . . . . 9.3 Zobrazen´ı u ´daj˚ u . . . . . . . 9.4 Nahr´an´ı nastaven´ı ze souboru 9.5 Spuˇstˇen´ı aplikace . . . . . . . 10 Obsah pˇ riloˇ zen´ eho CD
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
45 45 45 46 47 49 51
Seznam obr´ azk˚ u 2.1 2.2
Infrastruktura ˇreˇsen´ı od firmy Convadis . . . . . . . . . . . . . . . . . . . . . Palubn´ı jednotka firmy Convadis . . . . . . . . . . . . . . . . . . . . . . . . .
5 5
3.1
Uk´ azka komunikace s OBD2 jednotkou . . . . . . . . . . . . . . . . . . . . . .
11
4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8
Hardwarov´ a konfigurace . . . . . . . Package Diagram . . . . . . . . . . . Sekvenˇcn´ı diagram pro OBD2 modul Struktura zpr´ av pro OBD2 . . . . . Sekvenˇcn´ı diagram PidMessage . . . Sekvenˇcn´ı diagram Rezervace . . . . Datab´ aze . . . . . . . . . . . . . . . Imobilizaˇcn´ı jednotka . . . . . . . . .
. . . . . . . .
15 16 18 19 20 22 23 26
5.1 5.2 5.3
Zkuˇsebn´ı j´ızda 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Zkuˇsebn´ı j´ızda 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Jednotkov´ y test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33 33 34
9.1 9.2 9.3 9.4 9.5 9.6
Hlavn´ı Obrazovka . . . . . . . . . Nastaven´ı imobilizaˇcn´ıho zaˇr´ızen´ı Nastaven´ı ze souboru txt . . . . . Kontrola Nastaven´ı . . . . . . . . ˇ an´ı na autorizaci uˇzivatele . . Cek´ Autorizovan´ y uˇzivatel . . . . . .
45 46 47 49 50 50
. . . . . .
. . . . . .
xi
. . . . . . . .
. . . . . .
. . . . . . . .
. . . . . .
. . . . . . . .
. . . . . .
. . . . . . . .
. . . . . .
. . . . . . . .
. . . . . .
. . . . . . . .
. . . . . .
. . . . . . . .
. . . . . .
. . . . . . . .
. . . . . .
. . . . . . . .
. . . . . .
. . . . . . . .
. . . . . .
. . . . . . . .
. . . . . .
. . . . . . . .
. . . . . .
. . . . . . . .
. . . . . .
. . . . . . . .
. . . . . .
. . . . . . . .
. . . . . .
. . . . . . . .
. . . . . .
. . . . . . . .
. . . . . .
. . . . . . . .
. . . . . .
. . . . . . . .
. . . . . .
. . . . . . . .
. . . . . .
. . . . . . . .
. . . . . .
. . . . . . . .
. . . . . .
. . . . . .
xii
´ U ˚ SEZNAM OBRAZK
Seznam tabulek 5.1
Rychlost dotaz˚ u. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
xiii
31
xiv
SEZNAM TABULEK
Kapitola 1
´ Uvod Naˇse mˇesta jsou pˇreplnˇena automobily, kter´e vˇetˇsinu doby parkuj´ı kde je to moˇzn´e, ’ at uˇz se jedn´ a o vyhrazen´e parkovac´ı m´ısto, tak i na chodn´ıc´ıch. Vˇetˇsina z tˇechto automobil˚ u je pouˇz´ıvan´ a pouze hodinu ze dne a zbytek dne neˇcinnˇe stoj´ı. Z tˇechto z´akladn´ıch myˇslenek vznikl Car-sharing[1], neboli myˇslenka, ˇze kdyˇz auto nepotˇrebuji, tak by si ho mohl p˚ ujˇcit nˇekdo jin´ y. Car-sharingov´ a firma je vlastnˇe nˇeco jako autop˚ ujˇcovna s jedn´ım z´asadn´ım rozd´ılem a t´ım je cena. Zat´ımco u autop˚ ujˇcovny mus´ıte zaplatit vysokou ˇc´astku za to, ˇze si v˚ ubec auto p˚ ujˇcujete, u Car-sharingu plat´ıte pouze re´alnou cenu za ujet´ y kilometr. Re´alnou cenou za kilometr se mysl´ı nejen cena za projet´ y benz´ın, ale tak´e cena za uˇzit´ı automobilu, takˇze napˇr´ıklad pojiˇstˇen´ı, u ´drˇzba atd. Car-sharing m´a ˇradu v´ yhod jak pro uˇzivatele, kter´ y nemus´ı vlastnit automobil, tak i pro naˇse mˇesta, kter´a by nemusela b´ yt tak pˇreplnˇena automobily, tak i pro ˇzivotn´ı prostˇred´ı. Aˇckoli na svˇetˇe existuje jiˇz cel´a ˇrada Car-sharingov´ ych spoleˇcnost´ı, napˇr´ıklad Zipcar[49] ˇ a Car2go[9], v Cesk´e republice funguje pouze jedna vˇetˇs´ı spoleˇcnost a tou je Autonap˚ ul[6]. V dneˇsn´ı poˇc´ıtaˇcov´e dobˇe vˇsak jeˇstˇe vˇetˇsinu pr´ace jako v´ ypoˇcty ujet´ ych kilometr˚ u a dalˇs´ı u ´kony dˇelaj´ı pomoc´ı tuˇzky a pap´ıru. Z tohoto d˚ uvodu vznikl projekt Metrocar, kter´ y m´ a za c´ıl vytvoˇrit ucelen´ y softwarov´ y a hardwarov´ y celek pouˇziteln´ y pro sd´ılen´ı, p˚ ujˇcov´an´ı a rezervaci aut mezi v´ıce uˇzivateli neboli vytvoˇren´ı komplexn´ıho ˇreˇsen´ı pro car-sharingovou firmu.
1
´ KAPITOLA 1. UVOD
2
1.1
Historie projektu
ˇ P´ar slov k historii projektu. Projekt Metrocar vznikl na CVUT v zimn´ım semestru 2008/2009[? ]. Na zaˇc´ atku byl projekt Metrocar rozdˇelen na dvˇe z´akladn´ı d´ılˇc´ı ˇc´asti ke zpracov´an´ı palubn´ı jednotky a serverov´e ˇc´asti. V u ´vodu bylo rozhodnuto, ˇze serverov´a ˇc´ast bude programov´ ana v PHP[43] s CMS Drupal[13] a palubn´ı jednotka bude zaloˇzena na platformˇe Java[27], kter´ a bude nasazena na modulu Siemens XT75[48], osazen´em na ˇcipov´e sadˇe M2M Motherboard[30]. Ovˇsem dalˇs´ı skupina, pracuj´ıc´ı na tomto projektu v zimn´ım semestru 2009/2010, se rozhodla zmˇenit v´ yvojovou platformu pro serverovou ˇc´ast na Python[44] s Django[12] viz z´ avˇereˇcn´ a zpr´ ava[32]. Dalˇs´ı skupina pracovala na projektu v letn´ım semestru 2009/2010 a v zimn´ım semestru 2010/2011, tato skupina se zamˇeˇrila na refaktoring k´odu a odst´ınˇen´ı z´ avislosti implementace na hardwarovˇe specifick´ ych ˇc´astech u palubn´ı jednotky, viz z´avˇereˇcn´ a zpr´ ava[31]. V letn´ım semestru 2010/2011 se t´ ym rozdˇelil na dvˇe ˇc´asti na palubn´ı jednotku a na serverovou ˇca´st. T´ ym pracuj´ıc´ı na palubn´ı jednotce se zamˇeˇril na pr´aci s RFID (Radio Frequency Identification) ˇcteˇckou, kter´a v pˇredchoz´ıch projektech nebyla zpracov´ ana viz z´ avˇereˇcn´ a zpr´ ava[33]. V zimn´ım semestru 2011/2012[34] bylo z d˚ uvodu vysok´e ceny rozhodnuto, ˇze palubn´ı jednotka zmˇen´ı hardwarovou specifikaci na mobiln´ı zaˇr´ızen´ı na platformˇe Android[2]. Byla provedena anal´ yza poˇzadavk˚ u a jejich u ´prava. Jako z´asadn´ı byl pˇrid´an poˇzadavek na z´ısk´av´an´ı z´akladn´ıch informac´ı od jednotky motoru pomoc´ı jednotky komunikuj´ıc´ı pomoc´ı protokolu OBD2[37], d´ale zmiˇ nov´ ano jako OBD2 jednotka, ale tak´e byl upraven poˇzadavek na otev´ır´an´ı automobilu, kde jiˇz nad´ ale nebyla poˇzadovan´a RFID karta, ovˇsem k implementaci k´odu nedoˇslo. Skupina v zimn´ım semestru 2012/2013[35], kter´e jsem se z´ uˇcastnil jako vedouc´ı projektu, pokraˇcovala v pr´ aci na serverov´e ˇc´asti projektu a ˇc´asteˇcnˇe i na komunikaci Androidn´ıho zaˇr´ızen´ı s OBD2 jednotkou pro palubn´ı jednotku. V tomto st´ adiu projektu jiˇz byla serverov´a ˇc´ast nasazena na serveru Autonapul.cz[5] a byla pˇripraven´ a na pˇrij´ım´ an´ı informac´ı od palubn´ı jednotky a poskytov´an´ı informace o vytvoˇren´ ych rezervac´ıch. Tak´e bylo vytvoˇreno z´akladn´ı zobrazen´ı pohybu automobil˚ u a n´asledn´e zpracov´ an´ı z´ıskan´ ych informac´ı. Ovˇsem palubn´ı jednotka nebyla zpracov´ana v˚ ubec.
Kapitola 2
Popis probl´ emu, specifikace c´ıle Jak jsem jiˇz dˇr´ıve zm´ınil, serverov´a ˇc´ast projektu byla jiˇz zˇc´asti zpracov´ana, avˇsak ˇc´ ast palubn´ı jednotky nebyla zpracov´ana v˚ ubec. Proto jsem se rozhodl pro zpracov´an´ı palubn´ı jednotky, kter´ a by se skl´ adala z nˇekolika modul˚ u. Modul pro z´ısk´av´an´ı dat z OBD2 standardu osobn´ıch automobil˚ u, modul pro z´ısk´av´an´ı polohy automobilu, modul pro odes´ıl´an´ı z´ıskan´ ych dat na server Metrocar[5], ale tak´e vytvoˇren´ı modulu pro z´ısk´av´an´ı vytvoˇren´ ych rezervac´ı na serveru a moˇzn´ y n´ avrh ˇreˇsen´ı pro imobilizaci automobilu. Tyto moduly spojit do knihovny, kter´a by splˇ novala vˇsechny vytyˇcen´e poˇzadavky.
2.1
Modul pro z´ısk´ an´ı dat od jednotky podporuj´ıc´ı ODB2 protokol
Knihovna by mˇela obsahovat modul, umoˇzn ˇuj´ıc´ı pˇripojen´ı k jednotce podporuj´ıc´ı protokol OBD2[37] k z´ısk´ an´ı dat poˇzadovan´ ych serverem Metrocar. Existuje pˇres 100 moˇzn´ ych u ´daj˚ u, kter´e lze z´ıskat od automobilu pomoc´ı jednotky podporuj´ıc´ı OBD2 protokol, napˇr´ıklad rychlost automobilu, teplota motoru, ot´aˇcky motoru atd. Z tohoto d˚ uvodu by mˇel modul umoˇzn ˇovat jednoduch´e rozˇs´ıˇren´ı o dalˇs´ı z´ısk´avan´e u ´daje. Toto z´ısk´av´an´ı u ´daj˚ u by mˇelo probˇehnou v co nejkratˇs´ım moˇzn´em ˇcase.
2.2
Modul pro z´ısk´ an´ı polohy automobilu
Modul pro z´ısk´ an´ı polohy automobilu by tyto u ´daje mˇel z´ısk´avat z co nejvˇetˇs´ıho poˇctu zdroj˚ u a n´ aslednˇe vybrat u ´daj, kter´ y ud´av´a polohu automobilu s nejvˇetˇs´ı pˇresnost´ı.
2.3
Modul pro odesl´ an´ı z´ıskan´ ych dat
Modul pro odes´ıl´ an´ı z´ıskan´ ych dat na server Metrocar.
3
´ KAPITOLA 2. POPIS PROBLEMU, SPECIFIKACE C´ILE
4
2.4
Modul pro z´ısk´ an´ı rezervac´ı
Modul pro z´ısk´ av´ an´ı rezervac´ı by si v nastaven´em ˇcasov´em intervalu mˇel z´ısk´avat informace o rezervac´ıch a n´ aslednˇe je ukl´ adat. S t´ımto je tak´e spojen´a kontrola uˇzivatele, kter´ y by po zad´an´ı jm´ena a hesla mˇel b´ yt jednotkou autorizov´an na z´akladˇe u ´daj˚ u z uloˇzen´e rezervace. Pˇri autorizaci se m´ a br´ at v u ´vahu i ˇcas zaˇc´atku a konce rezervace a pˇr´ıpadnˇe nastaven´e pˇredsazen´ı zaˇc´ atku a konce rezervace pro autorizaci.
2.5
Imobilizace automobilu
Anal´ yza moˇznosti imobilizace a opˇetovn´eho zprovoznˇen´ı automobilu pomoc´ı mobiln´ıho zaˇr´ızen´ı na platformˇe Android.
2.6
Knihovna
Vˇsechny v´ yˇse zm´ınˇen´e moduly by mˇely b´ yt implementov´any do jedn´e knihovny, kter´a by umoˇzn ˇovala co nejjednoduˇsˇs´ı vyuˇzit´ı v´ yˇse zm´ınˇen´ ych modul˚ u.
2.7
Existuj´ıc´ı ˇ reˇ sen´ı a podobn´ e projekty
V dneˇsn´ı dobˇe jiˇz funguje nˇekolik spoleˇcnost´ı, kter´e nab´ızej´ı komplexn´ı ˇreˇsen´ı jak hardware, tak i software pro car-sharingovou firmu. Jelikoˇz nen´ı v naˇsich technick´ ych ani technologick´ ych sil´ ach vytvoˇrit palubn´ı jednotku na stejn´e u ´rovni jako jin´e spoleˇcnosti, rozhodli jsme se pokusit z´ıskat interface mezi serverem palubn´ıch jednotek a rezervaˇcn´ım serverem. Tato infrastruktura, jakou m´ a firma Convadis[10], je vidˇet na obr´azku 2.1, podobnou infrastrukturu m´ a vˇetˇsina ˇreˇsen´ı pro car-sharingovou firmu, od kter´ ych jsem tuto informaci obdrˇzel. Snahou bylo z´ıskat interface od co nejvˇetˇs´ıho portfolia firem, poskytuj´ıc´ıch palubn´ı jednotky, aby si pˇr´ıpadn´ y z´ ajemce o server Metrocar mohl vybrat palubn´ı jednotku, kter´a nejv´ıce vyhovuje jeho potˇreb´ am. V r´amci pokusu o z´ısk´ an´ı interface pro propojen´ı Metrocar rezervaˇcn´ıho serveru se serverem palubn´ıch jednotek od r˚ uzn´ ych spoleˇcnost´ı jsem oslovil tyto spoleˇcnsosti: F&B Company [19], C2G Logic [7], Eileo [15], Invers [23], Opencar Network [41], Convadis [10], Patriot [42]. Z tˇechto spoleˇcnost´ı jsem vyˇradil spoleˇcnost Patriot, jelikoˇz jejich produkt nesplˇ noval z´akladn´ı poˇzadavky na palubn´ı jednotku pro car-sharingovou firmu. Ze zbyl´ ych spoleˇcnost´ı jsem obdrˇzel odpovˇed’ od spoleˇcnost´ı Convadis, C2G-Logic, Invers. Ze spoleˇcnosti Convadis jsem komunikoval s panem Reinerem Langendorfem, kter´ y dodal veˇsker´e materi´ aly ohlednˇe jejich produktu. Cena jedn´e jejich palubn´ı jednotky se pohybovala okolo 900 Euro za kus. Rozvrˇzen´ı infrastruktury ˇreˇsen´ı od spoleˇcnosti Convadis je vidˇet na obr´azku 2.1. Samotn´ a palubn´ı jednotka firmy Convadis je na obr´azku 2.2. Tato palubn´ı jednotka podporuje ˇcteˇcky na karty pro otevˇren´ı automobilu, kartu na palivo pro placen´ı paliva, GPS k lokalizaci pˇresn´e polohy automobilu. Jednotka nepodporuje ˇcesk´ y jazyk, ale v pˇr´ıpadˇe z´ajmu o koupi tˇechto jednotek by se vytvoˇren´ı ˇcesk´eho jazyka pro tuto jednotku dalo dojednat. Tato jednotka tak´e m˚ uˇze slouˇzit k vytvoˇren´ı rezervace, prodlouˇzen´ı ˇci jej´ı
ˇ SEN ˇ ´I A PODOBNE ´ PROJEKTY 2.7. EXISTUJ´IC´I RE
5
Obr´ azek 2.1: Infrastruktura ˇreˇsen´ı od firmy Convadis
Obr´ azek 2.2: Palubn´ı jednotka firmy Convadis
zruˇsen´ı pˇr´ımo v autˇe. Tak´e podporuje Hands Free technologii pro jednoduchou a rychlou komunikaci s call centerem spoleˇcnosti. Tato jednotka je pˇres GSM pˇripojena k CCom serveru, kter´ y ji ovl´ ad´ a a pracuje s n´ı. Vˇetˇsina ostatn´ıch spoleˇcnost´ı nab´ızela podobn´e jednotky se stejn´ ymi vlastnostmi. Z komunikace se spoleˇcnostmi jsem vyvodil, ˇze vˇetˇsina spoleˇcnost´ı d´av´a pˇrednost telefonn´ım hovor˚ um, pˇr´ıpadnˇe osobn´ımu setk´an´ı pˇred komunikac´ı pˇres email. V pˇr´ıpadˇe, ˇze neprojev´ıte z´ ajem o koupi jednotek, ˇz´adn´a firma v´am neposkytne technickou specifikaci jejich propojen´ı mezi rezervaˇcn´ım serverem a serverem palubn´ıch jednotek. V pˇr´ıpadˇe opˇetovn´eho pokusu o z´ısk´ an´ı tˇechto interface s pˇr´ıpadn´ ym kupcem tˇechto jednotek, bych doporuˇcoval kontaktovat firmy Convadis, C2G-Logic. Tyto firmy spolupracovaly a v pˇr´ıpadˇe koupˇe jednotek nab´ızely pomoc jejich specialist˚ u pˇri propojov´an´ı serveru palubn´ıch jednotek a se serverem Metrocar.
6
´ KAPITOLA 2. POPIS PROBLEMU, SPECIFIKACE C´ILE
Kapitola 3
Anal´ yza ˇ reˇ sen´ı Vzhledem k nov´ ym poˇzadavk˚ um na palubn´ı jednotku ze strany serveru Metrocar byla provedena celkov´ a anal´ yza, ze kter´e vznikly n´asleduj´ıc´ı poˇzadavky.
3.1
Funkˇ cn´ı poˇ zadavky
REQ1 Syst´em bude umoˇzn ˇovat pˇripojen´ı k jednotce s protokolem OBD2. REQ2 Syst´em bude z´ısk´ avat informace o rychlosti automobilu. REQ3 Syst´em bude z´ısk´ avat informace o pozici akceler´atoru automobilu. REQ4 Syst´em bude z´ısk´ avat informace o teplotˇe motoru automobilu. REQ5 Syst´em bude z´ısk´ avat informace o ot´aˇck´ach motoru automobilu. REQ6 Syst´em bude z´ısk´ avat v dan´em ˇcasov´em intervalu rezervace dan´e palubn´ı jednotky ze serveru Metrocar. REQ7 Syst´em bude umoˇzn ˇovat autorizaci uˇzivatele v dobˇe platn´e registrace. REQ8 Syst´em bude z´ısk´ avat informace o GPS souˇradnic´ıch. REQ9 Syst´em bude odes´ılat z´ıskan´e informace na server Metrocar.
3.2
Nefunkˇ cn´ı poˇ zadavky
REQSYS1 Syst´em bude implementov´ an na platformˇe Android.
7
´ ˇ SEN ˇ ´I KAPITOLA 3. ANALYZA RE
8
3.3
Anal´ yza OBD2 jednotky a jej´ı komunikace s palubn´ı jednotkou
V roce 2001 rozhodl evropsk´ y parlament, ˇze vˇsechna auta prodan´a v Evropsk´e unii mus´ı m´ıt EOBD[18] dle smˇernice 98/69/EC[11], coˇz je ekvivalent OBD2. Neboli toto znamen´a, ˇze kaˇzd´e auto prodan´e v Evropsk´e unii, mus´ı m´ıt jednotku motoru, kter´a zaznamen´av´a informace ohlednˇe automobilu, vˇcetnˇe chybov´ ych hl´aˇsen´ı a tak´e emis´ı automobilu. Fyzick´ ym v´ ystupem t´eto ˇr´ıd´ıc´ı jednotky motoru je vˇetˇsinou konektor RS232[45], na kter´ y n´aslednˇe m˚ uˇze b´ yt pˇripojena jednotka OBD2 podporuj´ıc´ı protokol motoru.
3.3.1
Protokoly jednotek motoru
Nejˇcastˇeji pouˇz´ıvan´e protokoly jednotek motoru jsou vyps´any n´ıˇze. • KWP2000[24] - Tento protokol m´ a stejnou fyzickou vrstvu jako protokol ISO 9141-2 a byl standardizov´ an jako ISO 14230. • ISO 9141-2[26] - Prim´ arnˇe pouˇz´ıvan´ y protokol u evropsk´ ych a asijsk´ ych automobil˚ u. • SAE J1850 PWM[46] - Standardem pro spoleˇcnost Ford Motor Company. • SAE J1850 VPW[46] - Standardem pro General Motors. • ISO 15765 CAN[8] - Povinn´ y protokol pro vozidla vyroben´a ve Spojen´ ych st´atech americk´ ych od roku 2008.
3.3.2
Co je to OBD2 jednotka
ˇ ıd´ıc´ı jednotky motoru jsou do automobil˚ R´ u dod´av´any jiˇz delˇs´ı dobu. Na zaˇc´atku toto fungovalo jednoduˇse tak, ˇze kdyˇz se objevila chyba motoru, na palubn´ı desce se rozsv´ıtila pˇr´ısluˇsn´a kontrolka. Toto se ovˇsem uk´ azalo jako velice nedostateˇcn´e. Nov´e ˇr´ıd´ıc´ı jednotky jiˇz poskytuj´ı informace o tom, co se pˇresnˇe rozbilo, ale tak´e velice d˚ uleˇzit´e informace o fungov´an´ı motoru, kter´e n´ aslednˇe mohou b´ yt pouˇzity k diagnostice automobilu. K pˇripojen´ı k ˇr´ıd´ıc´ı jednotce motoru slouˇz´ı OBD2 jednotka. Tato OBD2 jednotka komunikuje s jednotkou motoru podle protokolu jednotky motoru a n´aslednˇe d´ale pˇred´av´a tyto informace pomoc´ı protokolu OBD2. V projektu jsme se rozhodli k pouˇzit´ı jednotky ELM 327 v1.5[16] vzhledem k jej´ı n´ızk´e cenˇe okolo 300 Kˇc, ale tak´e pokr´ yv´a vˇetˇsinu protokol˚ u jednotek motoru. Jednou z v´ yhod tak´e je, ˇze komunikace mezi OBD2 jednotkou a palubn´ı jednotkou prob´ıh´ a pˇres Bluetooth, ˇc´ımˇz odpad´av´a pouˇzit´ı propojovac´ıch kabel˚ u.
3.3.3
Pˇ r´ıkazy OBD2 standardu
Veˇsker´e pˇr´ıkazy na jednotku OBD2 se daj´ı rozdˇelit na dvˇe z´akladn´ı skupiny, a to na pˇr´ıkazy na ˇr´ızen´ı jednotky a na pˇr´ıkazy z´ısk´avaj´ıc´ı informace od ECU (Engine control unit - jednotky motoru). Mezery v pˇr´ıkazech nehraj´ı ˇz´adnou roli, jelikoˇz jednotka je odstran´ı a aˇz pot´e s pˇrijatou zpr´ avou d´ ale pracuje. Kaˇzd´a odeslan´a zpr´ava mus´ı b´ yt ukonˇcena znakem ’\r’ a zpr´avy pˇrij´ıman´e jsou ukonˇceny znakem ’>’.
´ 3.3. ANALYZA OBD2 JEDNOTKY A JEJ´I KOMUNIKACE S PALUBN´I JEDNOTKOU9
3.3.4
ˇ ıd´ıc´ı pˇ R´ r´ıkazy
Kaˇzd´ y ˇr´ıd´ıc´ı pˇr´ıkaz zaˇc´ın´ a p´ısemnou kombinac´ı AT a d´ale n´asleduj´ı znaky dle specifikace uveden´e v datasheetu ELM327DS[17]. Jelikoˇz OBD2 standard m´a pˇres 100 ˇr´ıd´ıc´ıch pˇr´ıkaz˚ u, uvedu zde jen nejd˚ uleˇzitˇejˇs´ı pˇr´ıkazy pouˇzit´e v modulu: ATZ Tento pˇr´ıkaz slouˇz´ı ke kompletn´ımu restartu jednotky. Vr´at´ı veˇsker´a nastaven´ı na tov´ arn´ı nastaven´ı. Odpovˇed´ı na tento pˇr´ıkaz je popis OBD2 jednotky, napˇr´ıklad ELM327 ” v1.3“ ATE0 Pˇr´ıkaz slouˇz´ıc´ı k vypnut´ı ozvˇeny. Jednotka m´a defaultnˇe nastavenou ozvˇenu. Pˇr´ıkaz, kter´ y odeˇsleme na jednotku, se n´am ve stejn´e podobˇe i vr´at´ı. Ozvˇena se pouˇz´ıv´ a k ovˇeˇren´ı spr´ avn´eho nastaven´ı baud rate. Odpovˇed´ı na tento pˇr´ıkaz m´a b´ yt odpovˇed’ OK“. ” ATSP0 Nastav´ı protokol pˇripojen´ı na automat. Kdyˇz pˇrijde dotaz na automobil, jednotka vyzkouˇs´ı veˇsker´e moˇzn´e protokoly pro pˇripojen´ı a v pˇr´ıpadˇe, ˇze najde protokol, kter´ y odpov´ıd´ a, tak ho nastav´ı. Odpovˇed´ı je opˇet OK“. ” ATDP Vr´ at´ı n´ azev protokolu, takˇze napˇr´ıklad: ISO9141-2“. Tento a pˇr´ıkaz ATDPN mus´ı ” b´ yt provedeny aˇz po prvn´ım dotazu na jednotku, protoˇze do t´e doby nen´ı komunikace s jednotkou inicializovan´ a a n´avratov´a hodnota tˇechto dotaz˚ u je defaultn´ı. ATDPN Vr´ at´ı protokol popsan´ y ˇc´ıslem. Odpov´ıdaj´ıc´ı protokol ˇc´ıslu najdeme opˇet v datasheetu ELM327DS. V pˇr´ıpadˇe, ˇze je v´ ybˇer protokolu nastaven na automat, tak je n´avratov´ a hodnota nejen ˇc´ıslo, ale nav´ıc je pˇred n´ım znak A. Pˇr´ıklad moˇzn´e odpovˇedi: A3“. ” ATSWhh U protokol˚ u ISO, coˇz je ˇc´ıseln´ y popis 3-5, mus´ıme nastavit Wake up message“. V pˇr´ıpadˇe, ” ˇze jednotka motoru po nˇejakou dobu neobdrˇz´ı od OBD2 jednotky ˇz´adnou zpr´ avu, pokl´ ad´ a komunikaci s jednotkou za uzavˇrenou a odpoj´ı se. Proto je nutn´e nastavit takzvanou bud´ıc´ı zpr´ avu, kter´a je odesl´ana kaˇzd´ ych hh milisekund. V modulu je toto pouˇzito t´ımto zp˚ usobem ATSW20“. Odpovˇed´ı je opˇet OK“. ” ”
3.3.5
Informaˇ cn´ı pˇ r´ıkazy
Velk´ a ˇc´ ast pˇr´ıkaz˚ u na jednotku motoru je pops´ana zde[38]. Kaˇzd´ y pˇr´ıkaz na jednotku motoru je sloˇzen ze dvou hexadecim´aln´ıch ˇc´ısel a tˇret´ıho voliteln´eho decim´aln´ıho ˇc´ısla. Prvn´ı hexadecim´ aln´ı ˇc´ıslo pˇr´ıkazu odpov´ıd´a r˚ uzn´ ym typ˚ um dotaz˚ u na jednotku. Jedin´ y pouˇzit´ y m´od v modulu je m´ od 01“, kter´ y odpov´ıd´a dotaz˚ um na nynˇejˇs´ı data jednotky. ” Druh´e hexadecim´ aln´ı ˇc´ıslo odpov´ıd´a pidu, neboli ˇc´ıslu dotazu. Napˇr´ıklad pro dotaz na rychlost automobilu odpov´ıd´ a pid 0D“. Tˇret´ı voliteln´e decim´aln´ı ˇc´ıslo m˚ uˇzeme pˇridat pro ” zrychlen´ı dotazu. Toto ˇc´ıslo urˇcuje poˇcet bit˚ u, kter´e ˇcek´ame jako odpovˇed’. T´ım p´adem jednotka OBD2 po pˇreˇcten´ı urˇcit´eho poˇctu bit˚ u od jednotky motoru odeˇsle z´ıskan´e informace na palubn´ı jednotku. Takˇze celkov´ y dotaz na rychlost automobilu ve v´ ysledku vypad´a 01 ” 0D 1“. Jak jsem jiˇz uvedl dˇr´ıve, mezery jsou voliteln´e a m˚ uˇzeme je dˇelat pro pˇrehlednost, ovˇsem samotnou funkˇcnost dotazu nemˇen´ı. Kaˇzd´ a odpovˇed’ od jednotky se skl´ad´a z nˇekolika ˇc´ast´ı. Prvn´ı hexadecim´aln´ı ˇc´ıslo je m´ od dotazu, k nˇemuˇz je pˇripoˇcteno 40“ hexa. Dalˇs´ı hexadecim´aln´ı ˇc´ıslo odpov´ıd´a pinu dotazu ”
´ ˇ SEN ˇ ´I KAPITOLA 3. ANALYZA RE
10
a nakonec samotn´ a odpovˇed’ v hexadecim´aln´ım tvaru. Takˇze odpovˇed’ na dotaz na teplotu motoru (01051) vypad´ a napˇr´ıklad 41 05 55“. Coˇz dle vzoreˇcku uveden´eho na odkazu v´ yˇse ” (A-40) vypoˇc´ıt´ ame tak, ˇze pˇrevedeme hexadecim´aln´ı ˇc´ıslo 55 na decim´aln´ı ˇc´ıslo 85 a od nˇeho odeˇcteme 40, takˇze v´ ysledn´ a teplota motoru je 45.
3.3.6
Chybov´ e odpovˇ edi
Zde pop´ıˇsu pouze nejd˚ uleˇzitˇejˇs´ı moˇzn´e chybov´e odpovˇedi, se kter´ ymi jsem se bˇehem v´ yvoje modulu setkal. • NO DATA - Tato chybov´ a odpovˇed’ ˇr´ık´a, ˇze byl pod´an dotaz na ECU, ovˇsem ˇz´adn´a ’ odpovˇed nebyla pˇrijata. Toto se hlavnˇe dˇeje v pˇr´ıpadˇe, ˇze d´av´ame dotaz na pid, kter´ y nen´ı podporov´ an automobilem. Ale tak´e se m˚ uˇze st´at, ˇze se tato odpovˇed’ objev´ı po nˇekolika u ´spˇeˇsn´ ych dotazech a ECU ukonˇcilo spojen´ı. Tomuto se zabraˇ nuje u protokol˚ u ISO nastaven´ım ATSW zpr´ avy. • ? - Tato chybov´ a odpovˇed’ znamen´a, ˇze jednotka pˇrijala dotaz, ovˇsem tento dotaz neodpov´ıd´ a ˇz´ adn´emu zn´ am´emu dotazu. Tak´e m˚ uˇze b´ yt zp˚ usoben ˇspatn´ ym nastaven´ım baud rate. • UNABLE TO CONNECT - Tato chybov´a odpovˇed’ znamen´a, ˇze OBD2 jednotka se nem˚ uˇze pˇripojit k jednotce motoru. Objevuje se v pˇr´ıpadˇe, ˇze motor automobilu jiˇz nebyl nastartov´ an nebo v pˇr´ıpadˇe pˇreruˇsen´eho spojen´ı OBD2 jednotky s jednotkou motoru.
3.3.7
Uk´ azka komunikace s OBD2 jednotkou
Na obr´azku 3.1 je vidˇet komunikace mezi palubn´ı jednotkou a OBD2 jednotkou. Je vyobrazena pouze modelov´ a situace, ve kter´e vˇse funguje dle oˇcek´av´an´ı. V pˇr´ıpadˇe objeven´ı chybov´e odpovˇedi, palubn´ı jednotka tuto chybu vyhodnot´ı a zareaguje na n´ı. Pˇr´ıkazy na zaˇc´atku ATZ, ATSP0, ATE0 hovoˇr´ı pouze s jednotkou OBD2, takˇze spojen´ı mezi jednotkou OBD2 a jednotkou motoru nebylo zapoˇcato. Z tohoto d˚ uvodu vol´am pˇred dotazem ATDPN, kter´ y zjiˇst’uje ˇc´ıslo protokolu jednotky motoru, dotaz 0100, kter´ y zde slouˇz´ı pouze pro zah´ajen´ı komunikace mezi OBD2 jednotkou a jednotkou motoru.
´ 3.3. ANALYZA OBD2 JEDNOTKY A JEJ´I KOMUNIKACE S PALUBN´I JEDNOTKOU11
Obr´ azek 3.1: Uk´azka komunikace s OBD2 jednotkou
´ ˇ SEN ˇ ´I KAPITOLA 3. ANALYZA RE
12
3.4
Anal´ yza komunikace se serverem Metrocar
Komunikace se serverem Metrocar se d´a rozdˇelit do dvou ˇc´ast´ı. Na ˇc´ast, kter´a z´ısk´av´a rezervace a na ˇc´ ast, kter´ a odes´ıl´ a z´ıskan´e informace.
3.4.1
Z´ısk´ an´ı rezervac´ı
Jelikoˇz by uˇzivatel mˇel m´ıt moˇznost zprovoznit automobil po zad´an´ı sv´eho uˇzivatelsk´eho jm´ena a hesla, kter´e by odpov´ıdalo platn´e rezervaci vytvoˇren´e na serveru Metrocar, je zapotˇreb´ı tyto rezervace z´ısk´ avat. Prvn´ı myˇslenou bylo, ˇze palubn´ı jednotka po zad´an´ı uˇzivatelsk´ ych u ´daj˚ u st´ ahne platn´e rezervace pro jednotku a provede kontrolu. Probl´emem se uk´azaly b´ yti podzemn´ı gar´ aˇze. Uˇzivatel, kter´ y si automobil pronajme, ho m˚ uˇze zanechat v podzemn´ı gar´ aˇzi, kde nen´ı pˇripojen´ı k internetu. T´ım p´adem jednotka nem˚ uˇze z´ıskat informace o udˇelen´ ych rezervac´ıch a auto mus´ı b´ yt odvezeno z gar´aˇze technikem. Tomuto se snaˇz´ım pˇredejit t´ım, ˇze v urˇcit´em nastaviteln´em ˇcasov´em intervalu z´ısk´av´am informace o rezervac´ıch, kter´e n´ aslednˇe lok´ alnˇe uloˇz´ım. Toto ˇreˇsen´ı ovˇsem selh´av´a v pˇr´ıpadˇe, ˇze rezervace je vytvoˇrena v dobˇe, kdy jednotka nem´ a pˇripojen´ı k internetu a ˇz´adn´a jin´a dˇr´ıvˇejˇs´ı platn´a rezervace jiˇz nen´ı uloˇzena. Rezervace se z´ısk´ avaj´ı pˇres HttpGET [21]. V parametrech requestu se odes´ıl´a ”unit id”a ”secret key”, kter´e mus´ı odpov´ıdat jednotce vytvoˇren´e na serveru Metrocar, jinak neprobˇehne autentizace. Rezervace je n´ aslednˇe vr´ acena v JSON [28] form´atu. P˚ uvodnˇe tento dotaz vracel s´erii rezervac´ı, kde kaˇzd´a rezervace obsahovala id uˇzivatele, ˇsifrovan´e heslo pomoc´ı algoritmu PBKDF2 SHA256 a ˇcas zaˇc´atku a konce rezervace ve form´atu ISO8601[25]. N´ aslednˇe bylo pˇrid´ano nˇekolik parametr˚ u, aby z´ıskan´e rezervace vyhovovaly poˇzadavk˚ um na jednotku. Jelikoˇz pˇri kaˇzd´em dotazu z´ısk´ame vˇsechny rezervace vytvoˇren´e pro palubn´ı jednotku, tak se ˇc´ ast rezervac´ı opakuje. Z tohoto d˚ uvodu bylo pˇrid´ano id rezervace, pro rychl´e zjiˇstˇen´ı duplicit. Jedn´ım z nov´ ych poˇzadavk˚ u na palubn´ı jednotku byla tak´e moˇznost autorizace uˇzivatele pomoc´ı jm´ena a hesla. P˚ uvodn´ı z´ıskan´e rezervace neobsahovaly uˇzivatelsk´e jm´eno, proto byla tato informace pˇridan´a.
´ 3.4. ANALYZA KOMUNIKACE SE SERVEREM METROCAR
13
Uk´ azka z´ıskan´e rezervace: { "reservations": [ { "user": { "id": 123, "username": "novak", "password": "pbkdf2_sha1$10000$v6NRCv5SrJRr $Abc1LmEaVYb4oieZ/BhsUZ4s1va=" }, "start": "2012-10-24T14:00Z", "end": "2012-10-24T19:00Z", "reservationId": 532 }, { "user": { "id": 456, "username": "pokus", "password": "pbkdf2_sha1$10000$VdsulDle WvSI$Tk0LmEaVLb4oueX/lHh+UT4a1+a=" }, "start": "2012-11-24T12:00Z", "end": "2012-11-24T14:30Z", "reservationId": 1202 } ], "timestamp": "2012-10-24T02:00:27.372Z" }
3.4.2
Odes´ıl´ an´ı z´ıskan´ ych informac´ı
Na server Metrocar se odes´ılaj´ı n´asleduj´ıc´ı informace - rychlost automobilu, teplota motoru, ot´ aˇcky motoru, pozice akceler´atoru, souˇradnice GPS, nadmoˇrsk´a v´ yˇska, pˇresnost u ´daj˚ u GPS, id uˇzivatele a tak´e ˇcasy z´ aznamu u ´daj˚ u ve form´atu ISO8601. Nejdˇr´ıve z´ısk´ame z´aznamy od OBD2 jednotky, coˇz je rychlost automobilu, teplota motoru, ot´aˇcky motoru, pozice akceler´atoru. K tˇemto u ´daj˚ um n´ aslednˇe pˇrid´ame zbyl´e u ´daje a uloˇz´ıme je lok´alnˇe. Z´ıskan´e informace jsou odes´ılan´e pomoc´ı HttpPost[22] ve form´atu JSON. Jelikoˇz kaˇzd´ y Post na server tak´e obsahuje id palubn´ı jednotky a heslo, tak je snaha o posl´an´ı vˇetˇs´ıho poˇctu z´ aznam˚ u najednou, k uˇsetˇren´ı datov´e komunikace mezi palubn´ı jednotkou a serverem Metrocar. Z tohoto d˚ uvodu by bylo dobr´e ukl´adat z´aznamy lok´alnˇe a n´aslednˇe je v nastaviteln´em ˇcasov´em intervalu odes´ılat na server Metrocar. Toto ˇreˇsen´ı je tak´e v´ yhodn´e pro pˇr´ıpad neoˇcek´ avan´eho ukonˇcen´ı provozu palubn´ı jednotky, jelikoˇz data jsou neust´ ale ukl´ad´ana lok´ alnˇe tak o ˇz´ adn´e z´ aznamy neztrat´ıme.
14
´ ˇ SEN ˇ ´I KAPITOLA 3. ANALYZA RE
Post na server Metrocar je udˇelan´ y tak, ˇze jedin´ ymi povinn´ ymi u ´daji jsou id palubn´ı jednotky a heslo a u kaˇzd´eho z´ aznamu tak´e GPS souˇradnice a ˇcas z´aznamu. Tento post tak´e umoˇzn ˇuje odesl´ an´ı informac´ı o zb´ yvaj´ıc´ım palivu, tachometru a o spotˇrebˇe automobilu. Jelikoˇz ovˇsem OBD2 jednotka tyto u ´daje neposkytuje, tak tyto u ´daje nejsou odes´ıl´any. Uk´azka vzorov´eho postu palubn´ı jednotkou: { "unit_id": 12345, "secret_key": "sdfadfsa6as987654754", "entries": [ { "location": [14.42067, 50.07598], "gps_accuracy": 2.0, "timestamp": "2012-10-24T01:00:27.372Z", "user_id": 123, "velocity": 0.0, "altitude": 201.46, "engine_temp": 25.3, "engine_rpm": 0.0, "throttle": 0.0 }, { "location": [14.42065, 50.07599], "gps_accuracy": 8.0, "timestamp": "2012-10-24T01:03:27.372Z", "user_id": 123, "velocity": 23.631, "altitude": 202.76, "engine_temp": 42.3, "engine_rpm": 2103.5, "throttle": 23.1 } ] }
3.5
Anal´ yza imobilizace automobilu
Imobilizace automobilu spoˇc´ıv´ a v tom, ˇze kabel, kter´ y vede od sp´ınac´ı skˇr´ıˇ nky, je pˇreruˇsen a t´ım p´adem automobil nejde nastartovat. Toto lze udˇelat nˇejak´ ym logick´ ym obvodem, kter´ y ´ toto obstar´a, jedin´e co potˇrebuje je impuls +5 V. Ulohu imobilizace automobilu jsem si proto zjednoduˇsil na rozsvˇecen´ı led diody.
Kapitola 4
N´ avrh a implementace V t´eto kapitole bude ˇcten´ aˇr sezn´amen s n´avrhem funkˇcnosti jednotliv´ ych modul˚ u a jejich implementac´ı. Na n´ asleduj´ıc´ım obr´azku 4.1 je vidˇet hardwarov´a konfigurace.
Obr´ azek 4.1: Hardwarov´a konfigurace
15
´ KAPITOLA 4. NAVRH A IMPLEMENTACE
16
4.1
Palubn´ı jednotka
Na n´asleduj´ıc´ım obr´ azku 4.2 je vidˇet struktura aplikace.
Obr´ azek 4.2: Package Diagram
4.1. PALUBN´I JEDNOTKA
4.1.1
17
V´ ybˇ er v´ yvojov´ eho prostˇ red´ı
Jelikoˇz implementuji moduly v jazyce Java na platformˇe Android, vybral jsem v´ yvojov´e prostˇred´ı Eclipse. Eclipse umoˇzn ˇuje staˇzen´ı pluginu Android ADT[14], kter´ y je podporov´ an spoleˇcnost´ı Google, neboli tv˚ urcem platformy Android. Tento plugin tak´e obsahuje emul´ ator, kter´ y umoˇzn ˇuje vytvoˇren´ı virtu´ aln´ıho zaˇr´ızen´ı, aby uˇzivatel nemusel pˇri testov´an´ı m´ıt pˇripojen´e re´aln´e zaˇr´ızen´ı. Ovˇsem tento emul´ator neumoˇzn ˇuje emulaci Bluetooth, t´ım p´adem je pro tento projekt nepouˇziteln´ y a je vyˇzadov´ano re´aln´e zaˇr´ızen´ı. Pro nˇekter´e moduly by tento emul´ator mohl b´ yt vyuˇzit, avˇsak vzhledem k tomu, ˇze re´aln´e zaˇr´ızen´ı je neskonale rychlejˇs´ı a stabilnˇejˇs´ı, provedl jsem veˇsker´ a testov´an´ı s re´aln´ ym zaˇr´ızen´ım.
4.1.2
OBD2 modul
Z´akladem OBD2 modulu je vl´akno UnitEngine, kter´a pˇres Bluetooth komunikuje s OBD jednotkou. Na n´ asleduj´ıc´ım sekvenˇcn´ım diagramu 4.3 je vidˇet spuˇstˇen´ı a n´asledn´ y provoz UnitEngine. Po spuˇstˇen´ı vl´ akna ThreadEngine se snaˇz´ım ve smyˇcce pˇripojit k zaˇr´ızen´ı. Dokud se u ´spˇeˇsnˇe nepˇripoj´ım, pˇri kaˇzd´em ne´ uspˇeˇsn´em pˇripojen´ı odeˇslu zpr´avu na Handler. Po u ´spˇeˇsn´em pˇripojen´ı provedu metodu setUp(), kter´a odeˇsle CommandMessage pro nastaven´ı funkˇcn´ıho pˇripojen´ı. Toto nastaven´ı tak´e obsahuje zjiˇstˇen´ı, jak´ y protokol jednotka motoru pouˇz´ıv´ a a v pˇr´ıpadˇe, ˇze se jedn´a o protokol typu ISO9141 ˇci ISO14230, odeˇsle zpr´ avu ”ATSW20”na OBD jednotku, n´ aslednˇe OBD jednotka v periodick´em ˇcase odes´ıl´a probouzej´ıc´ı zpr´ avu na jednotku motoru, aby ta nepˇreruˇsila komunikaci. V n´asledn´e smyˇcce connected vol´ am jednotliv´e tˇr´ıdy PidMessage, kter´e jsem tam v konstruktoru vloˇzil. 4.1.2.1
ObdMessages
Nejvˇetˇs´ım probl´emem modulu se uk´azal poˇzadavek na jednoduchou rozˇsiˇritelnost o dalˇs´ı moˇzn´e pˇr´ıkazy. Toto je vyˇreˇseno pomoc´ı abstraktn´ıho pˇredka. Jak informaˇcn´ı pˇr´ıkazy, tak ˇ ıd´ıc´ı pˇr´ıkazy maj´ı absˇr´ıd´ıc´ı pˇr´ıkazy maj´ı spoleˇcn´eho abstraktn´ıho pˇredka ObdMessage. R´ traktn´ıho pˇredka CommandMessage a informaˇcn´ı pˇr´ıkazy maj´ı abstraktn´ıho pˇredka PidMessage, jak je vidˇet na obr´ azku 4.4. Pro vytvoˇren´ı nov´eho informaˇcn´ıho dotazu na jednotku staˇc´ı, aby nov´ y dotaz dˇedil od PidMessage. Metoda getDescription() m´a vracet, co dotaz z´ısk´ av´ a. D´ ale je tˇreba upravit metodu calculateValue(), kter´a z pˇrijat´e zpr´avy v hexadecim´ aln´ım tvaru vr´ at´ı v´ ysledek v decim´aln´ım, vypoˇc´ıtan´ y pomoc´ı vzoreˇcku z tˇechto str´anek[38]. Posledn´ı u ´pravou je zmˇena n´avratov´e hodnotu u metody getRequest(), kter´ a m´a vracet samotn´ y dotaz, kter´ y bude odesl´an na jednotku. V´ ysledek kaˇzd´eho dotazu je n´aslednˇe odesl´ an na Handler.
18
´ KAPITOLA 4. NAVRH A IMPLEMENTACE
Obr´ azek 4.3: Sekvenˇcn´ı diagram pro OBD2 modul
4.1. PALUBN´I JEDNOTKA
Obr´ azek 4.4: Struktura zpr´av pro OBD2
19
´ KAPITOLA 4. NAVRH A IMPLEMENTACE
20
4.1.2.2
Sekvenˇ cn´ı diagram PidMessage
Na n´asleduj´ıc´ım sekvenˇcn´ım diagramu 4.5 je vidˇet ˇreˇsen´ı samotn´eho informaˇcn´ıho pˇr´ıkazu.
Obr´ azek 4.5: Sekvenˇcn´ı diagram PidMessage
4.1. PALUBN´I JEDNOTKA
4.1.3
21
Spr´ ava Handleru
Jelikoˇz vˇsechny moduly projektu jsou vl´akna, bylo tˇreba zajistit zpracov´an´ı informac´ı od tˇechto vl´ aken, at’ jiˇz jsou to chybov´a hl´aˇsen´ı ˇci potˇrebn´e informace. Kaˇzd´a zpr´ava odes´ılan´ a na Handler se skl´ ad´ a ze 4 z´ akladn´ıch ˇc´ast´ı (int what,int arg1,int arg2, Object obj). Ve ˇ ast ”what”nese informaci tˇr´ıdˇe HandlerLabels jsou tyto ˇc´ asti vytvoˇreny pro kaˇzd´ y modul. C´ ˇ ast ”arg1”nese o jak´ y modul se jedn´ a, napˇr´ıklad modul pro z´ısk´av´an´ı rezervac´ı je ”GET”. C´ informaci o jak´ y typ zpr´ avy se jedn´a, napˇr´ıklad se m˚ uˇze jednat o chybovou zpr´avu, ˇci o tom ˇ v jak´em stavu se modul nal´ez´ a. C´ast ”arg2”vˇetˇsinou nepouˇz´ıv´am. V ˇc´asti ”obj”je odesl´ an String kter´ y nese informaci o tom, co se stalo.
4.1.4
Z´ısk´ av´ an´ı polohy automobilu
Z´ısk´ av´ an´ı polohy je prov´ adˇeno pomoc´ı tˇr´ıdy GPSTracker, kter´a dˇed´ı od Service. K z´ısk´ av´ an´ı polohy na platformˇe Android slouˇz´ı tˇr´ıda LocationManager[29]. Poloha automobilu m˚ uˇze b´ yt z´ısk´ ana pomoc´ı zabudovan´eho GPS ˇcipu (LocationManager.GPS PROVIDER). Polohu m˚ uˇzeme tak´e z´ıskat pomoc´ı GSM sign´alu ˇci WI-FI (LocationManager.NETWORK PROVIDER), ovˇsem tento odhad pozice je velice nepˇresn´ y, pˇresnost odhadu z´aleˇz´ı na hustotˇe a zmapovanosti mobiln´ıho pˇripojen´ı v okol´ı jednotky. Pˇri vol´ an´ı konstruktoru zjist´ım, zda je z´ısk´av´an´ı polohy tˇemito zp˚ usoby v˚ ubec povoleno na zaˇr´ızen´ı. Toto provedu pomoc´ı vol´an´ı metody isProviderEnabled() na LocationManager. Pot´e po zavol´ an´ı metody ”start”na GPSTracker spust´ım z´ısk´av´an´ı polohy pomoc´ı metody ”requestLocationUpdates”na LocationManager, kde nastav´ım po jak´e dobˇe a po jak´e zmˇenˇe vzd´alenosti provedu aktualizaci polohy. Tato aktualizace polohy je prov´adˇena na LocationListener. V pˇr´ıpadˇe, kdy jsou povoleny obˇe varianty z´ısk´av´an´ı polohy, m´am vytvoˇren´e dva listenery, na kter´e pˇrich´ az´ı aktualizace polohy. N´aslednˇe, kdyˇz je volan´a funkce ”refresh”na GPSTracker, vyberu u ´daje o poloze s lepˇs´ı pˇresnost´ı a tyto u ´daje uloˇz´ım ve tˇr´ıdˇe GPSTracker.
4.1.5
Rezervace
O rezervace se star´ a vl´ akno GetReservation. Na platformˇe Android mus´ı b´ yt kaˇzd´e vol´ an´ı s´ıt’ov´e komponenty v jin´em neˇz hlavn´ım vl´aknu aplikace. Na sekvenˇcn´ım diagramu 4.5 je vidˇet pr˚ ubˇeh z´ısk´ av´ an´ı rezervac´ı. Pˇri vol´an´ı metody getReqeust kontroluji, zda existuje aktivn´ı pˇripojen´ı k internetu a v pˇr´ıpadˇe, ˇze ˇz´adn´e pˇripojen´ı nen´ı dostupn´e, tak se n´aslednˇe vrac´ım. O samotn´e odesl´ an´ı dotazu na server Metrocar se star´a metoda makeRequest. Zde ovˇsem nastal probl´em, protoˇze za norm´aln´ıch okolnost´ı se o dotaz typu GET star´a tˇr´ıda HttpGet. Ta ovˇsem neumoˇzn ˇuje odesl´an´ı entity, kterou potˇrebujeme odeslat, jelikoˇz obsahuje informace k autorizaci jednotky. Tento probl´em je vyˇreˇsen pomoc´ı tˇr´ıdy HttpEntityEnclosingBase u kter´e pˇrep´ıˇseme metodu ”getMethod”, tak aby vracela ”GET”a n´aslednˇe jiˇz m˚ uˇzeme odes´ılat dotaz typu GET s entitou.
4.1.6
Odes´ıl´ an´ı z´ıskan´ ych u ´ daj˚ u
O odes´ıl´ an´ı z´ıskan´ ych u ´daj˚ u se star´a vl´akno PostMetrocar a opˇet toto mus´ı b´ yt vl´akno, jelikoˇz pˇristupuji k internetu. Pˇri spuˇstˇen´ı tohoto vl´akna nejdˇr´ıve z´ısk´am od datab´aze vˇsechny
22
´ KAPITOLA 4. NAVRH A IMPLEMENTACE
Obr´ azek 4.6: Sekvenˇcn´ı diagram Rezervace
uloˇzen´e z´aznamy a n´ aslednˇe tyto z´ aznamy pˇrevedu do JSON form´atu a vˇcetnˇe Unit ID a Secret key jednotky je odeˇslu na server Metrocar. N´aslednˇe provedu kontrolu k´odu odpovˇedi. V pˇr´ıpadˇe, ˇze je tato odpovˇed’ rovna 200, neboli vˇse v poˇr´adku, tak z´aznamy, kter´e byly odesl´any, smaˇzu z datab´ aze.
4.1. PALUBN´I JEDNOTKA
4.1.7
23
Imobilizace automobilu
Imobilizaci automobilu reprezentuje vl´akno LockEngine. Tuto jsem zde navrhl zp˚ usobem pos´ıl´an´ı jednoduch´ ych zpr´ av mezi mobiln´ım zaˇr´ızen´ım a Arduinem. Pˇri spojen´ı s Arduinem mohu odes´ılat zpr´ avy na otestov´an´ı spr´avnosti hesla, trvalou zmˇenu hesla, zprovoznˇen´ı automobilu platn´ ym heslem a imobilizaci automobilu.
4.1.8
Autorizace uˇ zivatele
O autorizaci uˇzivatele se star´ a tˇr´ıda ControlPassword. Tato tˇr´ıda z´ısk´av´a veˇsker´e rezervace podle uˇzivatelsk´eho jm´ena. Z tˇechto rezervac´ı vybere rezervaci, kter´a je v dan´e dobˇe aktivn´ı. N´ aslednˇe zaˇsifruje vloˇzen´e heslo a porovn´a ho se zaˇsifrovan´ ym heslem z´ıskan´ ym z rezervace. Pˇri implementaci se ovˇsem objevil probl´em, jelikoˇz Android ”javax.crypto”nepodporuje ˇsifrov´an´ı pomoc´ı algoritmu PBKDF2 SHA256. Po dohodˇe s Jakubem Jeˇcm´ınkem byl zmˇenˇen ˇsifrovac´ı algoritmus na serveru na PBKDF2 SHA1, jelikoˇz tento je jiˇz podporov´an.
4.1.9
Datab´ aze
Jelikoˇz je tˇreba ukl´ adat pˇrijat´e rezervace a tak´e ukl´adat jednotliv´e z´aznamy pˇred odesl´ an´ım, implementoval jsem datab´ azi na referenˇcn´ı pro Android SQLite [47]. Datab´aze obsahuje dvˇe tabulky jak je vidˇet na obr´ azku 4.7.
Obr´azek 4.7: Datab´aze
´ KAPITOLA 4. NAVRH A IMPLEMENTACE
24
4.1.10
Automatick´ e spuˇ stˇ en´ı po startu
Aplikace se z´ akladn´ım zobrazen´ım byla tak´e doplnˇena o automatick´ y start aplikace po startu zaˇr´ızen´ı. Pˇri startu aplikace je provedena kontrola, zda je nastaveno vˇse potˇrebn´e k bˇehu aplikace, napˇr´ıklad Bluetooth adresa OBD jednotky, adresa serveru atd.
4.1.11
Potˇ rebn´ a opr´ avnˇ en´ı
Knihovna vyˇzaduje n´ asleduj´ıc´ı opr´ avnˇen´ı, kter´a mus´ı b´ yt vyps´ana v souboru AndroidManifest.xml ke spr´ avn´e funkci. <uses-permission <uses-permission <uses-permission <uses-permission <uses-permission <uses-permission <uses-permission <uses-permission
android:name="android.permission.BLUETOOTH"/> android:name="android.permission.BLUETOOTH_ADMIN"/> android:name="android.permission.ACCESS_FINE_LOCATION"/> android:name="android.permission.ACCESS_COARSE_LOCATION"/> android:name="android.permission.INTERNET"/> android:name="android.permission.ACCESS_NETWORK_STATE"/> android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
4.1. PALUBN´I JEDNOTKA
4.1.12
25
Hlavn´ı modul
C´ılem tohoto projektu je vytvoˇrit modul, kter´ y by spojil vˇsechny v´ yˇse zm´ınˇen´e moduly. Tento v´ ysledn´ y modul je reprezentov´an tˇr´ıdou MainCore. Samotn´ y modul je vybaven dvˇema Handlery. Jeden vnitˇrn´ı Handler slouˇz´ı k z´ısk´av´ an´ı informac´ı od jednotliv´ ych modul˚ u a druh´ y slouˇz´ı k poskytov´an´ı informac´ı vnˇe modulu. K ovl´ad´ an´ı cel´eho modulu slouˇz´ı pˇet metod. Metoda ”test()”slouˇz´ı k otestov´an´ı nastaven´ı tˇr´ıdy. Z´ısk´an´ım rezervac´ı si ovˇeˇr´ı, zda je adresa na API serveru Metrocar spr´avn´a, zda Unit ID a Secret Key jednotky je spr´ avnˇe nastaveno. Ovˇeˇr´ı pˇripojen´ı k OBD jednotce, zda je funkˇcn´ı. Metoda ”setUp()”slouˇz´ı k nastaven´ı a spuˇstˇen´ı hlavn´ıho modulu. Pˇri vol´an´ı t´eto metody je tak´e spuˇstˇeno z´ısk´ av´ an´ı rezervac´ı v nastaven´em intervalu a odes´ıl´an´ı z´ıskan´ ych informac´ı, kter´e prob´ıh´ a v intervalu v pˇr´ıpadˇe, ˇze uˇzivatel nen´ı pˇrihl´aˇsen. Jelikoˇz tˇr´ıdy GetReservation a PostMetrocar, kter´e se o toto staraj´ı, jsou vl´akna, k jejich spuˇstˇen´ı v urˇcit´em intervalu pouˇz´ıv´ am tˇr´ıdu ScheduledThreadPoolExecutor, kter´a toto umoˇzn ˇuje. Metoda ”authorizedUser(String userName, String userPassword)”provede kontrolu, zda existuje rezervace s urˇcen´ ym uˇzivatelsk´ ym jm´enem a heslem. Po kontrole uˇzivatelsk´eho jm´ena a hesla n´ aslednˇe spust´ı OBD2 modul pro z´ısk´av´an´ı informac´ı od automobilu, neboli tˇr´ıdu UnitEngine. Pro kaˇzdou tˇr´ıdu PidMessage vloˇzenou do UnitEngine obdrˇz´ım v´ ysledky jednotliv´ ych pˇr´ıkaz˚ u, kter´e si n´ aslednˇe uloˇz´ım. UnitEngine po z´ısk´an´ı informac´ı pro kaˇzd´ y pˇr´ıkaz, odeˇsle pomoc´ı Handleru zpr´ avu, ˇze kaˇzd´ y pˇr´ıkaz byl vykon´an, k tˇemto u ´daj˚ um pˇrid´a zbyl´e nutn´e u ´daje napˇr´ıklad ˇcas z´ısk´ an´ı tˇechto u ´daj˚ u, id uˇzivatele, polohu automobilu atd. Tak´e zruˇs´ı odes´ıl´ an´ı informac´ı v intervalu pro nepˇrihl´aˇsen´eho uˇzivatele a znova je spust´ı v intervalu pro pˇrihl´ aˇsen´eho uˇzivatele. Tak´e je spuˇstˇen modul pro z´ısk´av´an´ı polohy automobilu, neboli GPSTracker. Metoda ”unauthorizedUser()”ukonˇc´ı moduly pro z´ısk´av´an´ı polohy automobilu, OBD2 modul a tak´e ukonˇc´ı odes´ıl´ an´ı informac´ı v intervalu pro pˇrihl´aˇsen´eho uˇzivatele a znova je spust´ı v intervalu pro nepˇrihl´ aˇsen´eho uˇzivatele. Metoda ”close()”slouˇz´ı k ukonˇcen´ı veˇsker´e ˇcinnosti MainCore. Do tohoto modulu je tak´e ˇc´ asteˇcnˇe implementovan´a imobilizace automobilu. Ta ovˇsem umoˇzn ˇuje pouze otevˇren´ı automobilu pˇri vol´an´ı metody ”authorizedUser(String userName, String userPassword)”a uzavˇren´ı automobilu pˇri vol´an´ı metody ”unauthorizedUser()”.
´ KAPITOLA 4. NAVRH A IMPLEMENTACE
26
4.2
Imobilizaˇ cn´ı jednotka
Pro vytvoˇren´ı imobilizaˇcn´ı jednotky jsem vybral v´ yvojov´ y kit Arduino UNO[3] s Bluetooth modulem JY-MCU, jelikoˇz celkov´a cena tohoto zaˇr´ızen´ı i s Bluetooth modulem se pohybovala okolo 500Kˇc. V´ yhodou je tak´e pˇr´ıbuznost k´odu se syntax´ı jazyku C++. N´asledn´e propojen´ı s palubn´ı jednotkou je provedeno pomoc´ı Bluetooth.
Obr´ azek 4.8: Imobilizaˇcn´ı jednotka
ˇ ´I JEDNOTKA 4.2. IMOBILIZACN
4.2.1
27
V´ ybˇ er v´ yvojov´ eho prostˇ red´ı
Pro implementaci jsem vyuˇzil v´ yvojov´e prostˇred´ı pˇr´ımo od v´ yrobce, a to Arduino 1.0.4[4]. Nejvˇetˇs´ı v´ yhodou tohoto v´ yvojov´eho prostˇred´ı je velice jednoduch´a instalace a tak´e velk´e mnoˇzstv´ı pˇr´ıklad˚ u.
4.2.2
Bluetooth modul
Pro fyzick´e propojen´ı Arduina s Bluetooth modulem staˇc´ı propojit RXD Bluetooth modulu s TXD Arduina a TXD Bluetooth modulu s RX Arduina. N´aslednˇe zapojit nap´ ajen´ı Bluetooth modulu, toto doporuˇcuji udˇelat tak, aby to bylo jednoduˇse rozpojiteln´e, jelikoˇz pˇri nahr´ av´ an´ı programu do Arduina mus´ı b´ yt Bluetooth modul odpojen jinak nahr´an´ı selˇze.
4.2.3
Arduino
Nejdˇr´ıve je potˇreba nastavit Bluetooth modul. Nastav´ım jm´eno Bluetooth modulu, pod kter´ ym bude vidˇet, toto lze udˇelat odesl´an´ı pˇr´ıkazu AT+NAME a samotn´e jm´eno, kter´e je nastaveno na Metrocar. V´ ysledn´ y pˇr´ıkaz n´aslednˇe vypad´a AT+NAMEMetrocar. Tak´e zmˇen´ım pin zaˇr´ızen´ı pouˇzit´ y pˇri p´arov´an´ı, coˇz se provede pˇr´ıkazem AT+PIN a ˇc´ıslo pinu, kter´e je nastaveno na 7777. V´ ysledn´ y pˇr´ıkaz n´aslednˇe vypad´a AT+PIN7777. Po nastaven´ı Bluetooth modulu n´asleduje smyˇcka, ve kter´e ˇcek´am na pˇrijet´ı jednoho z ˇ ezec pro nastaven´ı nov´eho hesla, kter´ n´asleduj´ıc´ıch ˇretˇezc˚ u. Retˇ y vypad´a n´asledovnˇe ”RESET ˇ ezec pro otestov´an´ı spr´avnosti hesla ”TEST HESLO”. STAREHESLO NOVEHESLO”. Retˇ ˇ ezec pro otevˇren´ı zaˇr´ızen´ı, neboli pro nastaven´ı +5 V na pinu 2, ten se provede pro pˇrijet´ı Retˇ ˇretˇezce ”OPEN HESLO”a pro zavˇren´ı vozidla neboli 0 V na pin 2 slouˇz´ı ˇretˇezec ”CLOSE”. Heslo k imobilizaˇcn´ı jednotce je uloˇzeno na EEPROM Arduina, z d˚ uvodu zachov´an´ı hesla v pˇr´ıpadˇe v´ ypadku nap´ ajen´ı. Pˇri spuˇstˇen´ı aplikace je provedena kontrola, zda jiˇz nen´ı heslo uloˇzeno na EEPROM. V pˇr´ıpadˇe ˇze tak nen´ı, je do EEPROM uloˇzeno heslo ”metrocar”.
28
´ KAPITOLA 4. NAVRH A IMPLEMENTACE
Kapitola 5
Testov´ an´ı K testov´ an´ı v´ ysledn´e knihovny jsem se rozhodl vytvoˇrit z´akladn´ı zobrazen´ı, implementuj´ıc´ı knihovnu. Samotn´e testov´ an´ı jsem rozdˇelil na tˇri ˇc´asti. Prvn´ı ˇc´ast testov´an´ı se zamˇeˇrila na testov´ an´ı komunikace mezi knihovnou a OBD jednotkou, k tomuto slouˇzil OBD simul´ ator, na kter´em bylo moˇzn´e otestovat z´akladn´ı funkˇcnost OBD2 modulu. Druh´a ˇc´ast testov´an´ı se zamˇeˇrila na re´ aln´e nasazen´ı aplikace a komunikace se serverem Metrocar. Posledn´ı ˇc´ast se zamˇeˇrila na otestov´ an´ı modulu OBD2 pomoc´ı jednotkov´ ych test˚ u.
5.1
Zaˇ r´ızen´ı pouˇ zit´ a pˇ ri testov´ an´ı
• Automobil ˇ – Skoda Octavia Combi Rok V´ yroby 2000 Protokol ISO9141-2. • OBD jednotka – Bluetooth ELM 327 v1.5 • Mobiln´ı zaˇr´ızen´ı na platformˇe Android – Google Nexus 7 IC 3568A-ME370T Syst´em Android 4.2.2 – Sony Ericsson XPeria ray S/N CB511V1ZXN Syst´em Android 4.0.4 – Motorola M526 IMEI 351575041602380 Syst´em Android 2.3.5
29
´ ´I KAPITOLA 5. TESTOVAN
30
5.2
Testov´ an´ı oproti OBDSim
Jednou ze z´ akladn´ıch potˇreb projektu bylo z´ısk´an´ı simul´atoru, kter´ y by simuloval OBD2 jednotku. Jelikoˇz otestov´ an´ı aplikace oproti re´aln´emu automobilu nen´ı vˇzdy moˇzn´e a ani to nen´ı ekonomick´e vzhledem k provozu automobilu. Objevil jsem simul´ator OBDSim[39], kter´ y simuluje chov´ an´ı OBD2 jednotky na poˇc´ıtaˇci s Bluetooth. Bohuˇzel v dokumentaci je napsan´e, ˇze podpora pro Bluetooth nen´ı na poˇc´ıtaˇc´ıch Windows moˇzn´a. Po emailov´e komunikaci s tv˚ urcem OBDSim panem Gary Griggsem jsme naˇsli velice jednoduch´e ˇreˇsen´ı. Nastavit pˇr´ıchoz´ı bluetooth port napˇr´ıklad COM4. Pot´e spustit program pˇres pˇr´ıkazovou ˇr´adku s nastaven´ ym grafick´ ym rozhran´ım a se spr´avn´ ym pˇr´ıchoz´ım portem. K tomuto je tˇreba m´ıt spr´avnou verzi simul´ atoru se zabudovan´ ym grafick´ ym rozhran´ım. Na t´eto str´ance je zkr´acen´ y n´avod a moˇznost staˇzen´ı OBDSim pouˇzit´ y pˇri testov´an´ı[40]. Testov´an´ı pomohlo objevit chyby v n´ avrhu OBD2 modulu.
5.3
Testov´ an´ı oproti re´ aln´ emu automobilu
Testov´an´ı oproti re´ aln´emu automobilu objevilo nˇekolik z´asadn´ıch chyb, kter´e se neobjevily pˇri testov´ an´ı oproti simul´ atoru. Bohuˇzel pˇres veˇskerou moji snahu se mi nepodaˇrilo vyzkouˇset aplikaci proti automobilu s jin´ ym protokolem neˇz s ISO9141-2. Aplikace byla otestov´ana na v´ıce automobilech s protokolem ISO9141-2, ovˇsem toto nepˇrineslo ˇz´adn´e nov´e poznatky, proto uv´ ad´ım pouze automobil, na kter´em probˇehla vˇetˇsina testov´an´ı.
5.3.1
Nemoˇ znost opˇ etovn´ eho pˇ ripojen´ı k jednotce
Z´asadn´ı chybou byla nemoˇznost opˇetovn´eho spojen´ı aplikace s OBD jednotkou po skonˇcen´ı Bluetooth komunikace mezi aplikac´ı a OBD jednotkou. Jedinou moˇznost´ı bylo n´aslednˇe fyzicky odpojit OBD jednotku od automobilu a zase ji pˇripojit. N´aslednˇe se uk´azalo, ˇze tato chyba je zp˚ usobena pˇr´ıkazem ”ATSW20”, kter´ y pos´ıl´a zpr´avy mezi OBD jednotkou a jednotkou motoru takzvan´e probouzej´ıc´ı zpr´avy. Tato zpr´ava se nastavuje u protokol˚ u typu ISO9141 a ISO14230. Jinak by mohlo doj´ıt k tomu, ˇze by si jednotka motoru myslela, ˇze komunikace je ukonˇcena a pˇreruˇsila spojen´ı s OBD jednotkou, coˇz by zp˚ usobilo, ˇze by OBD jednotka na veˇsker´e informaˇcn´ı pˇr´ıkazy odpov´ıdala ”NO DATA”. Ovˇsem tento pˇr´ıkaz tak´e zp˚ usobil, ˇze pot´e co aplikace ukonˇc´ı Bluetooth spojen´ı s OBD jednotkou, na kter´e je st´ale aktivn´ı pˇr´ıkaz ATSW20, nebude se jiˇz moˇzn´e opˇet pˇripojit, dokud jednotka nebude fyzicky restartovan´a. Jelikoˇz OBD jednotka je neust´ale nap´ajena i kdyˇz motor automobilu nebˇeˇz´ı, bylo n´aslednˇe tˇreba OBD jednotku vyjmout a n´aslednˇe zase zapojit. ˇ sen´ı tohoto probl´emu spoˇc´ıvalo v pˇreprogramov´an´ı samotn´e funkce OBD2 modulu Reˇ neboli tˇr´ıdy UnitEngine, kter´ a jiˇz neodes´ıl´a ˇr´ıd´ıc´ı pˇr´ıkazy na zjiˇstˇen´ı, jestli se jedn´a o protokol typu ISO9141 ˇci ISO14230. Avˇsak t´ım uˇz nen´ı nastavena probouzej´ıc´ı periodick´a zpr´ava na OBD jednotku, m˚ uˇze se n´ aslednˇe st´ at, ˇze se jednotka motoru odpoj´ı a t´ım p´adem z´ısk´am odpovˇed’ typu ”NO DATA”. Proto zpr´ avy na jednotku (ObdMessage) byly rozˇs´ıˇreny o detekci odpovˇedi ”NO DATA”. Po detekci t´eto odpovˇedi odeˇslu pˇr´ıkaz na restart jednotky ”ATZ”a t´ım p´adem jsem schopen opˇet probudit jednotku motoru. Tato chyba byla t´ım p´adem u ´spˇeˇsnˇe odstranˇena.
´ ´I OPROTI REALN ´ EMU ´ 5.3. TESTOVAN AUTOMOBILU
Ot´aˇcky motoru Pozice akceler´ atoru Rychlost automobilu MAF pr˚ utok vzduchu Teplota motoru
Dotaz na automobil v ms 340 250 250 340 250
31
Dotazu na simul´ator v ms 60 60 60 60 60
Tabulka 5.1: Rychlost dotaz˚ u
5.3.2
Rychlost dotazu
Jednou z vˇec´ı, kter´ a byla tak´e testovan´a, byla rychlost jednotliv´ ych dotaz˚ u na OBD2 jednotku. V´ ysledn´e ˇcasy se pohybovaly okolo ˇcas˚ u uveden´ ych v tabulce. K dotaz˚ um pouˇzit´ ym v aplikace byl tak´e u ´myslnˇe pˇrid´ an dotaz na MAF pr˚ utok vzduchu, coˇz bude d´ale vysvˇetleno. V´ ysledek dotazu na rychlost pouk´azal na zaj´ımav´ y fakt. Dotazy, vracej´ıc´ı dvoubitovou ’ odpovˇed (ot´ aˇcky motoru a MAF pr˚ utok vzduchu) pˇri odes´ıl´an´ı na automobil maj´ı pr˚ umˇernˇe o 90 ms delˇs´ı dobu odpovˇedi neˇz zbyl´e dotazy, vracej´ıc´ı jednobitovou odpovˇed’. Stejn´ y test oproti simul´ atoru vracel vˇsechny odpovˇedi ve stejn´e dobˇe. Pro potvrzen´ı t´eto teorie byl nav´ıc pˇrid´an onen dotaz na MAF pr˚ utok vzduchu.
5.3.3
V´ıcen´ asobn´ e vkl´ ad´ an´ı z´ aznam˚ u na server Metrocar
Jednou z chyb, objeven´ ych pˇri testov´an´ı aplikace na re´aln´em automobilu, bylo v´ıcen´asobn´e uloˇzen´ı stejn´eho z´ aznamu na server. Jak je zm´ınˇeno v 3.4.2, na server je odesl´ana s´erie z´aznam˚ u, kde kaˇzd´ y z´ aznam tak´e obsahuje informaci, v jak´em ˇcase byl tento z´aznam z´ısk´ an. Po zkuˇsebn´ıch j´ızd´ ach se uk´ azalo, ˇze nˇekter´e z´aznamy jsou uloˇzen´e na serveru v´ıcekr´at. Jelikoˇz aplikace si m´ a ony z´ aznamy ukl´adat v pˇr´ıpadˇe, ˇze je nem˚ uˇze odeslat, tak pˇri n´asledn´em pˇripojen´ı se aplikace snaˇzila odeslat tˇreba i nˇekolik tis´ıc z´aznam˚ u najednou, coˇz ˇ zp˚ usobilo zahlcen´ı serveru Metrocar. Casto a i nˇekolikr´at za sebou se st´avalo, ˇze odpovˇed’ serveru byla Gateway Timeout[20]. Coˇz jsem bral tak, ˇze server z´aznamy neobdrˇzel a proto jsem je odeslal znovu. Ovˇsem toto vedlo k tomu, ˇze si server n´aslednˇe uloˇzil z´aznam v´ıcekr´ at. ˇ sen´ım tohoto probl´emu bylo omezit poˇcet odes´ılan´ Reˇ ych z´aznam˚ u. T´ım p´adem, kdyˇz m´ a jednotka uloˇzeno tˇreba i tis´ıce z´ aznam˚ u, tak jejich odesl´an´ı prob´ıh´a po urˇcit´ ych ˇc´astech, aby nedoˇslo k zahlcen´ı serveru.
32
5.3.4
´ ´I KAPITOLA 5. TESTOVAN
Zobrazen´ı cesty automobilu na serveru Metrocar
Po pˇrihl´aˇsen´ı do sekce admin na server Metrocar, v dobˇe testov´an´ı adresa ”admin.autonapul.cz”, je moˇzn´e v z´aloˇzce: Audit > Usage history, zobrazit polohy automobilu. Toto bylo vyuˇzito pro otestov´an´ı funkce modulu pro z´ısk´ av´an´ı polohy automobilu, jelikoˇz se na mapˇe m˚ uˇzu pˇr´ımo pod´ıvat, kde automobil jel. Jedn´ım z probl´em˚ u ovˇsem bylo, ˇze toto zobrazov´an´ı polohy automobilu bylo v dobˇe testov´ an´ı ve stavu Proof of Concept, neboli je to uk´azka, jak by to fungovalo. T´ım p´ adem se st´ avalo, ˇze nebyly z´aznamy jednotky vidˇet. Druh´ ym probl´emem bylo, ˇze ˇcas na mapˇe je posunut´ y o 2 hodiny nazp´atek. takˇze pokud chcete vidˇet z´aznam z 14:48 mus´ıte ˇcas nastavit na 12:48. Po zkontrolov´ an´ı datab´ aze serveru Metrocar se uk´azalo, ˇze z´aznamy byly uloˇzeny v datab´aze, ale nezobrazovaly se. Po poradˇe s Jakubem Jeˇcm´ınkem, kter´ y v t´eto dobˇe pracoval na serveru Metrocar, jsem se dozvˇedˇel, ˇze zobrazen´ı funguje tak, ˇze se z datab´aze vyberou vˇsechny z´aznamy, kter´e jsou ve v´ yseku mapy a odpov´ıdaj´ı ˇcasem, a jsou zobrazeny. Ovˇsem v pˇr´ıpadˇe, ˇze poˇcet tˇechto z´ aznam˚ u pˇres´ahl 1000, tak se nezobrazilo nic. P˚ uvodnˇe bylo oˇcek´av´ano, ˇze poˇcet z´ aznam˚ u pro jednotku nepˇrekroˇc´ı i za cel´ y den pohybu automobilu 1000 z´aznam˚ u. Ovˇsem jelikoˇz pr˚ umˇern´ a doba z´ısk´an´ı jednoho z´aznamu mnou implementovanou jednotkou trv´a okolo 1250 milisekund, za jeden den palubn´ı jednotka m˚ uˇze vytvoˇrit aˇz 70 000 z´aznam˚ u. Toto je probl´em na stranˇe serveru Metrocar. Ovˇsem j´a jsem chtˇel pro potvrzen´ı funkˇcnosti modulu GPS vidˇet zkuˇsebn´ı j´ızdu na mapˇe. Proto jsem poprosil Jakuba Jeˇcm´ınka o posunut´ı hranice zobrazen´ ych z´ aznam˚ u z 1000, coˇz odpov´ıd´a 21 minut´am j´ızdy na 3600, coˇz odpov´ıd´a asi 75 minut´am j´ızdy. Na obr´azc´ıch 5.1 a 5.2 jsou vidˇet zkuˇsebn´ı j´ızdy. Pˇri zkuˇsebn´ı j´ızdˇe 1 5.1, kter´a trvala okolo 10 minut, jsem na ˇc´ ast vypnul z´ısk´av´an´ı polohy pomoc´ı GPS. V´ ysledkem tohoto je, ˇze jedna ˇc´ast j´ızdy m´ a v´ıce m´enˇe pˇresnou polohu, kde bylo z´ısk´av´an´ı polohy pomoc´ı GPS zapnuto. A na druhou ˇc´ ast, kde je GPS vypnuto a poloha je urˇcena pomoc´ı odhadu z Wi-Fi, kter´a m´a velk´e nepˇresnosti v urˇcen´ı polohy. Zkuˇsebn´ı j´ızda 2 5.1 trvala okolo 30 minut.
´ ´I OPROTI REALN ´ EMU ´ 5.3. TESTOVAN AUTOMOBILU
Obr´azek 5.1: Zkuˇsebn´ı j´ızda 1
Obr´azek 5.2: Zkuˇsebn´ı j´ızda 2
33
´ ´I KAPITOLA 5. TESTOVAN
34
5.4
Jednotkov´ e testov´ an´ı
Jednotkov´e testy jsem zamˇeˇril na otestov´an´ı tˇr´ıd OBDMessage, PostMetrocar a GetReservation. K testov´ an´ı jsem pouˇzil knihovnu Mockito [36], jelikoˇz umoˇzn ˇuje mockov´an´ı tˇr´ıd, neboli simulaci chov´ an´ı tˇr´ıdy. Avˇsak tak´e umoˇzn ˇuje nasazen´ı ˇspi´ona na tˇr´ıdu, d´ıky ˇcemuˇz se n´aslednˇe m˚ uˇzeme zjistit, zda nˇejak´e metody byly volan´e s parametry, kter´e vyˇzadujeme, ˇci pr´avˇe naopak, ˇze nˇejak´e metody nebyly volan´e. Napˇr´ıklad kdyˇz se vyskytne chyba, tak nechceme smazat z´ aznamy z datab´ aze a d´ıky t´eto knihovnˇe toto m˚ uˇzeme nasimulovat i n´aslednˇe ovˇeˇrit. Na obr´ azku 5.3 je vidˇet v´ ysledek jednotkov´ ych test˚ u.
Obr´ azek 5.3: Jednotkov´ y test
Kapitola 6
Z´ avˇ er C´ıle pr´ ace byly splnˇeny. Byly vytvoˇreny a otestov´any moduly pro z´ısk´av´an´ı dat z OBD2 standardu automobilu, z´ısk´ av´ an´ı GPS souˇradnic a odesl´an´ı z´ıskan´ ych dat na server Metrocar. Oproti zad´ an´ı byly nav´ıc implementov´any poˇzadavky, vznikl´e bˇehem konzultac´ı, a to modul pro z´ısk´ an´ı rezervac´ı ze serveru Metrocar, imobilizace vozidla a vytvoˇren´ı knihovny, kter´ a by vˇsechny zm´ınˇen´e moduly spojovala, kromˇe u ´pln´e implementace imobilizace vozidla, kter´ a je ve st´adiu proof of concept. Modul pro z´ısk´av´an´ı informac´ı od OBD jednotky je jednoduˇse rozˇs´ıˇriteln´ y o dalˇs´ı moˇzn´e z´ısk´ avan´e u ´daje. Pˇr´ınosem t´eto pr´ ace pro projekt Metrocar je vytvoˇren´ı funkˇcn´ı palubn´ı jednotky, kter´ a je schopna z´ısk´ av´ an´ı re´ aln´ ych dat pro server Metrocar. Aplikace se z´akladn´ım zobrazen´ım, p˚ uvodnˇe urˇcen´ ym pouze pro testov´an´ı knihovny, m˚ uˇze b´ yt d´ale pouˇzita jako provizorn´ı palubn´ı jednotka pro testov´ an´ı serveru Metrocar. Dalˇs´ım pokraˇcov´ an´ım t´eto pr´ace by mˇela b´ yt u ´pln´a implementace imobilizace vozidla. Vytvoˇren´ı ˇci pˇr´ıpadn´e pˇredˇel´ an´ı z´akladn´ıho zobrazen´ı pro splnˇen´ı poˇzadavk˚ u na palubn´ı jednotku. Rozˇs´ıˇren´ı OBD2 modulu o moˇznost z´ısk´av´an´ı zaznamenan´ ych poruch vozidla jednotkou motoru a jejich n´ asledn´ a prezentace.
35
36
´ ER ˇ KAPITOLA 6. ZAV
Literatura [1] Car-Sharing [online]. [cit. 26. 4. 2013]. Dostupn´e z: http://cs.wikipedia.org/wiki/ Car-sharing. [2] Android [online]. [cit. 7. 4. 2013]. Dostupn´e z: http://www.android.com/. [3] Arduino [online]. [cit. 26. 4. 2013]. arduinoBoardUno. [4] Arduino IDE [online]. [cit. 5. 5. 2013]. Software.
Dostupn´e z: http://arduino.cc/en/Main/ Dostupn´e z: http://arduino.cc/en/Main/
[5] autonapul.cz [online]. [cit. 7. 4. 2013]. Dostupn´e z: http://autonapul.cz/. [6] autonapul.org [online]. [cit. 26. 4. 2013]. Dostupn´e z: http://autonapul.org/. [7] C2G Logic [online]. [cit. 14. 4. 2013]. Dostupn´e z: http://www.c2g-logic.com/. [8] ISO 15765 CAN [online]. [cit. 14. 4. 2013]. Dostupn´e z: http://www.iso.org/iso/ home/store/catalogue_tc/catalogue_detail.htm?csnumber=54498. [9] Car2go [online]. [cit. 26. 4. 2013]. Dostupn´e z: https://www.car2go.com/. [10] Convadis [online]. [cit. 14. 4. 2013]. Dostupn´e z: http://www.convadis.ch/pages/en/ communication/ccom.php. [11] Directive 98/69/EC [online]. [cit. 14. 4. 2013]. Dostupn´e z: http://eur-lex.europa. eu/LexUriServ/LexUriServ.do?uri=CONSLEG:1998L0069:19981228:EN:PDF. [12] Django [online]. [cit. 14. 4. 2013]. Dostupn´e z: https://www.djangoproject.com/. [13] Drupal [online]. [cit. 14. 4. 2013]. Dostupn´e z: http://www.drupal.cz/. [14] Eclipse ADT [online]. [cit. 5. 5. 2013]. Dostupn´e z: http://developer.android.com/ tools/sdk/eclipse-adt.html. [15] Eileo [online]. [cit. 14. 4. 2013]. Dostupn´e z: http://www.eileo.com/. [16] ELM 327 [online]. [cit. 14. 4. 2013]. Dostupn´e z: http://dx.com/p/ obdii-bluetooth-car-diagnostic-cable-black-blue-orange-dc-12v-42825? rt=1&p=6&m=1&r=4&k=1&t=1&s=&u=42825.
37
38
LITERATURA
[17] ELM 327 Datasheet [online]. [cit. 14. 4. 2013]. Dostupn´e z: http://elmelectronics. com/DSheets/ELM327DS.pdf. [18] European On Board Diagnostics [online]. [cit. 14. 4. 2013]. Dostupn´e z: http://europe. delphi-dso.com/uk/members/eobd.htm. [19] F and B Company [online]. [cit. 14. 4. 2013]. Dostupn´e z: http://www.fbcom.cz/. [20] 504 Gateway Timeout [online]. [cit. 4. 5. 2013]. Dostupn´e z: http://www.checkupdown. com/status/E504.htm. [21] HttpGet [online]. [cit. 21. 4. 2013]. Dostupn´e z: http://developer.android.com/ reference/org/apache/http/client/methods/HttpGet.html. [22] HttpPost [online]. [cit. 21. 4. 2013]. Dostupn´e z: http://developer.android.com/ reference/org/apache/http/client/methods/HttpPost.html. [23] Invers [online]. [cit. 14. 4. 2013]. Dostupn´e z: http://www.invers.com/en/concepts/ index.html. [24] ISO 14230 [online]. [cit. 14. 4. 2013]. Dostupn´e z: http://www.iso.org/iso/ catalogue_detail.htm?csnumber=55592. [25] ISO 8601 [online]. [cit. 21. 4. 2013]. NOTE-datetime.
Dostupn´e z: http://www.w3.org/TR/
[26] ISO 9141-2 [online]. [cit. 14. 4. 2013]. Dostupn´e z: http://www.iso.org/iso/ catalogue_detail.htm?csnumber=24607. [27] Java [online]. [cit. 14. 4. 2013]. Dostupn´e z: http://www.oracle.com/technetwork/ java/javase/overview/index.html/. [28] JSON [online]. [cit. 21. 4. 2013]. Dostupn´e z: http://developer.android.com/ reference/org/json/package-summary.html. [29] ISO 8601 [online]. [cit. 29. 4. 2013]. Dostupn´e z: http://developer.android.com/ reference/android/location/LocationManager.html. [30] Asus M2N [online]. [cit. 14. 4. 2013]. Motherboards/M2N/.
Dostupn´e z: https://www.asus.com/
[31] Z´ avˇereˇcn´ a zpr´ ava z projekt Metrocar letn´ı semestr 2009/2010 aˇz zimn´ı semestr 2010/2011 [online]. [cit. 14. 4. 2013]. Dostupn´e z: https://www. assembla.com/spaces/metrocar/documents/cEdGsqzq4r4kcFeJe5cbLr/download/ cEdGsqzq4r4kcFeJe5cbLr. [32] Z´ avˇereˇcn´ a zpr´ ava z projekt Metrocar zimn´ı semestr 2009/2010 [online]. [cit. 14. 4. 2013]. Dostupn´e z: https://www.assembla.com/spaces/metrocar/documents/aT1N08g_ ar35nSeJe5avMc/download/aT1N08g_ar35nSeJe5avMc.
LITERATURA
39
[33] Z´ avˇereˇcn´ a zpr´ ava z projekt Metrocar letn´ı semestr 2010/2011 [online]. [cit. 14. 4. 2013]. Dostupn´e z: https://www.assembla.com/spaces/metrocar/documents/ d8CYMOEpqr4lnyeJe4gwI3/download/d8CYMOEpqr4lnyeJe4gwI3. [34] Projekt Metrocar zimn´ı semestr 2011/2012 [online]. [cit. 14. 4. 2013]. Dostupn´e z: https: //www.assembla.com/spaces/wagnejan_metrocar/wiki/SI2_-_Home. [35] Projekt Metrocar zimn´ı semestr 2012/2013 [online]. [cit. 14. 4. 2013]. Dostupn´e z: https: //www.assembla.com/spaces/wagnejan_metrocar/wiki/SI2_-_2012_-_Home. [36] Mockito [online]. [cit. 4. 5. 2013]. Dostupn´e z: https://code.google.com/p/mockito/. [37] OBD2 [online]. [cit. 7. 4. 2013]. On-board_diagnostics.
Dostupn´e z: http://en.wikipedia.org/wiki/
[38] OBD2 Pids [online]. [cit. 14. 4. 2013]. Dostupn´e z: http://en.wikipedia.org/wiki/ OBD-II_PIDs. [39] OBDSim [online]. [cit. 29. 4. 2013]. Dostupn´e z: http://icculus.org/obdgpslogger/ obdsim.html. [40] OBDSim ke Staˇzen´ı [online]. [cit. 4. 5. 2013]. Dostupn´e z: https://www.assembla.com/ spaces/wagnejan_metrocar/wiki/OBD2_simul%C3%A1torl. [41] Opencar Network [online]. [cit. 14. 4. 2013]. Dostupn´e z: http://www.opencar.net/. [42] Patriot [online]. [cit. 14. 4. 2013]. Dostupn´e z: http://www.knihajizd.info/. [43] PHP [online]. [cit. 14. 4. 2013]. Dostupn´e z: http://php.net/. [44] Python [online]. [cit. 14. 4. 2013]. Dostupn´e z: http://www.python.org/. [45] RS232 [online]. [cit. 14. 4. 2013]. RS-232.
Dostupn´e z: http://cs.wikipedia.org/wiki/
[46] Society of Automotive Engineers [online]. [cit. 14. 4. 2013]. Dostupn´e z: http://www. sae.org/. [47] Andriod SQL Lite [online]. [cit. 5. 5. 2013]. Dostupn´e z: http://developer.android. com/reference/android/database/sqlite/SQLiteDatabase.html. [48] Siemens XT75 [online]. [cit. 14. 4. 2013]. gsm-75-xt__p_10817,40_88.
Dostupn´e z: http://www.seapraha.cz/
[49] Zipcar [online]. [cit. 26. 4. 2013]. Dostupn´e z: http://www.zipcar.com/.
40
LITERATURA
Kapitola 7
Seznam pouˇ zit´ ych zkratek GPS Global Positioning System ECU Engine control unit EOBD European On Board Diagnostic RFID Radio Frequency Identification
41
42
ˇ YCH ´ KAPITOLA 7. SEZNAM POUZIT ZKRATEK
Kapitola 8
Instalaˇ cn´ı pˇ r´ıruˇ cka 8.1
Hardwarov´ e poˇ zadavky
Aplikace vyˇzaduje minim´ alnˇe zaˇr´ızen´ı se syst´emem Android 2.3 (GINGERBREAD) ˇci vyˇsˇs´ım, coˇz odpov´ıd´ a API levelu 9 a vyˇsˇs´ımu. Zaˇr´ızen´ı tak´e mus´ı obsahovat Bluetooth.
8.2
Instalaˇ cn´ı pˇ r´ıruˇ cka
K instalaci aplikace staˇc´ı do zaˇr´ızen´ı na platformˇe Android st´ahnout soubor MetrocarView.apk, uloˇzen´ y na pˇriloˇzen´em CD. N´aslednˇe spustit instalaci tohoto souboru. Pˇri instalaci aplikace bude uˇzivatel upozornˇen, ˇze aplikace z´ısk´av´a pˇr´ıstup k nˇekolika opr´avnˇen´ım, napˇr´ıklad pˇresn´ a poloha, pˇribliˇzn´a poloha, u ´pln´ y pˇr´ıstup k s´ıti atd.
43
44
ˇ ´I PR ˇ ´IRUCKA ˇ KAPITOLA 8. INSTALACN
Kapitola 9
Uˇ zivatelsk´ a pˇ r´ıruˇ cka 9.1
Z´ akladn´ı nastaven´ı aplikace
Pˇred startem aplikace je potˇreba sp´arovat telefon s OBD jednotkou pomoc´ı Bluetooth, kterou m˚ uˇze pˇredstavovat jak ObdSim[39] spuˇstˇen´ y na poˇc´ıtaˇci s Bluetooth, tak i zaˇr´ızen´ı typu ELM327 pˇripojen´e k automobilu. Po startu aplikace je nejdˇr´ıve vidˇet hlavn´ı obrazovka 9.1. Nejdˇr´ıve je tˇreba nastavit Unit id a Secret key, kter´e odpov´ıd´ a re´aln´e jednotce na serveru Metrocar. Toto lze udˇelat z hlavn´ı obrazovky klepnut´ım na Settings.
Obr´azek 9.1: Hlavn´ı Obrazovka D´ale je tˇreba vybrat OBD jednotku, ke kter´e se aplikace bude pˇripojovat. To lze udˇelat po klepnut´ı na Bluetooth Settings. V seznamu se objev´ı pouze Bluetooth zaˇr´ızen´ı, se kter´ ymi je zaˇr´ızen´ı sp´ arovan´e. Klepnut´ım na urˇcit´ y z´aznam vyberu zadan´e zaˇr´ızen´ı.
9.2
Nastaven´ı Imobilizace
V pˇr´ıpadˇe, ˇze chci pouˇz´ıvat imobilizaci vozidla, nejdˇr´ıve vyberu Bluetooth zaˇr´ızen´ı pro imobilizaci vozidla, jako to bylo u OBD jednotky, klepnut´ım na poloˇzku Lock Bluetooth
45
ˇ ´ PR ˇ ´IRUCKA ˇ KAPITOLA 9. UZIVATELSK A
46
Settings. Do samotn´eho nastaven´ı Imobilizace 9.2 se dostaneme po klepnut´ı na Tlaˇc´ıtko Lock na hlavn´ı obrazovce. Pot´e jiˇz m˚ uˇzu nastavit heslo pro imobilizaˇcn´ı jednotku, a to naps´an´ım hesla do pol´ıˇcka u Set Pass a n´aslednˇe kliknut´ım na tlaˇc´ıtko Set. V pˇr´ıpadˇe, ˇze chcete heslo zmˇenit, staˇc´ı vyplnit star´e heslo do pol´ıˇcka Reset Old Password a nov´eho do pol´ıˇcka Reset New Password, n´ aslednˇe kliknut´ım na tlaˇc´ıtko Reset provedete zmˇenu hesla. Tlaˇc´ıtko Test slouˇz´ı k otestov´ an´ı zadan´eho hesla. Tlaˇc´ıtka Open a Close slouˇz´ı k imobilizaci a znovu zprovoznˇen´ı imobilizaˇcn´ı jednotky neboli k rozsv´ıcen´ı a zhasnut´ı LED diody v m´em pˇr´ıpadˇe. Pokud se m´ a imobilizace pouˇz´ıt v hlavn´ı ˇc´asti aplikace, mus´ı b´ yt zaˇskrt´avac´ı pol´ıˇcko Lock Enabled zaˇskrtnut´e.
Obr´ azek 9.2: Nastaven´ı imobilizaˇcn´ıho zaˇr´ızen´ı
9.3
Zobrazen´ı u ´ daj˚ u
Tlaˇc´ıtko Enter Database uk´ aˇze veˇsker´e uloˇzen´e z´aznamy a tlaˇc´ıtko Reservation zase uk´aˇze veˇsker´e rezervace.
´ ´I NASTAVEN´I ZE SOUBORU 9.4. NAHRAN
9.4
47
Nahr´ an´ı nastaven´ı ze souboru
Po kliknut´ı na tlaˇc´ıtko Settings from txt na hlavn´ı obrazovce se dostaneme na obrazovku 9.3, kde m˚ uˇzeme nastavit n´ asleduj´ıc´ı vˇeci tak´e pomoc´ı souboru metrocar.txt, kter´ y je v extern´ım u ´loˇziˇsti zaˇr´ızen´ı. Toto nastaven´ı je voliteln´e, jinak je nastaveno z´akladn´ı nastaven´ı.
Obr´ azek 9.3: Nastaven´ı ze souboru txt
48
ˇ ´ PR ˇ ´IRUCKA ˇ KAPITOLA 9. UZIVATELSK A
unit id Id jednotky secret key Heslo jednotky lock key Heslo pro imobilizaci do log gpstracker Logovat stavy tˇr´ıdy GPSTracker do log get Logovat stavy tˇr´ıdy GetReservation do log post Logovat stavy tˇr´ıdy PostMetrocar do log unitengine Logovat stavy tˇr´ıdy UnitEngine do log maincore Logovat stavy tˇr´ıdy MainCore do log checkinternetconnection Logovat stavy tˇr´ıdy CheckInternetConnection do log lockengine Logovat stavy tˇr´ıdy LockEngine do log databasecontroller Logovat stavy tˇr´ıdy DatabaseController do log obdmessage Logovat stavy tˇr´ıdy ObdMesssage ˇ v minut´ ach, ve kter´em bude prov´adˇeno odesl´an´ı informac´ı authorized post period Cas pro autorizovan´eho uˇzivatele ˇ v minut´ authorized get period Cas ach, ve kter´em bude prov´adˇeno z´ısk´av´an´ı rezervac´ı pro autorizovan´eho uˇzivatele ˇ v minut´ach, ve kter´em bude prov´adˇeno odesl´an´ı informac´ı unauthorized post period Cas kdyˇz nen´ı uˇzivatel pˇrihl´ aˇsen ˇ v minut´ach, ve kter´em bude prov´adˇeno z´ısk´av´an´ı rezervac´ı unauthorized get period Cas kdyˇz nen´ı uˇzivatel pˇrihl´ aˇsen address get Adresa serveru pro z´ısk´ av´ an´ı rezervac´ı address post Adresa serveru pro odes´ıl´an´ı u ´daj˚ u ˇ open advance Casov´ y pˇredstih, ve kter´em bude rezervace uzn´ana za aktivn´ı v ms ˇ po skonˇcen´ı rezervace, ve kter´em bude st´ale rezervace br´ana jako aktivn´ı end advance Cas v ms min time bw updates Minim´ aln´ı ˇcas pro aktualizace polohy v ms min distance change for server Vzd´ alenost pro aktualizace polohy v metrech post limit Maxim´ aln´ı poˇcet u ´daj˚ u, odeslan´ ych najednou na server
ˇ EN ˇ ´I APLIKACE 9.5. SPUST
49
Uk´ azka z´ akladn´ıho nastaven´ı do_log_gpstracker=true do_log_get=true do_log_post=true do_log_unitengine=true do_log_maincore=true do_log_checkinternetconnection=true do_log_lockengine=true do_log_databasecontroller=true do_log_obdmessage=true authorized_post_period=1 authorized_get_period=1 unauthorized_post_period=1 unauthorized_get_period=1 address_get=http://admin.autonapul.cz/api/reservations/ address_post=http://admin.autonapul.cz/api/log/ open_advance=7000000000 end_advance=0 min_time_bw_updates=100 min_distance_change_for_server=1 post_limit=100
9.5
Spuˇ stˇ en´ı aplikace
Spuˇstˇen´ı hlavn´ı ˇc´ asti aplikace provedeme stisknut´ım tlaˇc´ıtka Start Recording na hlavn´ı obrazovce. T´ım se dostaneme na obrazovku 9.4, kde jsi m˚ uˇzeme zkontrolovat, zda je vˇse spr´avnˇe nastaveno. Kliknut´ım na tlaˇc´ıtko Test m˚ uˇzeme otestovat spojen´ı se serverem Metrocar, spojen´ı s OBD jednotkou a funkˇcnost imobilizaˇcn´ı jednotky v pˇr´ıpadˇe, ˇze je pouˇzita.
Obr´azek 9.4: Kontrola Nastaven´ı Po stisknut´ı tlaˇc´ıtka Continue se jiˇz dostaneme na obrazovku 9.5, kde ˇcek´ame na autorizaci uˇzivatele. V tuto dobu jiˇz v nastaven´em intervalu aplikace z´ısk´av´a rezervace ze serveru
50
ˇ ´ PR ˇ ´IRUCKA ˇ KAPITOLA 9. UZIVATELSK A
Metrocar. Z t´eto obrazovky se na hlavn´ı lze dostat pot´e, co nastav´ım User Name na zadan´e User ID jednotky, Password na Secret Key jednotky a stisknu tlaˇc´ıtko Demobilize unit. Kdyˇz nastav´ım User Name a Password na u ´daje aktivn´ı rezervace a stisknu Demobilize Unit, tak jiˇz spust´ım jednotku.
ˇ an´ı na autorizaci uˇzivatele Obr´ azek 9.5: Cek´ Na obrazovce 9.6 pro autorizovan´eho uˇzivatele jiˇz vid´ım z´akladn´ı u ´daje.
Obr´ azek 9.6: Autorizovan´ y uˇzivatel
Kapitola 10
Obsah pˇ riloˇ zen´ eho CD
51
52
ˇ ˇ EHO ´ KAPITOLA 10. OBSAH PRILO ZEN CD
readme.txt ................................................ struˇcn´ y popis obsahu CD src impl.................................................zdrojov´e k´ody implementace MetrocarEngine ........................... Eclipse projekt obsahuj´ıc´ı knihovnu MetrocarView.....................Eclipse projekt obsahuj´ıc´ı z´akladn´ı zobrazen´ı MetrocarViewTest................Eclipse projekt na jednotkov´e testy knihovny thesis....................................zdrojov´a forma pr´ace ve form´atu LATEX exe.....................................adres´aˇr se spustitelnou formou implementace MainView.apk............Aplikace se z´akladn´ım zobrazen´ım pro platformu Android text.....................................................................text pr´ace thesis.pdf...........................................text pr´ace ve form´atu PDF ObdSim...........................................................ObdSim simul´ator arduino....................................adres´aˇr se zdrojov´ ym k´odem pro Arduino javadoc....................................................Javadoc MetrocarEngine metrocar.eap .................................................. Enterprise Architect