Praktyczne podejście do problemu Home Automation
Transkrypt
Praktyczne podejście do problemu Home Automation
Sławomir Jaros praca dyplomowa magisterska ( inżynierska ) Praktyczne podejście do problemu Home Automation – Zastosowanie jako urządzeń sterujących popularnych telefonów wyposażonych w OS Symbian. Promotor: Dr inż. Michał Morawski Dyplomant: Sławomir Jaros nr albumu 116696 Łódź, 17.09.2007 r. 1 SPIS TREŚCI Wykaz skrótów ..................................................................................................................4 Wykaz rysunków ...............................................................................................................6 Wykaz tabel.......................................................................................................................7 1 2 3 4 5 WSTĘP ......................................................................................................................8 1.1 Idea Inteligentnego Budynku ..............................................................................8 1.2 Definicja Inteligentnego Budynku ......................................................................9 1.3 Historia powstania i ewaluacja Inteligentnego Budynku ...................................10 Cel i zakres pracy.....................................................................................................11 Inteligentny Budynek ...............................................................................................12 3.1 Inteligentny Budynek – zastosowanie ...............................................................12 3.2 Sieci domowe w kontekście Inteligentnego Budynku........................................15 3.3 Podział sieci domowych ze względy na użyte medium. ....................................16 3.3.1 Sieci z nowym okablowaniem...................................................................16 3.3.2 Sieci bez nowego okablowania .................................................................18 3.3.3 Sieci bezprzewodowe................................................................................23 3.3.3.1 IrDA .....................................................................................................23 3.3.3.2 HomeRF ...............................................................................................27 3.3.3.3 ZigBee (IEEE 802.15.4)........................................................................28 3.3.3.4 Bluetooth ..............................................................................................31 Symbian – system operacyjny ..................................................................................37 4.1 Informacja ogólne.............................................................................................37 4.2 Dlaczego Symbian? ..........................................................................................38 4.3 Interfejsy w Symbianie .....................................................................................38 4.4 SDK i dostępne IDE pod Symbiana ..................................................................39 4.5 Podstawy Symbiana (różnice pomiędzy Symbianem a C++).............................40 4.5.1 Podstawowe typy danych..........................................................................40 4.5.2 Nazewnictwo klas.....................................................................................41 4.5.3 Łańcuchy tekstowe i deskryptory ..............................................................42 4.5.4 Mechanizm opuszczeń (Leaves)................................................................44 Projekt .....................................................................................................................45 5.1 Idea projektu ....................................................................................................45 5.2 Budowa projektu ..............................................................................................46 5.2.1 Aplikacja na telefon komórkowy ..............................................................47 5.2.1.1 Budowa i elementy składające się na aplikację......................................47 5.2.1.2 Struktura katalogów projektu ................................................................48 5.2.1.3 Podział aplikacji na podstawowe pliki...................................................49 5.2.1.4 Rodzaje plików w projekcie ..................................................................50 5.2.1.5 System identyfikatorów UID.................................................................51 5.2.1.6 Zasada działania aplikacji .....................................................................52 5.2.1.7 Bezpieczeństwo ....................................................................................55 5.2.1.8 Identyfikator UUID...............................................................................56 5.2.1.9 Protokoły wyszukiwania usług..............................................................57 5.2.2 Aplikacja na PC ........................................................................................59 5.2.3 Aplikacja na Game Board .........................................................................61 5.2.4 Profile zastosowań Bluetooth....................................................................63 5.2.5 Instrukcja obsługi......................................................................................65 5.2.5.1 Wymagania sprzętowe ..........................................................................65 2 5.2.5.2 Instalacja...............................................................................................65 5.2.5.3 Opis szczegółowy .................................................................................66 5.3 Standardy Bluetooth na komputery PC ............................................................67 5.4 Dlaczego C++ ..................................................................................................68 6 Dalsze kierunki rozwoju...........................................................................................68 7 Wnioski i podsumowanie .........................................................................................70 BIBLIOGRAFIA .............................................................................................................72 Dodatek A .......................................................................................................................75 Zawartość nośnika CD-ROM .......................................................................................75 Dodatek B........................................................................................................................76 Raport skrócony wygenerowany przez System Antyplagiatowy Plagiat.pl, za pomocą witryny http://plagiat.pl................................................................................................76 3 Wykaz skrótów HVAC - heating, ventilation and air conditioning EIBG - European Intelligent Building Group IrDA - Infrared Data Association VFIR - Very Fast Infrared FIR - Fast Infrared SIR - Serial Infrared AIr - Advanced Infrared. HomeRF - Home Radio Frequency HomePNA - Home PhoneLine Alliance CEBus - Customer Electronic Bus RF - Radio Frequency PLC - PowerLine Communication EIB - European Installation Bus EIBA - European Installation BUS Association CRC - Cyclic Redundancy Check IrLAP - Infrared Link Access Protocol IrLMP - Infrared Link Management Protocol IAS - Intention Access Service IrOBEX - Object Exchange Protocol IrLAN - Local Area Network IrMC - Infrared Mobile Communications IrTran-P - Infrared Transfer Picture SWAP - Shared Wireless Access Protocol CSMA/CA - Carrier Sense Multiple Access/Collision Avoidance PDA - Personal Digital Assistant CSMA/CA - Carrier Sense Multiple Access With Collision Avoidance MAC - Medium Access Control TDMA - Time Division Multiple Access ADS - Asynchronous Data Service PADS - Priority Asynchronous Data Service DSSS - Direct Sequence Spread Spectrum SSCS - Service-Specific Convergence Sublayer 4 LLC - Link Layer Control LR - WPAN - Low-Rate Wireless Personal Area Networks IG - Special Interest Group ISM - Industrial Scientific Medical TDD - Time Division Duplex CRC - Cyclic Redundancy Check HCI - Host Control Interface TCS - Telephony Control Specification RFCOMM – Serial Port Emulation SDP - Service Discovery Protocol IDE - Integrated Development Environment SDK - Software Development Kit AIF - Application Information File MIME - Multipurpose Internet Mail Extension MBM - Multi Bitmap UID - Unique Identification Number URL - Uniform Resource Locator UUID - Universally Unique Identifier SLM - Salutation Manager SLP2 - Service Location Protocol, Version 2 SSDP - Simple Service Discovery Protocol PDP - Pervasive Discovery Protocol SSDS - Secure Service Discovery Service PDU - Protocol Data Unit SDDB - Service Discovery Database SPP - Serial Port Profile GCC - GNU Compiler Collection PIN - Personal Identification Number DAC - Device Access Code GOEP - Generic Object Exchange Profile FTP - File Transfer Profile OPP - Object Push Profile SP - Synchronization Profile 5 Wykaz rysunków 1. Schemat ideowy Inteligentnego Budynku 2 Schemat przedstawiający podsystemy Inteligentnego Budynku 3. Wykaz technologii dla sieci domowych 4. Przekrój przewodu komunikacyjnego w EIB 5.Możliwe topologie w EIB 6. Idea sieci HomePNA 7. Prędkości transmisji w porównaniu z odległościami w IrDA i Bluetooth 8. Stos protokołów IrDA 9. Specyfikacja HomeRF 10. Ulokowanie kanałów standardu 802.15.4. 11. Stos protokołów ZigBee 12. Topologie sieci ZigBee 13. Rozmieszczenie kanałów w systemie Bluetooth 14. Pikosieć: Jedno urządzenie Master (M) i cztery urządzenia Slave (S) 15. Dwie pikosieci mogą występować na jednym obszarze, nie zakłócając się nawzajem. 16. Pikosieci mogą tworzyć sieci rozproszone (scatternet). 17. Stos protokołów Bluetooth 18. Typy deskryptorów w Symbianie 19. Idea projektu 20. Budowa typowej aplikacji na Symbian OS 21. Proces powstawania pliku SIS 22. Wymiana klucza 23. Protokoły uczestniczące w transakcji SDP 24. LPC2104 Color LCD Game Board 25. Wariant rozbudowy projektu 6 Wykaz tabel Tab.1 Podstawowe parametry standardu ZigBee Tab.2 Przepustowość kanałów transmisyjnych Tab.3. Środowiska programistyczne pod Symbian OS (IDE) Tab.4. Podstawowe typy danych w systemie Symbian 7 1 WSTĘP 1.1 Idea Inteligentnego Budynku Coraz częściej usłyszeć można o zastosowaniach nowoczesnej technologii w różnych dziedzinach przemysłu. Bardzo szybko rozwijająca się technika pozwala zastosować innowacyjne technologie w budynkach, w których, na co dzień przebywamy. Poprawia to komfort codziennego życia, nasze bezpieczeństwo a także daje to oszczędność w eksploatacji. Jeszcze kilkanaście lat temu instalacja pozwalająca na inteligentne sterowanie urządzeniami znajdującymi się w budynku była mało realna. Obecnie tradycyjne rozwiązania powoli zostają wypychane przez standardy umożliwiające inteligentne sterowanie budynkiem (rozdz. 2). Wyobraźmy sobie sytuację, jak po trudach codziennej pracy wracamy do domu. Po wejściu, włącza się przyjemne oświetlenie, włącza się muzyka, film lub jakiś inny stosowany program TV dostosowany do naszego gustu. Temperatura w całym domu wyregulowana jest na optymalną wartość, odpowiadającą wszystkim mieszkańcom domu. Nie jest ani za zimno ani za gorąco. Zasiadając przy telewizorze w naszym ulubionym salonie, nie musimy martwić się o to, że poziom natężenia światła jest niezadowalający, wystarczy jedno naciśnięcie przycisku „tryb wieczorowy” na pilocie, komórce lub innym urządzeniu sterującym lub nawet jedno słowo żeby włączyć wcześniej zdefiniowaną wartość natężenia światła powodując natychmiastową zmianę klimatu w pokoju. Żaluzje okienne przysłonią się automatycznie w zależności od nasłonecznienia pokoju [3, 4]. W dzisiejszych czasach mało kto ma czas na pielęgnację własnego ogródka, a w szczególności na jego codzienne podlewanie. Nie musimy się już o to martwić, gdyż w zależności od panujących warunków pogodowych, dom sam o to zadba. Wychodząc z domu, przekręcając klucz w naszych drzwiach automatycznie włącza się system alarmowy, opuszczają się rolety w oknach, obniża się temperatura w poszczególnych pokojach, niezgaszone lampy same się wyłączają, sprzęt AGD i RTV zostaje automatycznie wyłączony [4]. Oprócz wygody, tego typu czynności pozwalają nam zaoszczędzić znaczną ilość energii, co nie jest wcale bez znaczenia w dzisiejszych czasach. Te wszystkie zautomatyzowane czynności to właśnie idea Inteligentnego Domu. 8 Rys.1 Schemat ideowy Inteligentnego Budynku [http://dqm.pl/_img/inteligentny_bud.jpg] 1.2 Definicja Inteligentnego Budynku Inteligentny budynek (również inteligentny dom, system zarządzania budynkiem) – jest określeniem wysoko zaawansowanego technicznie budynku. Zdefiniowanie samego pojęcia nie jest rzeczą prostą i spotkać można wiele określeń. [2].Według EIBG Budynek Inteligentny to budynek, który maksymalizuje efektywność osób go wykorzystujących i pozwala efektywnie zarządzać zasobami przy minimalnych kosztach [2]. Według innej definicji Budynek Inteligentny posiada zdolność adaptacji do nowej technologii i zmieniających się potrzeb organizacji jego użytkowników [2]. Jeszcze inni uważają, że Inteligentny Budynek to taki, w którym można kontrolować cały budynek za pomocą kilku przycisków lub pilota. Uogólniając temat definicji Inteligentnego Budynku uważam, że Inteligentne Budynki powinny mieć następujące cechy: • Integracja systemów teletechnicznych w budynku • Centralny system zarządzania i nadzoru • Kanał komunikacyjny umożliwiający sterowanie urządzeniami w budynku 9 • Efektywne zarządzanie przestrzenią budynku w celu minimalizacji kosztów eksploatacji 1.3 Historia powstania i ewaluacja Inteligentnego Budynku Zagadnienie sterowania różnymi urządzeniami zarówno w danym pomieszczeniu jak i jego otoczeniu jest znane od dawna [2]. Sam pomysł Inteligentnych Budynków wywodzi się ze Stanów Zjednoczonych. Początki rozwoju przypadają na wczesne lata 70te. W tym okresie poddano elektronicznym udoskonaleniom systemy ogrzewania, wentylacji i klimatyzacji (ang. HVAC) oraz systemy oświetleniowe. Głównymi powodami tych zmian były względy ekonomiczne, tj. konieczność ograniczenia zużycia energii oraz usprawnienie obsługi nowo powstających, coraz to większych biurowców [2]. Sprecyzowane pojecie Inteligentnego Budynku pojawiło się 10 lat później, w latach 80-tych, gdzie nastąpiła stopniowa automatyzacja różnych systemów, tj. system kontroli dostępu, system przeciwpożarowy, system sterowania windami itp.[2]. Zaczęto intensywnie myśleć nad koordynacją działania elementów poszczególnych systemów. Sukcesywna integracja różnych technologii w latach 90-tych doprowadziła do powstania współczesnych Budynków Inteligentnych. Obecnie wszystkie systemy w budynku mają strukturę sieciową. Trzeba powiedzieć o tym, że niektóre systemy bywają celowo rozdzielone, jednak są kontrolowane przez jeden centralny punkt, aby ułatwić ich współdziałanie. Przykładami takich systemów zajmę się w rozdziale 3. 10 2 Cel i zakres pracy Cel pracy można podzielić na dwie części. Część pierwsza to poznanie systemu operacyjnego Symbian OS, który obok Windows Mobile rozpowszechnionym systemem operacyjnym na telefony komórkowe. jest najbardziej Precyzując ten rozległy temat, celem jest zapoznanie ze sposobami tworzenia i uruchamiania oprogramowania na tym systemie. Druga część polega na wykorzystaniu napisanego oprogramowania do sterowania urządzeniami w oparciu o protokół 802.15.1 (Bluetooth). Zakres pracy obejmuje opisanie zasady tworzenia aplikacji komunikacyjnych dla OS Symbian, zapoznanie się z protokołem Bluetooth, oraz opracowanie protokołu wymiany informacji pomiędzy różnego typu urządzeniami wyposażonymi w interfejs Bluetooth ze szczególnym uwzględnieniem problemów niezawodności i bezpieczeństwa transmisji, ale także wygody użytkownika systemu. 11 3 Inteligentny Budynek 3.1 Inteligentny Budynek – zastosowanie Można budować całe systemy złożone z przeróżnych sensorów, czujników. Oczywiście można to wszystko usystematyzować, w poszczególne podsystemy, które w krótki sposób postaram się scharakteryzować. Rys.2 Schemat przedstawiający podsystemy Inteligentnego Budynku [http://www.mikroenergetyka.com.pl/images/systemy/eib2.jpg] Do najbardziej popularnych podsystemów zalicza się: • System sterowania ogrzewaniem Zastosowanie takiego systemu jest dosyć oczywiste. Jego zadaniem jest odpowiednia reakcja na zbyt niską lub zbyt wysoką temperaturę panującą w danym pomieszczeniu. Polega to na podgrzewaniu względnie obniżaniu temperatury poszczególnych pokoi 12 [6]. Nie trudno wyobrazić sobie sytuację gdzie dwa pokoje usytuowane są w różnych częściach domu, jeden od wschodu słońca, a drugi od zachodu. Wydawałoby się, że temperatura w tych pomieszczeniach musi być różna, uzależniona od położenia tych pokoi. Wcale nie musi tak być, gdyż taki system zadba o to, aby temperatura we wszystkich pokojach była taka sama, dostosowana do naszych wymagań. [4] • System sterowania oświetleniem We wstępie mojej pracy wspomniałem o tym systemie, który jest odpowiedzialny za automatyczną regulację oświetlenia zgodną z upodobaniami mieszkańców. Najprostsze systemy tego typu umożliwiają zaprogramowanie kilku nastrojów oświetleniowych w poszczególnych pomieszczeniach [6]. Zaawansowane systemy umożliwiają jeszcze bardziej fantazyjne rozwiązania [5]. Możemy zaprogramować ściemnianie lamp, tak żeby w określonych godzinach wieczorowych światło na korytarzu nie oślepiało nas. Często zdarza się, że wracając z zakupów, wchodząc do domu mamy zajęte ręce. Otwierając zamek w drzwiach, system automatycznie wykryje naszą obecność i podejmie stosowną decyzję o włączeniu światła w pokoju, w którym się znaleźliśmy [5][6]. • System symulacji obecności Jest to jeden z najbardziej popularnych sposobów wykorzystania systemu inteligentnego domu [6]. Wyjeżdżając na zasłużony wakacyjny wypoczynek, nasz dom staje się potencjalnym celem dla złodzieja. Posiadanie takiego systemu zmniejsza ryzyko „nieproszonych” gości. Wystarczy, że odpowiedni moduł systemu nagrywa poczynania domowników przez pewien okres czasu i odtwarza nagrane czynności symulując obecność w budynku (chodzi głównie o zapalanie i gaszenie światła w poszczególnych pomieszczeniach, włączanie muzyki) [6]. Bardziej wyrafinowane systemy wykorzystują do tego celu większość urządzeń zintegrowanych z systemem, tj. telewizora, telefonu, lub innych podsystemów, które skutecznie mogą odstraszyć włamywacza [6]. 13 • System alarmowy Pożar, powódź i inne żywioły są największymi zagrożeniami dla budynku a przede wszystkim dla ludzi tam przebywających. Nie można też zapomnieć o wrogu, jakim jest włamywacz. Wczesne wykrycie zagrożenia i możliwość zapobiegnięciu niebezpieczeństwa jest podstawowym celem takiego systemu [6]. Dzięki czujnikom i detektorom takim, jak chociażby detektor ruchu możliwa jest reakcja systemu na próby włamania [10]. Reakcje systemu mogą być bardzo różne [9], od włączenia alarmu, który sygnałem dźwiękowym zwróci uwagę osób trzecich, po automatyczne poinformowanie policji o zaistniałych okolicznościach. Bardzo często taki system jest połączony z innymi systemami, tj. systemem kamer, który może okazać się kluczowym zagadnieniem dla policji, czy systemem przeciwpożarowym, który w kilku zdaniach omawiam poniżej. • System przeciwpożarowy Tak jak wspomniałem wcześniej, jest on istotnym systemem z punktu widzenia systemu alarmowego, gdyż bardzo często jest on uruchamiany za jego pośrednictwem. Zadaniem tego podsystemu jest oczywiście ochrona budynku przed pożarem wraz z jego mieszkańcami. Taki system najczęściej składa się z dwóch części: sieci czujników temperatury i dymu oraz bezpośredniej sieci przeciwpożarowej, czyli sieci różnego typu spryskiwaczy [9] [10]. • System kontroli dostępu Jeden z bardziej skomplikowanych systemów. Ma zastosowanie przede wszystkim w biurowcach i jest oparty najczęściej o system personalizacji. Osoba z grupy osób, która ma dostęp do wybranego budynku chcąc wejść do niego musi być rozpoznana przez system personalizacji, który w następstwie informuje system kontroli, że dana osoba ma prawo wejścia do budynku. Wspomniany system personalizacji zajmuje się dostosowywaniem wymagań poszczególnych osób w inteligentnych budynkach. Idea jest taka, żeby osoby znajdujące się w grupie objętej dostępem do budynku, mające różne upodobania miały 14 możliwość zdefiniowania systemu tak żeby funkcje systemu realizowane automatycznie odpowiadały ich wymaganiom. [10] • System pogodowy System, na który składa się szereg czujników, które decydują o zamknięciu okien na wypadek deszczu. Czujniki takie mogą również spowodować przejście na niezależne zasilanie podczas burzy. Powyżej wymieniłem tylko podstawowe podsystemy, które wchodzą w skład systemu zarządzania budynkiem. Trzeba mieć świadomość, że podobnych podsystemów jest bardzo wiele [6]. 3.2 Sieci domowe w kontekście Inteligentnego Budynku Całkiem nie dawno temat sieci domowych nie cieszył się tak dużą popularnością jak dzisiaj. Na skutek bardzo szybkiego rozwoju Inteligentnego Budynku, zainteresowanie sieciami domowymi diametralnie wzrosło. Termin „Sieć Domowa„( Home Network) wygląda dosyć niewinnie, w rzeczywistości można powiedzieć, że jest to sieć składająca się z wielu komputerów i urządzeń peryferyjnych, które połączone są ze sobą istniejącą instalacją telefoniczną i elektryczną lub bezprzewodową. [11]. W odniesieniu do Inteligentnego domu, sieci domowe można podzielić na dwie podsieci: komputerowe (HomePNA, HomeRF, inne) i sieci sterujące urządzeniami peryferyjnymi (EIB, X10, PLC, Lonworks, CEBus, Echonet, technologie bezprzewodowe). Oczywiście obie te podsieci muszą umieć „rozmawiać” ze sobą. 15 Rys3. Wykaz technologii dla sieci domowych [11] 3.3 Podział sieci domowych ze względy na użyte medium. 3.3.1 Sieci z nowym okablowaniem • Ethernet 10Base-T • HAVi (Home Audio Video interoperability) • EIB (European Installation Bus) • USB (Universal Serial Bus) • Protokół IEEE 1394 (Fireware) Ethernet Najważniejszą z tych sieci jest oczywiście sieć Ethernet. Zalety takiej sieci są powszechnie znane, czyli niezawodność i szybkość przesyłania danych. Dużą wadą, hamującą rozwój tej sieci jest konieczność dodatkowego okablowania oraz dosyć duży stopień komplikacji [7]. Nie będę opisywał tego protokołu, gdyż jest on powszechnie znany i informacje o nim są ogólnie dostępne. HAVi Komunikacja wszystkich urządzeń w tej sieci odbywa się za pośrednictwem jednego urządzenia sterującego. Nośnikiem sprzęgającym jest IEEE 1394. Dużą zaletą jest to, że 16 HAVi może operować na urządzeniach od różnych producentów [19]. System z definicji ma być bardzo łatwy w obsłudze i dlatego, kiedy zostanie dołączone jakieś nowe urządzenie, takie jak faks, czy drukarka, to system sam je skonfiguruje. Więcej na ten temat można dowiedzieć się ze strony internetowej http://havi.org. EIB Opracowany został przez czołowych europejskich producentów systemów elektroinstalacyjnych w 1990 roku [21]. W Polsce pojawił się 6 lat później. Instalacja EIB pozwala na swobodne zarządzanie budynkiem, czyli służy do szeroko rozumianego sterowania urządzeniami elektrycznymi stosowanymi w budownictwie [21]. Jest ona bardzo konkurencyjną instalacją dla klasycznej instalacji elektrycznej. Tradycyjne elementy sterownicze zostały zastąpione urządzeniami wykonanymi w technice cyfrowej, które potrafią wymieniać informacje za pomocą jednego, łączącego wszystkie urządzenia elektryczne przewodu magistralnego. Przekrój takiego przewodu przedstawia rysunek numer 4. Jest to dwuparowa skrętka o przekroju żyły 0,8mm, zasilanej napięciem stałym 24 V. Do transmisji wykorzystywana jest tylko jedna para przewodów, druga służy jako rezerwa. Rys.4 Przekrój przewodu komunikacyjnego w EIB [http://www.e-instalacje.pl/artykul_zdjecia/instabus_art3.jpg] Z punktu widzenia bezpieczeństwa, wielką zaletą jest fakt, iż przez ten przewód płynie bezpieczne napięcie 24V. Napięcie 230 V owszem występuję, jednak doprowadzone jest tylko i bezpośrednio do odbiorników prądu (gniazdka elektryczne itp.) [22]. 17 W krajach Unii Europejskiej EIB jest jednym z najszybciej rozwijających się standardów automatyki. Szacuje się, że 70% nowo budowanych budynków w Niemczech będzie posiadało system EIB [21]. Sieć komunikacyjna, EIB jest siecią typu „peer to peer”, w której może funkcjonować do 57375 urządzeń [21]. Wszystkie te urządzenia mają równe prawa dostępu do medium komunikacyjnego. Wynika to bezpośrednio z protokołu CSMA/CA [20]. Możliwe topologie EIB przedstawia rysunek numer 5. Więcej informacji na temat EIB można dowiedzieć się ze strony internetowej http://eib.org. Rys 5. Możliwe topologie w EIB [http://upload.wikimedia.org/wikipedia/commons/b/b4/Topologia_eib.png] 3.3.2 Sieci bez nowego okablowania • HomePNA (Home PhoneLine Alliance) - standardy sieci oparte na skrętce telefonicznej; • PLC (PowerLine Communication) – sieć szerokopasmowa oparta na zewnętrznym okablowaniu energoelektrycznym • PLC (PowerLine Communication) – sieć wąskopasmowa oparta na wewnętrznym okablowaniu elektroenergetycznym. Do najczęstszych protokołów własnych 18 należą: X10, CEBus, Lonworks, PLT, PLUG-IN, Echonet. Do tej grupy zaliczają się sieci oparte o już istniejące okablowanie elektroenergetyczne i telefoniczne na skrętce UTP. HomePNA Jest to sieć, w której urządzenia połączone są za pomocą skrętki telefonicznej. Obecnie przepływność sieci wynosi 100 Mb/s. Specjalne konsorcjum o tej samej nazwie, co protokół zajmuje się standaryzacją tego typu systemów sieciowych. Do grupy założycieli należą największe firmy na świecie z branży IT, tj.:3COM, IBM, INEL, Hewlett-Packard i wiele innych [11]. Obecnie sieć obsługuje do 25 urządzeń. Poniżej przedstawiam rysunek, obrazujący idee takiej sieci. Rys 6. Idea sieci HomePNA [http://www.domotica.nl/images/standaard-homepna.jpg] Więcej na temat tego standardu można dowiedzieć się na stronie internetowej http://homepna.org. PLC Komunikacja w tej sieci oparta jest o linie elektroenergetyczne. Rozróżnić można dwa rodzaje takich sieci: szerokopasmową i wąskopasmową. Mnie w szczególności interesuje 19 sieć wąskopasmowa, która korzysta jedynie z domowego okablowania elektroenergetycznego, które służy do komunikacji urządzeń elektrycznych. Urządzenia w takiej sieci działają w oparciu o różne standardy (protokoły). Postaram się wymienić te najbardziej popularne i mające przyszłość i w kilku zdaniach je omówić [11]. X10 Protokół ten znany jest już od około 25 lat i z założenia przeznaczony jest do sterowania urządzeniami domowymi, tj.: oświetleniem, czy ogrzewaniem i wentylacją [11, 13]. Największą popularność zyskał w USA, jednak technologia X10 zaczyna się też cieszyć dużą popularnością na innych kontynentach [13]. Ważną rzeczą jest to, aby jak największa ilość urządzeń przeznaczonych dla Inteligentnych Budynków umiało obsługiwać ten protokół. Obliczono, że na rynku światowym jest już ponad 10 milionów urządzeń obsługujących ten protokół. Rozbudowa takiej sieci jest rzeczą niebywale prostą, gdyż wymaga jedynie włączenia nowego urządzenia do jakiegoś gniazdka prądowego lub zamontowania go na szynie DIN (takiej jak przy bezpiecznikach) [13]. Transmisja danych cyfrowych przez przewody instalacji elektrycznej odbywa się przy użyciu modulacji amplitudowej. Dane przesyłane są w specjalnych ramkach po detekcji przejścia napięcia przemiennego przez zero [13]. Więcej informacji na temat X10 znaleźć można na witrynie http://www.cotse.com/dlf/man/x10/index.htm . LonWorks Jeden z bardziej wyrafinowanych protokołów komunikacyjnych. Standard ten jest silnie wspierany przez największe koncerny w USA, a także w Europie. Technologia LonWorks umożliwia łączenie różnorodnych urządzeń nie tylko po przewodach zasilających. Kanałem komunikacyjnym równie dobrze może być skrętka telefoniczna, fale radiowe czy podczerwień [15]. Komunikacja jest odporna na zakłócenia dzięki specjalnym systemom kontroli błędów, które są wbudowane w urządzenia obsługujące ten standard. Jak podaje Echelon (firma zajmująca się tym protokołem), w skład systemu może wchodzić maksymalnie 32 tysiące urządzeń [15]. Wąskopasmowe urządzenia PLC pracujące w omawianym systemie składają się typowo z kilku komponentów: zasilacza, mikroprocesora, transceivera, oraz elementu sprzęgającego sygnał danych z siecią 20 energetyczną. Więcej informacji na ten temat można znaleźć na witrynie http://www.echelon.com/developers/lonworks/faq.htm. CEBus i PLUG-IN Urządzenia produkowane przez firmę Intellon, która promuje system CEBus posiadają układ nadawczo-odbiorczy oraz mikrokontroler. Szybkość transmisji dochodzi do 10kb/s z wykorzystaniem zapewnia techniki rozpraszania widma [11]. Jest to otwarty standard, który specyfikację oddzielnej warstwy elektroenergetycznymi, światłowodami, fizycznej skrętkami, dla komunikacji liniami podczerwienią oraz RF [13]. Specyfikacja definiuje wspólną składnię komend, dzięki której następuje komunikacja (jest to tzw. język CAL, ang. Common Application Language) [13]. Więcej informacji na temat tego protokołu znaleźć można na stronie internetowej firmy Intellon ( http://intellon.com ). Protokół PLUG-IN w pełni odnosi się do warstwowego modelu OSI. Zostały w nim zdefiniowane wszystkie warstwy oprócz sesji i prezentacji [11]. Protokół PLUG-IN jest podobny do CEBus. Różnica jest taka, że Intelogis (firma upowszechniająca PLUG-IN) promuje model klient/serwer, a nie model „peer to peer” [17]. Dużą wadą obu standardów (w porównaniu do standardu X10) jest wysoka cena urządzeń obsługujących te standardy. ECHONET Echonet wywodzi się z Japonii i jest jedną z najnowszych technologii sieci domowych. Oprócz obsługi linii energetycznych, specyfikacja umożliwia wykorzystanie łączy bezprzewodowych a także łączy IrDA [11]. Patrząc na ten protokół z punktu widzenia modelu OSI, warstwę fizyczną sieci można rozszerzać na inne media, chociażby takie jak Bluetooth – oczywiście przez dodanie odpowiednich sterowników. Echonet cechuje otwarta architektura. Producenci mogą więc dodawać własne usługi. Więcej na ten temat można dowiedzieć się ze strony internetowej http://www.echonet.org. Współczesne standardy PLC Obecnie standardami PLC zajmuje się kilka organizacji na świecie. Na kontynencie europejskim najważniejszą jest Open PLC European Research Alliance (OPERA), która częściowo finansowana jest przez Komisję Europejską [16]. Produkty oparte na 21 specyfikacji tego standardu będą w stanie przesłać dane z prędkością 200 Mb/s [16]. Więcej informacji na jego temat można znaleźć na www.ist-opera.org. Inne gremium standaryzacyjne, Home Plug Alliance zajmuje się specyfikacją HomePlug AV, która teoretycznie oferuje transfer do 200 Mb/s (podobnie jak OPERA), lecz w praktyce jest trochę inaczej. W rzeczywistości sieć oparta o ten standard umożliwia przesyłanie danych z prędkością rzędu 14 Mb/s (HomePlug 1.1) i 85 Mb/s (HomePlug Highspeed) [18]. Specyfikacja opisuje HD-PLC, która umożliwia prędkość przesyłania danych na poziomie 170 Mb/s, lecz na razie jest to rozwiązanie czysto teoretyczne. Również teoretyczna jest możliwość podłączenie 253 adapterów maszyn, gdyż producenci nie zalecają wykorzystywania więcej niż dziesięciu jednocześnie [18]. Jednak istotną rzeczą jest to, iż nowy standard zapewnia szyfrowanie transmitowanych danych [16]. Zainteresowanie standardem jest dosyć duże, gdyż można zaobserwować powiększającą się listę certyfikowanych przez HomePlug Alliance urządzeń. Niestety zdecydowana większość produktów przeznaczona jest na rynek amerykański, gdzie napięcie w instalacjach elektrycznych wynosi 110V. Warto również zauważyć, że specyfikacja opisująca ten standard nie jest ujawniona. Więcej informacji można znaleźć na firmowej stronie internetowej firmy dostarczającej układy scalone dla urządzeń zgodnych z tym standardem http://intellon.com. Oprócz OPERY i HomePlug dwie grupy producentów zawiązały współpracę w celu stworzenia standardu PLC. Pierwszą jest United Powerline Association (w skład której wchodzi m.in. Ascom), oraz CE-Powerline Communications Alliance (w skład której wchodzą m.in. Panasonic i Sony). Wspomniana przeze mnie firma Ascom posiada swój własny system PLC (ASCOM PLC), który składa się z systemów zewnątrzbudynkowego (outdoor) i wewnątrzbudynkowego (indoor). Mnie interesuje ten drugi. System wewnątrzbudynkowy rozsyła sygnał do wszystkich gniazdek w budynku. Umożliwia przesyłanie danych przez sieć energetyczną niskiego napięcia z szybkością 4,5 Mb/s [17]. Producent podaje jednak, że praktyczna wartość tego parametru to 3 Mbit/s. Urządzenie końcowe podłączone do gniazdka to samokonfigurujący się adapter z wbudowanymi interfejsami 10Base-T i USB [17]. Adapter może również posiadać złącze telefoniczne a/b, dzięki któremu możliwe jest podłączenie telefonu analogowego. System umożliwia także stworzenie sieci domowej, do której dostęp jest zapewniony z każdego gniazdka elektrycznego w budynku [17]. 22 Omawiany system charakteryzuje się ograniczonym zasięgiem, co oznacza, iż długość linii dystrybucyjnej pomiędzy stacją transformatorową a budynkiem odbiorcy energii nie może przekroczyć 350 m, a długość przewodów domowej instalacji elektrycznej łączącej urządzenia w sieć lokalną nie powinna być większa niż 70 m [17]. Więcej informacji można się dowiedzieć ze strony internetowej http://ascom.com. Największą konkurencją dla systemu oferowanego przez firmę Ascom jest rozwiązanie PLUS (Power Line Ultimate System) izraelskiej firmy Main.net. Niestety producent nie podaje dokładnych parametrów technicznych produkowanych urządzeń. Maksymalna szybkość transmisji oferowana przez system nie przekracza 2,5 Mbit/s [14]. Na szczególną uwagę zasługuje internetowy terminal HotPLUS, który po podłączeniu do dowolnego gniazdka zasilającego w budynku umożliwia dostęp do różnorodnych usług, takich jak: poczta elektroniczna, wideo-konferencje, oraz telefonia pakietowa [14]. Szczegółowe informacje na jego temat można znaleźć na stronie internetowej firmy MainNet Communications http://www.mainnet-plc.com. Podsumowując bardzo rozległy temat jakim jest PLC, warto zauważyć że problemem PLC nie jest brak standardów, lecz paradoksalnie ich nadmiar. W przyszłości może powstanie jedna, ale za to dopracowana specyfikacja, która ułatwi rozwój tego standardu. 3.3.3 Sieci bezprzewodowe • IrDA • HomeRF • ZigBee • Bluetooth 3.3.3.1 IrDA Jest protokołem transmisji cyfrowych w podczerwieni, który powstanie zawdzięcza normalizacji dotyczącej pilotów do telewizorów i magnetowidów. Protokół ten jest silnie wspierany przez największe firmy na świecie. Na razie IrDA zapewnia transmisję typu 23 punkt-punkt na odległość ok. 1 m w zakresie falowym 850-900 nm. [23]. Osiągane prędkości przepływu danych dochodzą do 16 Mb/s, ale kąt transmisji nie może przekroczyć 30° [23]. Prędkość transmisji jest ściśle związana z odległością komunikujących się urządzeń. Wystarczy że odległość tą zwiększymy do 5 m, wówczas szybkości transmisji spadnie do 75 kb/s. Dobrze ilustruje to rysunek numer 7 [23]. Patrząc na ten rysunek można zauważyć: IrDA-Data, IrDA-Control oraz AIr. Są to standardy komunikacji za pośrednictwem fal podczerwonych. IrDA DATA przeznaczony jest dla transmisji danych (VFIR, FIR, SIR) [23], IrDa Control obejmuje aspekty sterowania a AIr jest jeszcze na etapie rozwoju. Rys. 7 Prędkości transmisji w porównaniu z odległościami w IrDa i Bluetooth [12] Architektura tego standardu składa się z kilku protokołów i pokazuje to rysunek nr.8. Protokoły te podzielone są na warstwy spełniające wiele funkcji. A warstwy można podzielić na 3 podgrupy [11]: - protokoły implementowane obowiązkowo - protokoły opcjonalne - protokoły multimedialne 24 Rys. 8 Stos protokołów IrDA [12] W skład pierwszej podgrupy (protokołów obowiązkowych) wchodzą: • Warstwa fizyczna (Physical Layer) - tutaj następuje kodowanie danych, synchronizacja ramek, oraz sprawdzanie bitu nadmiarowości CRC [12]. • IrLAP - jest to protokół dostępu do łącza i odpowiada za niezawodny transfer danych. Jej zadaniem jest m.in. zawiadamianie warstw wyższych o zaistniałych problemach, tj. przerwanie wiązki światła itp. Jeśli taka sytuacja ma miejsce wówczas użytkownik może otrzymać stosowny komunikat informujący o problemie. Trzeba nadmienić że wszystko to odbywa się bez przerwania połączenia i utraty transmitowanych danych [12]. • IrLMP - protokół zarządzania łączem, który odpowiada za multipleksowanie usług i aplikacji [12]. • IAS - protokół dostępu do informacji [12]. 25 Zastosowanie protokołów opcjonalnych zależy od konkretnej aplikacji. Do tej podgrupy należą [12]: • IrTTP - protokół transportowy, pełni bardzo ważną funkcję, gdyż zapewnia sterowanie strumieniem w kanale. Funkcja ta jest często rekomendowana dla wielu aplikacji. • IrOBEX - ułatwia transfer plików oraz innych obiektów danych. protokół ten określa zasady wymiany obiektów (pliki, wszelkiego rodzaju informacje sterujące) pomiędzy stacjami (komputery klasy PC, urządzenia telekomunikacyjne, sprzęt gospodarstwa domowego, itp.) • IrCOMM - jego zadaniem jest emulowanie portów szeregowych i równoległych. • IrLAN - określa zasady współpracy z sieciami lokalnymi (zapewnia urządzeniom, przykładowo notebookom, dostęp do sieci lokalnej za pośrednictwem podczerwieni). Protokoły multimedialne zaliczające się do grupy protokołów opcjonalnych to: • IrMC - jego zadaniem jest określenie zasad współpracy ze sprzętem telekomunikacyjnym (telefony komórkowe, itp.) • IrTran-P - określa zasady przesyłu i reprezentacji obrazów cyfrowych. Dodając protokół warstwy aplikacyjnej w bardzo łatwy sposób mamy możliwość uzyskania dodatkowej usługi [23]. Ponadto standard ten cechuje możliwość zwiększania szybkości w następnych wersjach, nie tracąc jednocześnie kompatybilności ze starszymi. Poprzez implementowanie tylko niektórych wybranych protokołów (z puli protokołów opcjonalnych) możemy uzyskać pewnego rodzaju oszczędność (przykładowo aparaty cyfrowe z IrDA nie musza implementować protokołu dostępu do sieci LAN ) [12]. 26 3.3.3.2 HomeRF Protokół ten wyróżnia się tym z pośród innych, że równocześnie zapewnia: szerokopasmowy dostęp do Internetu, współdzieli zasoby, wiele sesji strumieni medialnych a także kilka wysokiej jakości połączeń głosowych [12]. Dobrze to uwidacznia rysunek numer 9, gdzie przedstawiłem stos protokołów. Rys. 9 Specyfikacja HomeRF [12] Urządzenia HomeRF operują w globalnie otwartym paśmie 2,4 GHz, czyli w takim samym co Bluetooth i kuchenki mikrofalowe [12]. Stosują technologię skoków po częstotliwościach - od 50 do 100 skoków na sekundę. Problem utraty pakietów wiąże się z interferencjami wywołanymi przez inne urządzenia działające w tym samym paśmie lub inne sieci bezprzewodowe [12]. W HomeRF zaimplementowano kilka mechanizmów które zwalczają ten problem. Pakiety z danymi podlegają ADS [24], czyli mechanizmowi pozwalającemu uniknąć kolizji. Jeśli węzeł nie otrzyma potwierdzenia odbioru pakietu, wówczas przed próbą powtórnego wysłania pakietu odczeka jakiś zadany okres czasu, odpowiadający pewnej liczbie szczelin czasowych. Innym mechanizmem który został zaimplementowany w HomeRF jest mechanizm o nazwie PADS [24]. Jest to metoda która pozwala przypisać konkretnym pakietom priorytet dostępu do kanału komunikacyjnego (mechanizm przydatny np. w sesjach wideo). 27 Kilka informacji o stosie protokołów HomeRF. Za szybkość przesyłania danych odpowiada oczywiście warstwa fizyczna. Warstwa wyższa (czyli MAC) odpowiada za bezpieczeństwo, oraz definiuje typy obsługi danych (np. video) [12]. Trzeba wspomnieć o najważniejszym protokole, który został zdefiniowany w HomeRF, czyli o SWAP [24] (umiejscowiony w warstwie MAC). Umożliwia on przenoszenie zarówno głosu jak i danych. Interaktywne transakcje głosowe wykorzystują TDMA, natomiast transakcje asynchroniczne (usługi bezpołączeniowe, używane typowo w ruchu TCP/IP) wymagają CSMA/CA [24]. W porównaniu z Ethernetem, można powiedzieć, że HomeRF jest jego przeciwieństwem ponieważ używa dwóch oddzielnych protokołów dostępu do medium. Wybiegając w przyszłość, zagrożeniem z punktu widzenia firm które są mocno związane z rozwojem tego standardu są technologie HomePNA i PLC. Kto zwycięży, dowiemy się w niedalekiej przyszłości. 3.3.3.3 ZigBee (IEEE 802.15.4) Promocją tego standardu zajmuje się grupa ZigBee Alliance, do której należą największe firmy zajmujące się oprogramowaniem i produkcją sprzętu elektronicznego. Najważniejszą cechą tego standardu, którą należy wymienić w pierwszej kolejności jest niski pobór energii urządzeń które się ze sobą komunikują. Inną zaletą jest prostota budowy sieci opartej o ZigBee [25]. Urządzenia pracujące w takiej sieci działają w zakresach częstotliwości które nie wymagają pozwolenia [26]. Dobrze to obrazuje rysunek numer 10. 28 Rys. 10 Ulokowanie kanałów standardu 802.15.4. [25] We wszystkich 27 kanałach komunikacyjnych wykorzystuje się proste rozpraszanie widma DSSS [26]. Pozostałe parametry tego standardu pokazuje tabela numer 1 Pasmo 868/915 MHz (11 kanałów), 2,4 GHz (16 kanałów) Zasięg 10-30 m Opóźnienie 15 ms Adresowanie 8 lub 64 bity Dostęp do kanału CSMA-CA Przepływność 868 MHz: 20kb/s; 915 MHz: 40kb/s; 2,4 GHz: 250kb/s Temperatura pracy Od -40 do 85˚C Tab.1 Podstawowe parametry standardu ZigBee Stos protokołów w ZigBee przedstawia rysunek na następnej stronie. 29 Rys.11 Stos protokołów ZigBee [25] Na uwagę zasługuje jedynie warstwa łącza danych, w której znajduje się specjalna podwarstwa zbieżności SSCS [26] odpowiedzialna za współpracę z logiczną kontrolą łącza zgodną z 802.2. SSCS zapewnia kompatybilność pomiędzy różnymi implementacjami LLC. ZigBee przewidział w swojej specyfikacji specjalny tryb pracy dla aplikacji które wymagają małych, stałych opóźnień. Wówczas ustalony „koordynator” koordynuje pracę urządzeń mu podległych. Realizuje to poprzez wysyłanie w odpowiednim czasie specjalnych ramek kontrolnych. Odstęp między nimi może wynosić od 15 ms do 245 s. Dostęp do szczelin czasowych w których można coś wysłać odbywa się na zasadzie rywalizacji, lecz urządzenie koordynujące ma możliwość przypisania szczeliny czasowej urządzeniu, które wymagać będzie określonego pasma i opóźnienia [25]. Który mechanizm zostanie użyty, zależy od topologii sieci. Możliwe topologie przedstawia rysunek numer12. Rys.12 Topologie sieci ZigBee [25] 30 Obecnie ZigBee jest silną konkurencją dla standardu X10 czy LonWorks, które w dużej mierze ograniczone są przez kable. Największym rywalem jest jednak Bluetooth, który opisuję szerzej w następnym podrozdziale. Dużą zaletą ZigBee w odniesieniu do Bluetooth jest zasięg między węzłami, który jest rzędu ok. 100m. Inną pozytywną cechą tego standardu jest to, że urządzenia pracujące w standardzie Bluetooth muszą być ładowane co kilka lub kilkanaście dni. ZigBee przewyższa pod tym względem Bluetooth, uwzględniono w nim bardzo niski pobór mocy (urządzenia korzystające z pary baterii AAA mogą wytrzymać nawet 2 lata) [25]. Wynika to z charakteru transmisji (urządzenie wysyłają informacje tylko wtedy kiedy wymaga tego aplikacja – dostęp do kanału jest więc tylko chwilowy). 3.3.3.4 Bluetooth Technologia ta jest pomysłem inżynierów szwedzkiej firmy Ericsson. Prowadząc kilkuletnie badania nad komunikacją bezprzewodową, zaprosili oni do współpracy kilka innych firm. Firmy te założyły w 1998 roku grupę Bluetooth Special Interest Group (SIG), która funkcjonuje do tej pory i zajmuje się rozwijaniem tej technologii [12]. System Bluetooth pracuje na częstotliwości 2,4 GHz, w jednym z trzech pasm ISM. Pasma ISM zostały udostępnione na całym świecie systemom radiowym o małej mocy. Pasma te w większości państw nie są licencjonowane. Rys.13 Rozmieszczenie kanałów w systemie Bluetooth Jak widać z powyższego rysunku, kanał radiowy zajmuje 1 MHz, a liczba kanałów wynosi 79. Dopuszczalne odchylenie od częstotliwości nośnej nie może być większe ani mniejsze od 75 kHz [27]. 31 Twórcy systemu Bluetooth ze względu na różnego rodzaju zakłócenia generowane przez urządzenia działające w tym samym paśmie zastosowali technikę rozpraszania widma sygnału z pseudolosowym przeskokiem częstotliwości. Liczba skoków w ciągu sekundy wynosi 1600. Różnica między częstotliwościami po skokach jest całkowitą krotnością 1 MHz. Sens działania mechanizmu jest taki, że nadajnik nie pracuje na jednej częstotliwości – zmienia ją z odpowiednią częstotliwością zgodnie z pewną sekwencją skoków. W bardzo podobny sposób pracuje odbiornik, który nie dostraja się do stałej jednej częstotliwości lecz zmienia ją ze znaną sekwencją [27]. Z punktu widzenia bezpieczeństwa, rozwiązanie to wydaje się być interesujące, gdyż odbiornik który nie będzie znał odpowiedniej sekwencji nie będzie mógł odebrać przesyłanego sygnału Ale czy jest to mechanizm wystarczający? Na to pytanie odpowiem w dalszej części pracy. Sekwencja przeskoków jest unikalna w obrębie jednej sieci i określona przez BD_ADDR (adres ten jest odpowiednikiem adresu MAC elementów sieci LAN) [27].Z liczby przeskoków częstotliwości w ciągu jednej sekundy można wyliczyć czas pracy jednej szczeliny czasowej równej 625us [27]. Urządzenia typu Master przesyłają pakiety w parzystych szczelinach czasowych, natomiast urządzenia typu Slave zarezerwowane mają nieparzyste szczeliny czasowe. Kilka słów o urządzeniach typu Master (urządzenia nadrzędne) i typu Slave (urządzenia podrzędne). Zgodnie ze specyfikacją każde urządzenie w sieci Bluetooth może pełnić dowolną z tych ról [27]. Oczywiście są pewne zasady co do tego. Załóżmy, że mamy pikosieć składającą się z: urządzenia typu Master jakim może być przykładowo komputer i urządzenia typu Slave jakim może być klawiatura. Do istniejącej sieci chcemy dołączyć mysz. Podłączając ją do zasilania, automatycznie powodujemy utworzenie tymczasowej nowej pikosieci, w której urządzeniem Master staje się to nowo przyłączone urządzenie. W tym momencie następuje realizacja procedury PAGE, która inicjowana jest zawsze przez urządzenie Master [27]. Nadajnik (mysz) nie wie na jakiej sekwencji kanałów będzie mógł odbierać dane odbiornik, ponieważ ich zegary nie są jeszcze zsynchronizowane. Dlatego następuje wysyłanie 16 identycznych ciągów wiadomości (tzw. kodów DAC) na 16 różnych częstotliwościach, słuchając w przerwach czy nie nadchodzi odpowiedź. Jeśli nie otrzyma odpowiedzi wchodzi w stan uśpienia na 1,28 s. Po tym czasie wysyła wiadomości na kolejnych 16 częstotliwościach [27]. Czyli maksymalny czas po którym nastąpi komunikacja to 2,56 s. Aby odbiornik (komputer) poprawnie zinterpretował wiadomość, co 1,28 s. wykonuje procedurę PAGE SCAN (co pewien określony czas urządzenie nasłuchuje na jednym z 32 kanałów nadejścia swojego kodu 32 DAC). Po odbiorze własnego kodu DAC urządzenie (odbiornik) przechodzi w tryb PAGE RESPONSE, czyli pakiety potwierdzające, przesyłane są na tej samej częstotliwości na której zostały odebrane (bo nie ma jeszcze synchronizacji zegarów). Dopiero po odebraniu kodu DAC, wysłaniu potwierdzenia, otrzymaniu pakietu FHS1, wysłaniu kolejnego potwierdzenia, następuje synchronizacja zegarów [27]. Należy zauważyć, iż komputer w tej sytuacji pełni zarówno rolę Master (gdyż jest połączony z klawiaturą) i na krótko rolę Slave (dla myszy). Przyłączanie się nowych urządzeń do komputera, nie powoduje żadnej przerwy w istniejącym połączeniu pomiędzy komputerem a klawiaturą. Po synchronizacji zegarów, mysz przechodzi w stan w którym pełni rolę urządzenia Slave [27]. W momencie gdy mamy zestawione już połączenie, po opisanej powyżej operacji, każde kolejne urządzenie dołączając się do połączonych urządzeń staje się urządzeniem typu Slave tworząc tym samym pikosieć z jednym elementem nadrzędnym [27]. Rys.14 Pikosieć: Jedno urządzenie Master (M) i cztery urządzenia Slave (S) Pikosieć tworzona jest tylko wtedy, gdy istnieje potrzeba komunikacji między urządzeniami i wówczas gdy taka potrzeba zostaje zaspokojona, pikosieć przestaje istnieć. Dzięki mechanizmowi przeskoków po częstotliwościach możliwa jest sytuacja w której na jednym obszarze będą współistnieć dwie lub więcej pikosieci [27]. 1 Pakiet FHS - służy do synchronizowaniu zegarów i przekazania sekwencji przeskoków po kanałach 33 Rys.15 Dwie pikosieci mogą występować na jednym obszarze, nie zakłócając się nawzajem. Może się jeszcze zdarzyć sytuacja w której urządzenie w jednej pikosieci pełni rolę master a w drugiej pikosieci rolę Slave. Wówczas mamy do czynienia z połączeniem dwóch pikosieci w sieć zwaną scatternetem (siecią rozproszoną) [27]. Rys.16 Pikosieci mogą tworzyć sieci rozproszone (scatternet). Są dwa rodzaje połączeń w systemie Bluetooth, które można podzielić na: • SCO (Synchronous Connection Oriented) – protokół transmisji dźwięku • ACL (Asynchronous Connectionless Links) – protokół transmisji danych Transmisja dźwięku różni się od transmisji danych tym, że jest synchroniczna, jej pakiety nie zawierają CRC i nie są retransmitowane [27]. Pasmo podstawowe Bluetooth jest w 34 stanie równocześnie obsługiwać jedno łącze asynchroniczne dla transmisji danych i do trzech synchronicznych dla transmisji głosu (połączenia mogą być zestawione z tym samym lub różnymi urządzeniami Slave) [27]. SCO ACL asynchroniczna Transmisja synchroniczna symetryczna asymetryczna 721 kb/s w jedną Połączenie Do 3 równoległych kanałów po 433 kb/s w każdą stronę i 57,6 kb/s 64 kb/s w każdą stronę stronę w drugą. Tab.2 Przepustowość kanałów transmisyjnych Specyfikacja Bluetooth dzieli urządzenia na trzy klasy: • Klasa 1 - 100 mW, zasięg 100m • Klasa 2 - 2,5 mW, zasięg 10m • Klasa 3 - 1 mW, zasięg 1m Większość urządzeń należy do klasy 2 lub 3. Stos protokołów przedstawia poniższy rysunek. Rys.17 Stos protokołów Bluetooth 35 Jak widać na powyższym rysunku stos protokołów można podzielić na 3 grupy: • Grupa protokołów transportowych Zadaniem tej grupy protokołów jest zestawienie fizycznych i logicznych połączeń między urządzeniami, umożliwiają również wzajemną lokalizację. W skład tej grupy wchodzą: protokoły radiowe, protokoły pasma podstawowego, menedżera połączeń, kontrolera hosta i połączenia logicznego, a także HCI (interfejs kontrolera hosta) [8]. • Grupa protokołów pośredniczących Protokoły z tej grupy umożliwiają poprawną współpracę urządzeń Bluetooth z innymi standardami przemysłowymi. W skład tej grupy wchodzą: protokół emulujący port szeregowy (RFCOMM), protokół poszukiwania usług (SDP), protokół sterowania telefonem (TCS) [8]. • Grupa aplikacji (oprogramowanie) Jest to grupa, która nie ukazała się w specyfikacji. SIG nie zajmuje się tymi protokołami [8]. Celem pracy nie jest dogłębne przedstawienie protokołu jakim jest Bluetooth, jednak z uwagi na to że jest ważną częścią mojego projektu, wchodzącego w zakres tej pracy, wiedza na temat protokołów pośredniczących wydaje się niezbędna w celu dogłębnego zrozumienia zasady działania całej aplikacji. W części poświęconej praktycznej części pracy staram się omówić najważniejsze aspekty związane z tymi protokołami, jednak szczegółowe informacje na ten temat można znaleźć w oficjalnej specyfikacji Bluetooth [27]. 36 4 Symbian – system operacyjny 4.1 Informacja ogólne Każdy, nawet najprostszy model telefonu komórkowego posiada system operacyjny. Im bardziej zaawansowana konstrukcja, tym bardziej rozbudowany system. Telefon komórkowy można porównywać w pewien sposób do komputera. Posiada wyświetlacz, klawiaturę, pamięć, procesor. Zazwyczaj wszystko to rozmieszczone jest na kilku układach scalonych. Aby wszystko ze sobą współgrało niezbędny jest system operacyjny [30]. Większość systemów na telefon komórkowy ma zasadniczą wadę, otóż aplikacje przeznaczone dla jednego modelu nie działają na innym. Istniejący problem zmusił producentów telefonów do opracowania uniwersalnego systemu na który zostanie napisanych wiele aplikacji i w ten sposób telefony zyskają na popularności [30]. Pierwszym takim systemem jest Palm OS. Niestety telefony wyposażone w ten system straciły na „użyteczności”, gdyż przestały być intuicyjne w obsłudze, korzystanie z nich przypomina obsługę komputera. W chwili obecnej system ten jest używany zasadniczo na palmtopach (mały, przenośny komputer osobisty, w skrócie PDA) [30]. W 2000 roku na rynku pojawił się pierwszy model telefonu komórkowego z systemem Symbian 5.0 [30]. Rok później pojawił się już telefon z systemem Symbian 6.0, jednak o kompatybilności obu systemów nie było mowy. Dopiero w następnych modelach z Symbianem można docenić przenośność aplikacji pomiędzy różnymi komórkami [30]. W tej chwili na rynku jest już kilka wersji tego najpopularniejszego systemu operacyjnego przeznaczonego w głównej mierze na telefony komórkowe (ma zastosowanie również w PDA) [29]. Omawiam je w następnym podrozdziale. Od powstania Symbiana sprzedano już ponad 126 milionów aparatów w niego wyposażonych i z każdym dniem ta liczba rośnie [29]. Ze strony Microsoftu odpowiedzią na Symbiana był i jest do tej pory system Pocket PC: Phone Edition, jednak nie znalazł większego uznania gdyż podobnie jak Palm OS jest mało intuicyjny. Następca tego systemu, mowa o systemie z rodziny Windows Mobile jest już godnym konkurentem Symbiana. Jednak nie będę zajmował się omawianiem tego systemu z uwagi na to, iż nie wchodzi on w zakres mojej pracy. Informacje na jego temat można znaleźć na oficjalnej stronie Microsoftu http://microsoft.com. 37 4.2 Dlaczego Symbian? Można zadać pytanie dlaczego w swojej aplikacji użyłem telefonu komórkowego z systemem operacyjnym Symbian OS? Nim odpowiem na to pytanie pozwolę sobie zauważyć, iż inne systemy są równie dobre z punktu widzenia funkcjonowania telefonu komórkowego jako urządzenia sterującego innymi urządzeniami w Inteligentnym Budynku. Windows Mobile jest rozwiązaniem alternatywnym. Silnie wspieranym przez Microsoft i kreowanym na lidera systemów operacyjnych wśród telefonów komórkowych w przyszłości. Za Symbianem przemawiają jednak pewne liczby. Otóż warto wiedzieć, że w pierwszym kwartale 2007 roku sprzedano 15.9 milionów telefonów z Symbianem (wzrost o 35.9% w stosunku do pierwszego kwartału 2006) [29]. Obecnie dostępnych jest ponad 7478 różnego rodzaju programów dla tego systemu operacyjnego [29]. Na chwilę obecną istnieje już 55 różnych modeli telefonów opartych na Symbianie. System ten dominuje na rynku telefonów inteligentnych mając 70% udziałów, Linux ma 20% a Microsoft i Palm OS tylko 10% [29]. 4.3 Interfejsy w Symbianie Symbian OS dostarczany jest przez producenta z podstawowym interfejsem użytkownika. Producenci telefonów zmieniają go mniej lub bardziej modyfikując. W ten sposób powstały następujące wersje tego systemu [31]: • S60 (dostarcza najwięcej swoistych cech i rozwiązań spośród wszystkich rodzajów interfejsów) o S60 1 edycji (obecna w najstarszych modelach telefonów z Symbianem) o S60 2 edycji o S60 3 edycji (używana w najnowszym modelach Noki) • UIQ (przeznaczony dla urządzeń z dużym ekranem dotykowym, obsługiwanym przy użyciu rysika) o UIQ 2 edycji UIQ 2.0 (system wykorzystany w części praktycznej) UIQ 2.1 o UIQ 3 edycji UIQ 3.0 38 UIQ 3.1 • Series80 (urządzenia typu Communicator) – aktualnie nierozwijany • Series90 (tablety internetowe) – aktualnie nierozwijany • NTT DoCoMo's MOAP – dostępny tylko w Japonii 4.4 SDK i dostępne IDE pod Symbiana SDK to zestaw narzędzi, plików danych, programów, które pozwalają na tworzenie oprogramowania. Dla różnych wersji Symbiana jak i dla różnych wersji interfejsu użytkownika istnieją różne, osobne SDK [29]. Do poprawnego działania każde SDK potrzebuje: • Active Perl • JRE W większości dostępnych wersjach instalacyjnych zawiera w sobie potrzebne komponenty. Każde SDK zawiera również emulator systemu operacyjnego Symbian. Emulator jest kompilacją całego systemu operacyjnego Symbian dla Windows. Większość funkcji korzystających bezpośrednio z zasobów udostępnianych przez telefon zostało zastąpionych analogicznymi funkcjami z Windows. Napisałem większość, gdyż obsługa Bluetooth czy IrDA jest niestety pominięta. Aby generować kod wykonywalny programu który chcemy uruchomić na komórce, potrzebny jest oczywiście kompilator. W przypadku Symbiana kod wykonywalny na telefon kompilowany jest przez darmowy gcc. Warto jeszcze powiedzieć o tym, że SDK dostarczane jest w kilku wersjach w zależności jaki kompilator został użyty do skompilowania emulatora [29]: • WINS – kod jest generowany przez Microsoft Visual Studio • WINSCW – kod jest generowany przez Code Warriora Stworzenie całego projektu od samego początku byłoby rzeczą bardzo pracochłonną [31]. Z pomocą programistom przychodzą narzędzia do ich automatycznego generowania. Samo SDK nie dostarcza tzw. wizardów, które potrafią tworzyć aplikacje. Jednak praktycznie każde narzędzie IDE, na którym można kompilować kod dla Symbiana potrafi ekspresowo stworzyć aplikację, która może być punktem wyjścia dla naszego programu [31]. Wszystkie dostępne IDE wymieniam w tabeli numer 3. 39 Środowisko Komercyjny Microsoft Visual C++ (6.0, TAK Debugowanie na telefonie NIE 7.0, 2005) Microsoft Windows SDK CodeWarrior NIE for TAK SymbianOS NIE TAK w wersji Professional i OEM Carbide C++ Express NIE NIE Borland C++ Builder X TAK/darmowy w wersji 1.5 NIE Tab3. Środowiska programistyczne pod Symbiana (IDE) 4.5 Podstawy Symbiana (różnice pomiędzy Symbianem a C++) Nie ulega wątpliwości, że programowanie w C++ pod Symbianem jest podobne do programowania w C++ pod inne systemy jak np. Windows [31]. Oczywiście różnice są i staram się je pokazać w następnych podrozdziałach. 4.5.1 Podstawowe typy danych W trochę zmienionej formie istnieją int, long czy real. Zabieg taki ma na celu uchronić programistę przed różnymi kompilatorami. Pisząc programy na Symbiana zamiast klasycznych typów danych, tj.: int, char używa się TInt, TChar, itp., typy które są zdefiniowane w standardowych plikach nagłówkowych Symbiana [1]. Podstawowe typy, to: • sized - znany jest ich dokładny rozmiar (np. TInt8) • unsized - nieznany jest ich dokładny rozmiar (np. TInt) Prawdziwe wielkości typów określanych jako unsized mogą zmieniać się zależnie od kompilatora, wówczas gdy te określane jako sized prawa takiego nie mają [31]. Typy signed mają liczbę bitów w nazwie, dzięki temu w łatwy sposób można je zidentyfikować[1]. Warto wiedzieć o typie TBool którego wartościami mogą być: ETrue i EFalse. Wszystkie typy danych umieściłem w tabeli numer 5 [1]. 40 Nazwa: TInt TUint TInt8 TInt16 TInt32 TUInt16 TUInt32 TReal TReal32 TReal64 TRealX TText TText8 TText16 Typ: Integer Unsigned integer Integer Integer Integer Unsigned Integer Unsigned Integer Real Real Real Real Character Character Character TChar Character TBool ETrue lub EFalse TAny Używane jako TAny* Tab.4 Podstawowe typy danych w systemie Symbian Rozmiar: przynajmniej 32 bity przynajmniej 32 bity 8 bitów 16 bitów 32 bity 16 bitów 32 bity przynajmniej 64 bity przynajmniej 32 bity przynajmniej 64 bity rozszerzona precyzja przynajmniej 16 bitów (unicode) przynajmniej 8 bitów (ascii) przynajmniej 16 bitów przynajmniej 32 bity (extended unicode ) 32 bity 4.5.2 Nazewnictwo klas Konwencja nazw, czyli tak na prawdę system przedrostków jest ważnym elementem całego systemu. Dzięki temu, w bardzo łatwy sposób można dowiedzieć się jakie funkcje pełni obiekt danej klasy [1]. Pierwsze litery w nazwach klas wskazują podstawowe jej własności. Ze względu na ten podział można rozróżnić następujące typy klas: • Klasy T. Są to proste klasy nieposiadające ani konstruktora ani destruktora. Pamięć dla obiektów tych klas jest alokowana na stosie. Przykładami takich klas są: TDesC, TPoint, TFileName [1]. Podczas programowania dla Symbiana obiekty tych klas pojawiają się niemal na każdym kroku. • Klasy C. Każda taka klasa dziedziczy z CBase i obiekt tej klasy zawsze jest alokowany na stercie. Klasy C posiadają zarówno konstruktor jak i destruktor. Konstruktor z klasy nadrzędnej (klasy CBase) dba o to, by wszystkie pola znajdujące się w klasie odpowiednio wyzerować [1]. Przykładami tej klasy są: CConsoleBase, CActive, CBase. 41 • Klasy R. Obiekty tej klasy mają dostęp do zewnętrznych zasobów, tj.: plików, gniazd sieciowych, itp. Zazwyczaj wykorzystywane są w aplikacjach typu KlientSerwer, jednak nie jest to regułą [1]. Zazwyczaj posiadają funkcje: o przydzielające pamięć (Open(), Create(), Allocate(), itp.) o zwalniające pamięć (Close(), Destroy(), Free(), itp.) Przykładami tej klasy są: RFile, RTimer, RWriteStream. • Klasy M. Klasy abstrakcyjne, które posiadają jedynie metody wirtualne. Ich implementacja pojawia się dopiero w klasach z niej dziedziczących [1]. Przykłady takich klas to: MGraphicsDevice-Map, MEikMenuObserver. Warto jeszcze wiedzieć, że obowiązują również konwencje w nazewnictwie nazw obiektów [1]. • E – używany przy typach wyliczeniowych (np. Eteru, EFalse, EMonday, itp.) • K - Używany przy stałych (np. KErrNone, KMaxFileName) • i – Zmienne jako pola w klasach • a – Zmienne deklarowane jako argumenty w funkcjach. 4.5.3 Łańcuchy tekstowe i deskryptory Można powiedzieć że jest to specjalność Symbiana. Jednak niestety nie jest to takie proste jak w C, gdyż wszystko wygląda o wiele bardziej skomplikowanie. Wyróżnić można 5 typów deskryptorów: • TBuf • TBufC • TPtr • TPtrC • HBufC Jak widać niektóre nazwy zakończone są literą C, otóż oznacza to, że taki deskryptor jest stały, o określonej stałej długości i wszystkie jego funkcje są typu const (ang. constans). Dane przechowywane przez jakikolwiek deskryptor mogą znajdować się we wszelkich możliwych rodzajach pamięci (ROM, RAM, stos, sterta) [31]. 42 • TBuf i TBufC - patrząc na te deskryptory z perspektywy języka C, można powiedzieć, że są to tak naprawdę tablice stringów (łańcuchy tekstowe). W nomenklaturze „symbianowej” mówi się o nich, że są to deskryptory bufora. Dane stanowią część obiektu deskryptora, który umieszczony jest na stosie. Jak widać na rysunku numer 18, długość tych tablic ustawia się za pomocą specyficznych „widełek”. TBufC<5> helloStack(„hello”); Tak jak pisałem wcześniej, na takim obiekcie można wywołać jedynie funkcje typu const. Jeśli mielibyśmy następującą definicję: TBuf<5> helloWorld(„hello”); ,wówczas taki bufor jest modyfikowalną tablicą stringów, gdzie można bez problemów modyfikować tekst (np. metodą Append()). • HBufC są to deskryptory sterty, dane stanowią część obiektu deskryptora, który umieszczony jest na stercie. • TPtr i TPtrC to deskryptory wskaźnika, gdzie obiekt deskryptora oddzielony jest od danych. [1]. Rysunek numer 18 przedstawia hierarchie możliwych deskryptorów w Symbianie. Rys18. Typy deskryptorów w Symbianie 43 TDesC i Des są klasami abstrakcyjnymi. Z tego względu mogą zostać wykorzystane tylko jako argumenty funkcji, których celem są dowolne działania na łańcuchach tekstowych bądź innych danych [31]. Wszystkie deskryptory posiadają kilka odmian (TDesC8, TDesC16, TBuf8, TBuf16, TDes8, TDes16, itp.). Liczba w nazwie informuje o tym ilu bitowymi danymi może operować dany deskryptor [1, 31]. 4.5.4 Mechanizm opuszczeń (Leaves) Jest to jeden z najważniejszych mechanizmów Symbiana. Litera L na końcu nazwy funkcji informuje, że dana funkcja może zgłosić opuszczenie W większości współczesnych języków programowania istnieje możliwość obsłużenia błędów (tak jak się to dzieje np. w Javie, gdzie obsługa błędów odbywa się za pomocą konstrukcji try-catch) lub przekazania ich na wyższy poziom hierarchii wywołań [34]. W Symbianie jest to rozwiązane przez konstrukcję Leave-Trap (w wolnym tłumaczeniu, opuszczenie-złapanie). Opuszczenie (symbianowy odpowiednik wyjątku) może się zdarzyć w wielu sytuacjach. Dobrym przykładem może być brak pamięci na załadowanie grafiki lub nie znalezienie potrzebnego pliku [34]. Najczęściej nie obsługuje się własnoręcznie błędu, gdyż przekazuje się go po prostu systemowi, który wyświetli stosowny komunikat [1]. Jednak można zaimplementować odpowiednią obsługę błędu za pomocą stosownej pułapki (instrukcji TRAP). Wówczas gdy wyrzucamy wyjątek, sterowanie programu przechodzi do miejsca „najbliższego TRAPa” [31]. Czyli można to nazwać złapaniem wyjątku. W tym momencie wywoływane są destruktory obiektów, których wskaźniki odłożone są na Cleanup Stacku2 (oczywiście tylko tych obiektów, które stworzyliśmy po wejściu do TRAP) [31]. Jeżeli wskaźnika obiektu, który zaalokował pamięć, nie ma na tym stosie, nie mamy już możliwości usunięcia tego obiektu w żaden sposób i w tym momencie pamięć zajmowana przez ten obiekt jest tracona (czyli mamy do czynienia z klasycznym wyciekiem pamięci) [31]. Aby przeciwdziałać takim wyciekom pamięci, wskaźnik nowo utworzonego obiektu powinno się odkładać na Cleanup Stacku [31]. Mechanizm opuszczania jest o tyle ważny, że firma Symbian stworzyła bardzo przydatny program sprawdzający, czy konwencja nazewnictwa jest przestrzegana w plikach 2 Cleanup Stack - stos wskaźników do obiektów. Więcej na jego temat można znaleźć w literaturze [1]. 44 źródłowych projektu [34]. Nazwa tego narzędzia to LeaveScan i jest nawet wbudowane w niektóre wersje SDK. 5 Projekt 5.1 Idea projektu Idea całego projektu oparta jest o komunikację pomiędzy urządzeniami znajdującymi się w budynku przy wykorzystaniu protokołu Bluetooth. W moim przypadku jest to telefon komórkowy, komputer PC i urządzenie LPC2104 Color LCD Game Board. Równie dobrze mogłyby to być inne urządzenia, jednak z uwagi na posiadanie wyżej wymienionych urządzeń zdecydowałem się na skorzystanie właśnie z nich. Celem pracy było skonstruowanie takiego systemu, w którym człowiek posiadający „klucz” ( w moim projekcie jest to telefon komórkowy ) będzie mógł sterować innymi urządzeniami w budynku. Bardzo ważną rzeczą jest to, iż użytkownik mając telefon komórkowy, po wejściu w zasięg Bluetootha konkretnego urządzenia nawiąże z nim automatycznie połączenie i wysyłając stosowne polecenia zrealizuje z góry przypisane mu zadanie. Natomiast jeśli opuści zasięg danego urządzenia, urządzenie również musi zareagować w pewien ustalony sposób. Cała ta operacja ma się odbyć bez ingerencji osoby posiadającej klucz. Można sobie wyobrazić sytuację, w której podjeżdżamy samochodem do swojego domu, a dokładniej pod bramę swojej posesji i bez jakiejkolwiek reakcji z naszej strony brama otwiera się. Po wjechaniu samochodem, opuszczeniu garażu, brama automatycznie ma się zamknąć. Oczywiście warto sobie zadać pytanie na jakiej zasadzie brama nas słucha, czy każdy może otworzyć i zamknąć naszą bramę. Na to pytanie odpowiem w dalszej części pracy, gdyż jest to bardzo ważny aspekt patrząc na to z punktu widzenia bezpieczeństwa (rozdz. 5.2.1.7). Idea całego projektu jest więc bardzo przejrzysta. Wszystkie komunikujące się urządzenia posiadają Bluetootha, dzięki któremu następuje wymiana danych. Całe zagadnienie dobrze ilustruje rysunek numer 19. 45 Rys.19 Idea projektu [11] 5.2 Budowa projektu Projekt powinien składać się z 3 odrębnych aplikacji. Jeden napisany na telefon komórkowy z systemem Symbian 7.0 z interfejsem UIQ 2.0. Drugi napisany na komputer klasy PC. A trzeci zaimplementowany na LPC2104 Color LCD Game Board. Niestety musiałem zrezygnować z wdrożenia Game Board’a do działającej sieci urządzeń. Powodem była niekompatybilność stosów Bluetooth dla tego urządzenia i telefonu komórkowego. Sytuacja z którą się zetknąłem jest dosyć skomplikowana. Otóż istnieją dwie procedury zapytań o serwisy (przypomnę tylko że łącząc się z urządzeniem Bluetooth tak naprawdę łączymy się z jakimś serwisem dostępnym na tym urządzeniu) [39]. Jedna procedura to SDP_ServiceSearchAttributeRequest, a druga SDP_ServiceSearchRequest [39]. Problem polega na tym, iż urządzenie Game Board umie obsługiwać tylko pierwsze zapytanie, czyli SDP_ServiceSearchAttributeRequest. Niestety telefon komórkowy wykorzystuje drugą procedurę do odszukania serwisu i w ten sposób dochodzi do braku kompatybilności. Problem można by było rozwiązać używając innego modelu telefonu komórkowego (przynajmniej wszystko na to wskazuje), jednak nie zdecydowałem się na taki krok, gdyż wiązałoby się to z dosyć dużym nakładem finansowym. 46 5.2.1 Aplikacja na telefon komórkowy 5.2.1.1 Budowa i elementy składające się na aplikację Jeśli chodzi o budowę napisanej przeze mnie aplikacji to jest ona zgodna z wszelkimi zasadami które obowiązują w tworzeniu tego typu programów i dlatego na podstawie tej aplikacji omówię jednocześnie budowę typowych aplikacji na system operacyjny Symbian OS. Na poniższym rysunku prezentuję budowę takiej właśnie aplikacji, połączenia między jej elementami, oraz przepływ informacji. Rys.20 Budowa typowej aplikacji na Symbian OS Podstawowe elementy składające się na aplikację niezależnie od używanej wersji SDK są widoczne na rysunku numer 20 i są następujące: • Aplikacja – jest to podstawowy element, który pozwala na wykorzystanie biblioteki Uikon. Zawiera również interfejs do plików z zasobami, oraz tworzy dokument. Klasa aplikacji dziedziczy z klasy CQikApplication. (Dla programu pisanego pod telefon komórkowy z interfejsem S60, klasa ta powinna dziedziczyć z klasy CAknApplication) [1] • Dokument – jest to pośrednia warstwa pomiędzy kontrolerem i modelem a plikiem, z którego korzysta model. Dokument tworzy kontroler aplikacji (APP UI). Klasa dokumentu dziedziczy z CQikDocument (dla S60 dziedziczyłaby z klasy 47 CAknDocument). Tak naprawdę dokument wykorzystywany jest tylko do tworzenia kontrolera. Dzieje się tak w wypadku gdy aplikacja nie zapisuje i odczytuje danych z systemu plików [31]. • Kontroler (APP UI) – jest to element który obsługuje wszystkie sprawy związane z interfejsem użytkownika, takie jak: menu, paski narzędziowe, kończenie aplikacji, itp. Kontroler odpowiedzialny jest za obsługę komend wysyłanych z menu, a także za współpracę z serwerem okien [31]. Kontroler dziedziczy po klasie CQikAppUi (dla S60 byłaby to klasa CAknAppUi). • Model – jest to klasa która odpowiedzialna jest za mechanizm działania aplikacji. Model powinien być tworzony przez dokument, a kontroler i widok aplikacji powinny mieć do niego bezpośredni dostęp (poprzez referencję lub wskaźnik). • Widok – odpowiada za prezentację danych dla użytkownika oprogramowania [1]. Widok prezentuje specyficzne ujęcie danych w modelu i posiada bezpośredni dostęp do modelu, żeby wizualizować dane w nim zawarte. (Aplikacja może posiadać wiele widoków, przykładowo kalendarz ma widok tygodnia, miesiąca, roku.) Klasa widoku dziedziczy bezpośrednio po klasie CCoeControl. (W przypadku S60 byłaby to klasa CAknView). 5.2.1.2 Struktura katalogów projektu Po utworzeniu nowego projektu, w określonym przez użytkownika miejscu na dysku tworzy się struktura katalogów charakterystyczna dla projektów Symbiana. W zależności od użytego wizarda ta struktura może się nieznacznie różnić. Zarówno moja struktura jak i standardowa struktura aplikacji składa się z następujących katalogów [1, 31]: • Group - tutaj znajdują się najważniejsze pliki wchodzące w skład całego projektu. Są to: plik MMP określający zawartość projektu (.mmp), plik RRS z zasobami (.rss), oraz plik definicji komponentów (bld.inf) • Inc - w tym katalogu znajdują się wszystkie pliki nagłówkowe aplikacji (.h), pliki z typami numerycznymi projektu (.hrh), pliki definiujące kody Panic codes (.pan), oraz plik adresów dla plików binarnych dla komponentów interfejsu użytkownika (generowany automatycznie - .rsg) • Src - tutaj znajdują się wszystkie pliki źródłowe projektu (.cpp) 48 • Sis - w tym katalogu znajduje się plik .pkg określający wersję instalacyjną programu na telefon, służący do tworzenia pliku instalacyjnego dla aplikacji (.sis) 5.2.1.3 Podział aplikacji na podstawowe pliki Każda aplikacja dla systemu operacyjnego Symbian, z punktu widzenia podziału na podstawowe pliki składa się z [1, 31]: • Plik APP – w pliku tym znajduje się skompilowany kod aplikacji, jest to biblioteka polimorficzna udostępniająca tylko jedną funkcję tworzącą instancję aplikacji. Jest to niezbędny plik do działania całej aplikacji [1]. Warto wiedzieć, że po skompilowaniu całego projektu w CodeWarrior plik ten jest tworzony w specyficznym miejscu na dysku. Ścieżka katalogu w którym tworzone są pliki tego typu jest następująca: C:\Symbian\UIQ_70\epoc32\release\armi\urel\CLIENTBT.APP • Plik RSC – zadaniem tego pliku jest dostarczanie informacji o zasobach w trakcie działania aplikacji. Chodzi o to, żeby podczas działania programu nie ładować wszystkich zasobów do pamięci, a tylko te które są aktualnie potrzebne [31]. W ten sposób następuje oszczędność pamięci, gdyż niezbędne zasoby są „doładowywane” wtedy, gdy są potrzebne. Plik ten zawiera wszystkie zasoby związane z językiem aplikacji (definicje komponentów interfejsu, napisy używane w programie, itp.) Bardzo dużą zaletą tego pliku jest fakt, że można go podmienić bez konieczności ponownej kompilacji całej aplikacji [31]. Można więc zrobić kilka plików z różnymi wersjami językowymi i podczas uruchomienia programu ładować odpowiedni język (w zależności od wyboru użytkownika). Plik ten jest niezbędny do działania całej aplikacji. Ścieżka katalogu w którym tworzony jest taki plik jest następująca: C:\Symbian\UIQ_70\epoc32\data\z\system\APPS\CLIENTBT\ClientBT.RSC • Plik AIF – służy do przetrzymywania podstawowych informacji o aplikacji takich jak ikony, obsługiwane typy MIME, itp. • Plik MBM – przechowuje dowolną ilość ikon, które podczas działania programu mogą zostać załadowane i wyświetlone w postaci zwykłych obrazków czy przycisków. 49 5.2.1.4 Rodzaje plików w projekcie Rodzaje plików w projekcie są następujące: • plik MMP, który określa zawartość projektu. Definiuje on typ projektu (aplikacja wykonywalna, biblioteka itp.), plik z zasobami, pliki z kodem C++, użyte biblioteki, język, ścieżki systemowe, ścieżki do plików nagłówkowych, itp.. Określa także identyfikator aplikacji (UID), o którym więcej pisze w rozdziale 5.2.1.5. W mojej aplikacji plik ten nosi nazwę ClientBT.mmp. • Plik Bld.inf – definiuje komponenty wchodzące w skład projektu. Wszystkie pliki MMP, które wchodzą w skład aplikacji są wymienione w tym pliku [31]. W moim przypadku jest to tylko jeden plik. W pliku tym powinny być również wpisy z nazwami używanych bibliotek dynamicznych (plików DLL), jeżeli takich używamy [1]. Z punktu widzenia budowania aplikacji, a także budowania pliku instalacyjnego plik ten jest niezbędny. • Plik RSS – jest to plik zasobów aplikacji. Tutaj zdefiniowane i umieszczone są wszystkie definicje komponentów użytkownika (menu, dialogi, itp.). Aplikacja używa tego pliku do zbudowania aktualnie wymaganego komponentu podczas działania programu. • Plik HRH - zawiera typy numeryczne wykorzystywane w aplikacji. Mówiąc bardziej „obrazowo”, to tutaj zdefiniowane są typy numeryczne m.in. dla opcji z menu. • Pliki CPP i H – pliki źródłowe projektu. Omawiając wszystkie pliki nie można zapomnieć o pliku instalacyjnym, o którym już wcześniej wspomniałem. Jest to plik który umożliwia zainstalowanie aplikacji na telefon komórkowy. 50 Rys.21 Proces powstawania pliku SIS [http://developer.uiq.com/devlib/uiq_30/SDKDocumentation/sdl/N10012/3-building.html] Do utworzenia pliku instalacyjnego niezbędny jest plik PKG, w którym definiuje się przede wszystkim ścieżki źródłowe jak i docelowe dla pliku APP i RSC. Mając dobrze zdefiniowany taki plik, używając programu MakeSIS.exe wbudowany w każde SDK otrzymujemy niepodpisany plik instalacyjny. Na tym etapie można już poprzestać, gdyż telefony komórkowe wyposażone w Symbian 7.0 i starsze nie wymagają podpisywania tych plików. Niestety telefony z Symbianem nowszym od 7.0 wymagają tej operacji. 5.2.1.5 System identyfikatorów UID Każdy plik wykonywany w systemie Symbian OS jest identyfikowany przez dwa identyfikatory (są to liczby 32 bitowe bez znaku), które dokładnie identyfikują dany plik [1]. Pierwszy identyfikator określa typ pliku i przykładowo dla wszystkich tzw. GUI aplikacji jest on określony liczbą 0x100039ce. Drugi powinien być nabyty bezpośrednio od firmy Symbian. Można to zrobić a nawet trzeba wysyłając maila na adres [email protected] o tytule „UID request”, w treści podając ile chce się nabyć identyfikatorów [1]. Ja jednak skorzystałem z eksperymentalnych identyfikatorów, które są udostępnione przez Symbiana. Ich zakres wynosi od 0x01000000 do 0x0fffffff. To pozwala Symbianowi na odróżnienie plików powiązanych z tą daną aplikacją od plików skojarzonych z inną aplikacją [1]. 51 5.2.1.6 Zasada działania aplikacji Aby móc zagłębić się w szczegóły implementacyjne zarówno po stronie klienta (aplikacja na telefonie komórkowy) jak i serwera (aplikacja na komputerze PC) trzeba zaznajomić się dosyć szczegółowo z protokołem Bluetooth. Jak powszechnie wiadomo w aplikacjach klient – serwer, klient żąda od serwera wykonania pewnych usług. Mówiąc o usługach, trzeba wprowadzić bardzo ważne pojęcie jakim jest serwis, słowo którego używałem wcześniej, a w specyfikacji Bluetooth pojawia się niemal od samego początku. Najkrócej mówiąc serwis jest usługą realizowaną przez serwer. Pierwszą rzeczą jaką należy poruszyć omawiając moją aplikację pod Symbianem pod względem implementacji jest nawiązanie połączenia pomiędzy dwoma urządzeniami. Nim nastąpi połączenie, wcześniej realizowanych jest kilka bardzo ważnych zadań. Podstawowe działania klienta zmierzające do nawiązania połączenia z serwerem można podzielić na: • Odszukanie urządzenia z którym klient chce nawiązać połączenie (Device Discovery) • Odszukanie serwisów działających na znalezionym urządzeniu (Service Discovery) • Pobranie URL serwisu Odszukanie urządzenia jest o tyle ułatwione, iż znam wszystkie urządzenia z którymi mogę i mam możliwość nawiązania połączenia. Dlatego w swojej aplikacji używam specjalnej struktury (TBTDevAddr tabDevices []), która zawiera adresy MAC urządzeń z którymi mogę się połączyć. Do odszukiwania serwisów na zdalnym urządzeniu używam obiektu klasy CSdpAgent. Obiekt ten można nazwać agentem, który wykorzystuje do wyszukania serwisów Service Discovery Protocol (SDP), który omawiam w rozdziale 5.2.1.8. Zgodnie z profilem zastosowań SDP, aplikacja wyszukująca usługi na urządzeniu zdalnym powinna obsługiwać trzy rodzaje zapytań o usługi: • Szukanie usług należących do danej klasy usług, • Szukanie usług o podanych atrybutach, • Przeszukiwanie dostępnych usług. 52 Skorzystałem z pierwszej funkcjonalności jaką daje profil zastosowań SDP, czyli szukanie usług należących do danej klasy usług. Obiekt CSdpAgent posiada wiele różnorodnych funkcji. Chcę wspomnieć tylko o dwóch które z punktu widzenia uruchomienia całego mechanizmu szukania serwisów są kluczowe. Jedna z nich to SetRecordFilterL( CSdpSearchPattern pattern ), która to właśnie ma możliwość ustawienia klasy usługi którą chcemy znaleźć [35]. W mojej aplikacji klasa usługi którą szukam to „Serial Port” (Dlaczego akurat takiego serwisu szukam piszę w rozdziale 5.2.4). Każda taka klasa ma przypisaną 16 bitową liczbę (tzw. UUID o którym szerzej napiszę w rozdziale 5.2.1.7), Dla ścisłości, usługa Serial Port jest określona przez liczbę 0x1101. Drugą funkcją jest NextRecordRequestL(), która jest asynchroniczną funkcją inicjalizującą szukanie (można powiedzieć że zwraca „uchwyt” do serwisu) [35]. Po ukończeniu tej funkcji, zostaje wywołany ciąg innych funkcji, które doprowadzają do stanu w którym telefon komórkowy albo nawiąże połączenie z urządzeniem peryferyjnym albo nie. Jak wygląda kwestia związana z bezpieczeństwem nawiązywania połączenia? Otóż oparłem się o znany i zaimplementowany już mechanizm „parowania” urządzeń (Bluetooth Pairing). Aplikacja jest napisana w ten sposób, że parowanie urządzeń wymusza serwer, który może pracować w 3 trybach zabezpieczeń (niskim, średnim i wysokim), ale o tym piszę szerzej w rozdziale poświęconym aplikacji serwera (rozdział 5.2.2). Wspomnę tylko, iż uruchamiając serwer należy włączyć średni tryb zabezpieczenia, którego zadaniem jest wymuszanie wymiany tego samego klucza hasła po obydwu stronach połączenia jeśli dwa urządzenia są łączone po raz pierwszy lub jeśli występuje brak zaufanych relacji pomiędzy dwoma urządzenia. Po tej wymianie klucze haseł nie będą już wymagane do dalszej komunikacji pomiędzy urządzeniami. 53 Rys.22 Wymiana klucza po stronie klienta Przyjmując że operacja nawiązania połączenia powiodła się, wówczas automatycznie zostaje wysłane określone polecenie do zdalnego urządzenia. Po poprawnym wysłaniu tego polecenia i odebraniu potwierdzenia, połączenie zostaje zakończone. Dzieje się tak, gdyż musi być możliwość łączenia się z innymi urządzeniami, które znajdą się w zasięgu naszego „klucza”. Po udanym nawiązaniu połączenia i wysłaniu stosownego komunikatu, nie można skorzystać z sytuacji, w której połączenie byłoby utrzymywane w sposób „sztuczny” (np. za pomocą mechanizmu znanego jako „keep-alive”), co byłoby z jednej strony bardzo wygodne, gdyż po automatycznym wysłaniu jednego komunikatu, byłaby możliwość wysyłania innych. Jednak w takiej sytuacji byłby ogromny problem z obsłużeniem więcej niż jednego urządzenia znajdującego się w zasięgu użytkownika posiadającego „klucz”. Z założenia wynika, że w pomieszczeniu może znajdować się większa ilość urządzeń peryferyjnych i dlatego zdecydowałem się na wariant z każdorazowym wykonywaniem funkcji „Disconnect”, aby umożliwić poprawną pracę całego systemu. Można sobie zadać pytanie, co nastąpi jeśli będziemy przebywać w otoczeniu aktywnego urządzenia Bluetooth przez dłuższy okres czasu. Czy polecenie zostanie wysłane bliżej nieokreśloną ilość razy? Odpowiedzią jest oczywiście nie. Aplikacja sprawdza czy polecenie zostało już wysłane w czasie przebywania w zasięgu danego urządzenia. Jeśli tak, wówczas następuje wysyłanie komunikatów informujących o tym, że polecenie zostało wykonane i ponowny komunikat zostanie wysłany tylko wtedy gdy opuścimy 54 zasięg działania tego urządzenia i z powrotem się w nim pojawimy. Jeśli urządzenie sterujące opuści zasięg urządzenia z którym miało połączenie i wymieniało komunikaty, wówczas następuje powiadomienie o tym po stronie urządzenia aktywnego (peryferyjnego). . 5.2.1.7 Bezpieczeństwo W opisie idei projektu, wspomniałem o kwestii bezpieczeństwa związanej z działaniem aplikacji przeznaczonej na telefon komórkowy, obsługującej otwieranie bramy garażowej. Otwieraniem bramy zajmuje się aplikacja na komputerze PC. Pytanie, które zadałem we wstępnej części rozdziału 5.1 brzmi, czy każdy może otworzyć moją bramę do garażu (korzystając z urządzenia z Bluetooth). Oczywiście nie każdy może otworzyć bramę. Aby móc dokonać takiej operacji, po pierwsze zdalne urządzenie musi znać format polecenia (pisze o nim w rozdziale 5.2.2), a po drugie zdalne urządzeni musi być „sparowane” z komputerem PC. Na czym polega ta operacja? Proces „sparowania” polega na wygenerowaniu klucza inicjalizacyjnego i użyciu go do uwierzytelnienia urządzeń. Rezultatem jest utworzenie dla nich stałego klucza połączenia. Klucz ten generowany jest poprzez wprowadzenie w obu urządzeniach kodu PIN, który z kolei generuje klucz tymczasowy. (Ani klucze ani PIN nie są przesyłane drogą radiową w formie otwartego tekstu). Wygenerowane w ten sposób klucze tymczasowe muszą być sobie równe [27]. Pisząc ten projekt założyłem że jeśli dwa urządzenia nawiązują ze sobą po raz pierwszy połączenie, wówczas wymuszana jest wspomniana operacja „sparowania”. Z opisu wynika, że wiąże się to z manualnym wpisaniem hasła zarówno po stronie klienta jak i serwera. I tak właśnie się dzieje. Zdaję sobie sprawę z tego, że zabezpieczenie na poziomie „sparowania” urządzeń komunikujących się nie jest jakimś wyrafinowanym rozwiązaniem i w rzeczywistości dla osoby próbującej złamać klucz „sparowania” nie jest rzeczą trudną złamanie takiego klucza. Używając ogólnie dostępnego oprogramowania pod nazwą BTCrack, złamanie najdłuższego klucza to kwestia kilkudziesięciu sekund. Wspomniany program opiera się na brutalnym ataku, analizując przechwycone pakiety. Dla celów demonstrujących szybkie łamanie klucza, program można ściągnąć ze strony http://nruns.com/_en/security_tools.php Dlatego też, chcąc w lepszy sposób zabezpieczyć się przed atakami, nadmieniam w jaki sposób można lepiej to zrobić, zabezpieczając komunikację. Otóż rozwiązaniem jest 55 dodanie szyfrowania na poziomie protokołu komunikacyjnego. Szyfrowanie , które w znaczący sposób poprawi bezpieczeństwo komunikacji może opierać się o znane algorytmy szyfrowania, takie jak MD5, czy SHA2. Warto byłoby wymusić uwierzytelnianie, które mogłoby dokonywać się przy każdorazowym przesyłaniu komunikatów, przykładowo mogłaby być wykonywana taka operacja: LOGIN + MAC address klienta MD5 -- -- -- -- -- -- -- -- KLIENT Klient posiadając bazę loginów, odszyfrowując komunikat, dopuszczałaby do wymiany danych lub nie. Taki sposób zapewniłby znacznie lepszą ochronę niż mechanizm „sparowania” urządzeń. 5.2.1.8 Identyfikator UUID Celem było stworzenie takiego identyfikatora, który mógłby jednoznacznie identyfikować informację w systemach rozproszonych, bez używania centralnej bazy danych umożliwiających ich przechowywanie. Cel został osiągnięty wprowadzając standard uniwersalnie unikatowego identyfikatora jakim jest UUID, który jest 128 bitową pseudolosową liczbą [37]. Oczywiście od razu powstało wiele algorytmów generowania tych liczb. Prawdopodobieństwo wygenerowania dwóch takich samych identyfikatorów jest bliskie zeru, pozwolono zredukować go do 32-cyfrowej liczby szesnastkowej gdyż jest to wystarczająco długa liczba by nie pozwolić na dwa takie same identyfikatory [37]. Zaistniała potrzeba zarezerwowania pewnej liczby identyfikatorów na potrzeby Bluetooth SDP, SIG (o której pisałem w rozdziale o Bluetooth) postanowiła zdefiniować krótsze UUID aby ułatwić urządzeniom używanie identyfikatorów często używanych usług [37]. Wobec tego powstały identyfikatory 16- i 32-bitowe UUID. Oczywiście z krótkich UUID można wyliczyć długie, 32-bitowe. 56 5.2.1.9 Protokoły wyszukiwania usług Powstało wiele protokołów wyszukiwania usług. Różnią się między sobą, gdyż są przeznaczone do stosowania w różnych urządzeniach i w różnych środowiskach. Najpopularniejsze protokoły są następujące: • SLP2 (Service Location Protocol, Version 2) – jest to najpowszechniejszy protokół wyszukiwania usług. Jest w stanie obsłużyć bardzo rozbudowane sieci dzięki zastosowaniu katalogu usług [36]. Aplikacja poszukująca usług nazywana jest „User Agent”, dostawcą usług jest „Service Agent”, a „Direktory Agent” pełni rolę katalogu usług [36]. W niedużych sieciach można pominąć katalog usług, wówczas zapytanie od „User Agent’a” wysyłane jest multicastowo do wszystkich „Service Agent’ów”. Jednak jeśli „User Agent” ma świadomość istnienia w sieci katalogu usług, wtedy zapytanie wysyła tylko do „Direktory Agent’a” (unicast) [36]. Więcej na temat tego protokołu można dowiedzieć się ze strony www.openslp.org. • Jini – technologia, która jest rozszerzeniem języka Java na systemy rozproszone. Każde urządzenie działające w tym środowisku umie interpretować kod Java. Nawet jeśli nie potrafi, wówczas ma swojego Proxy, który zrobi to za niego [38]. Więcej o tym protokole można dowiedzieć się ze strony www.jini.org • Salutation – można powiedzieć że jest to mechanizm wykrywania i uzyskiwania dostępu do usług w dużych sieciach o zróżnicowanym medium. W tej technologii występuje pośrednik między klientem a usługą, tzw. Salutation Manager (SLM) [33]. Każdy klient chcący skorzystać z jakiejkolwiek usługi musi wysłać zapytanie do lokalnego SLM (najczęściej znajduje się on fizycznie na tej samej maszynie co klient) Ten po konsultacjach z innymi wysyła wynik do klienta. Po uzyskaniu odpowiedzi mówiącej o dostępności danej usługi, klient może zażądać wykonania usługi za pomocą SLM [33]. Może się zdarzyć, iż lokalny SLM nie będzie dysponował wymaganą przez klienta usługą. Wtedy SLM komunikuje się z innymi SLM’ami [33]. Salutation można porównać z Jini, gdyż jest bardzo podobny w sposobie działania. Jest jednak bardziej uniwersalny. Więcej informacji na stronie http://www.salutation.org • SSDP-UPnP (Simple Service Discovery Protocol) – służy do automatycznego wykrywania, konfiguracji i kontroli usług w niedużych sieciach LAN [32]. Po nazwie można dojść, że jest to protokół dosyć prosty. Zrezygnowano z katalogu 57 usług, skorzystano z multicast’u. W ten sposób system wykrywania usług nie wymaga konfiguracji. W jaki sposób klient może dowiedzieć się o istniejącej usłudze? Otóż na dwa sposoby. Pierwszy to bierne nasłuchiwanie, które tutaj ma sens, gdyż aktywne usługi rozsyłają swoje ogłoszenia. Znaleziony serwis zostaje zapisany w lokalnej bazie danych [32]. Drugi sposób polega na wysyłaniu multicast’owego zapytania (zapytanie do wszystkich). Urządzenie posiadające stosowny serwis, odpowiada na zapytanie [32]. Więcej na stronie http://upnp.org • PDP (Pervasive Discovery Protocol) – protokół skupiający się na decentralizacji mechanizmu wyszukiwania usług. Więcej informacji na ten temat na stronie http://www.it.uc3m.es/~celeste/papers/pdp_aamas2002.pdf • DEAPspace – opiera się o rozgłaszanie broadcast’owe informacji o usługach w całej sieci. • SSDS - (Secure Service Discovery Service). Zawiera metody uwierzytelniania i wymiany kluczy na potrzeby wykrywania usług. Więcej informacji znaleźć można na http://ninja.cs.berkeley.edu/dist/papers/sds-mobicom.pdf • SDP – jest to protokół z którego skorzystałem w swoim projekcie. Największą zaletą tego protokołu, która przemówiła za tym aby z niego skorzystać jest niewątpliwie fakt, iż jest on zaimplementowany we wszystkich urządzeniach wykorzystujących technologię Bluetooth. Pisząc aplikacje, miałem na uwadze uniwersalność programów, które z założenia mają działać na jak największej ilości urządzeń. Obecność klienta lub serwera SDP w urządzeniach z Bluetooth jest obowiązkowa. Dostawca usługi musi mieć funkcjonalność serwera SDP, a klient usługi klienta SDP [27]. Trzeba pamiętać, że funkcja klienta i serwera SDP jest niezależna od tego, które urządzenie jest w danym połączeniu urządzeniem Master, a które Slave [27]. Transakcję SDP bardzo dobrze obrazuje obrazek numer 23. 58 Rys 23. Protokoły uczestniczące w transakcji SDP [www.bluetooth.org/spec/] Po wywołaniu żądania zapytania o usługę, następuje wygenerowanie PDU przez klienta SDP, który przekazywany jest niższym warstwom. Każde zapytanie i każda odpowiedź składa się z jednego PDU. Przez interfejs radiowy, odpowiednio zapakowany wysyłany jest do urządzenia zdalnego, gdzie po dekapsulacji i scalaniu trafia do serwera SDP. Serwer posiada swoistą bazę danych o usługach (SDDB), na jej podstawie generuje odpowiedź, która wraca do klienta SDP [27]. 5.2.2 Aplikacja na PC Aplikacja na komputerze klasy PC pełni rolę serwera. W dużej części oparta jest o oprogramowanie dostarczane wraz z urządzeniem Bluetooth ze stosem protokołów BlueSoleil. Po instalacji oprogramowania BlueSoleil mamy dostęp do API, z którego można korzystać w swoich aplikacjach. Dzięki temu moja aplikacja może wykonywać podstawowe operacje, typu: start serwis, stop serwis, itp. 4 pliki zostały dostarczone projektantom i programistom w celu kompilowania, linkowania i uruchamiania aplikacji: plik DLL btfunc.dll, biblioteka btfunc.lib i dwa pliki nagłówkowe bt_ui.h, bt_def.h. • btfunc.dll – implementacja API do Bluetooth. W momencie instalacji BlueSoleil, biblioteka ta jest instalowana w systemie Windows 59 • btfunc.lib – zawiera adresy funkcji, biblioteka którą trzeba dołączyć do pisanego programu • bt_ui.h – plik nagłówkowy w którym zdefiniowane są stałe, struktury • bt_def.h – plik nagłówkowy w którym zdefiniowane są typedef’y i klasy Bluetooth Aplikacja oferuje 3 poziomy zabezpieczeń połączenia pomiędzy urządzeniami: • Niski - brak zabezpieczenia. Procedury zabezpieczenia nie są wymagane dla połączeń. Inne urządzenia mają swobodny dostęp do serwera bez konieczności wprowadzania klucza hasła. • Średni - uwierzytelnianie lub autoryzacja są wymagane przy dostępie do określonej usługi przez inne urządzenia. Jeśli dwa urządzenia nawiązują ze sobą po raz pierwszy połączenie, wówczas taki tryb wymusza wymianę tego samego klucza hasła między nimi. • Wysoki – wymuszone zabezpieczenie. Jeśli mamy uruchomiony ten tryb, wówczas uwierzytelnianie jest wymagane przy każdym inicjowaniu połączenia pomiędzy dwoma urządzeniami z obsługą Bluetooth. Do dokończenia procesu uwierzytelniania wymagane jest dostarczenie klucza hasła obydwu stronom. Skoro aplikacja ta pełni rolę serwera, to musi być na niej uruchomiony co najmniej jeden serwis (w moim przypadku jest to „Serial Port”), który nasłuchuje na połączenia przychodzące od innych urządzeń. Każde przychodzące połączenie obsługiwane jest przez nowy wątek. Aby serwis spełniał założone przeze mnie zadanie, przed jego uruchomieniem należy zarejestrować funkcję CallBack() (z dostępnych poleceń wybrać należy cyfrę 10), która w pośredni sposób odpowiada za zdarzenia związane z nadchodzącymi ze zdalnych urządzeń „poleceniami”. Wszystkie możliwe polecenia które mogą napłynąć od zdalnych urządzeń są oczywiście znane i odpowiednio zdefiniowane w aplikacji. Przyjąłem zasadę, iż każde polecenie składa się z 3 liter, które są w pełni wystarczające aby zdefiniować wszystkie potrzebne zadania. Polecenia mogą być dłuższe, jednak trzeba pamiętać, że identyfikacja następuje po 3 ostatnich literach. Oprócz tego, każde poprawne polecenie musi się kończyć sekwencją „AT\r”. Każdorazowe prawidłowe przetworzenie odpowiedniego polecenia wymusza na aplikacji wysyłanie stosownego potwierdzenia. 60 Dla celów pokazowych komunikaty będące poleceniami użytkownika, serwer realizuje w postaci głosowych zadań, które w łatwy sposób mogą być modyfikowane, w zależności od potrzeb. 5.2.3 Aplikacja na Game Board Tak jak pisałem wcześniej, nie udało się wdrożyć tego urządzenia do działającego systemu „inteligentnych urządzeń”. Istotę problemu opisałem w rozdziale 5.2. Jednak urządzenie to jest o tyle ciekawe, że warto przedstawić jego istotne cechy. W rzeczywistości Game Board to nic innego jak mikrokontroler. Jego najważniejsze cechy są następujące [40]: • posiada 128 kB pamięci Flash i 16 SRAM • 130 x 130 pixel kolorowy wyświetlacz LCD • Obecność Bluetootha opartego o Philips BGB203-S06 z zaimplementowanym profilem SPP, czyli Serial Port • 5-cio funkcyjny joystick odpowiedzialny za interakcje z użytkownikiem. • Zasilany przez USB • Wymiary mikrokontrolera to 90x90mm. Rys.24 LPC2104 Color LCD Game Board [40] 61 W jaki sposób połączyć się z urządzeniem przez USB? Przede wszystkim trzeba zainstalować stosowne sterowniki, gdyż po podłączeniu urządzenia do komputera PC za pomocą wspomnianego USB, komputer prosi o sterowniki. Po prawidłowym zainstalowaniu tych sterowników, tworzony jest COM port służący do komunikacji (USB Serial Port) [40]. Ustawienia dla tego portu są następujące: - szybkość transmisji 115200 b/s - bity danych 8 - brak parzystości - bity stopu 1 - brak sterowania przepływem Zauważyć można że są to standardowe ustawienia portu, którym łączymy się z routerami. Przydzielony numer portu powinien mieścić się w zakresie od 1 do 5 [40], ponieważ tego wymaga Philips FLASH Utility program, którego używałem do wgrywania oprogramowania. Alternatywnym programem do rozmieszczania oprogramowania jest lpc21isp dostarczany z biblioteką LPC2xxx-gcc-newlib-v2_3_0_0. Przewagą pierwszego programu jest bardzo przyjazny interfejs graficzny, który w prosty sposób umożliwia przesłanie napisanego oprogramowania na urządzenie. W tym momencie należy poruszyć temat związany ze zworkami, które są obecne na urządzeniu. Jest to bardzo istotne zagadnienie, ponieważ wspomniane zworki muszą znajdować się w odpowiednim ustawieniu aby umożliwić wgrywanie nowego oprogramowania. Jednak nie będę się nimi szczegółowo zajmował, ponieważ informacje na ten temat znaleźć można w literaturze [44, 45]. Mówiąc o wgrywaniu gotowych aplikacji, trzeba powiedzieć w jaki sposób powstaje plik, który można przesłać do mikrokontrolera. Plik ma określony format, jest to plik HEX. Aby móc skompilować napisany przez siebie program niezbędne jest odpowiednie środowisko wraz z kompilatorem (GCC), który to umożliwi [41]. Środowisko to jest oczywiście dostarczane przez producenta i dostępne na stronie www.EmbeddedArtists.com. Bardzo ważne zadanie pełni plik makefile. Określa parametry kompilowania i linkowania, a także jakie pliki wchodzą w skład programu, jakie biblioteki, jaki będzie wynik kompilacji (jakiego typu będzie plik wynikowy), itp.. Ponieważ modelów mikrokontrolerów jest bardzo dużo na rynku, to w pliku tym określa się również model mikrokontrolera na jaki kompilujemy program [41]. Jeśli chodzi o Bluetootha, to trzeba pamiętać o włączeniu aktywnego trybu, który powoduje możliwość wykrycia naszego urządzenia przez innych. 62 Do uruchomiania serwisu nasłuchującego na przychodzące połączenia, użyłem Hyper Terminala i następującego polecenia: AT+BTSRV=<Port>, “<Service Name>” Powyższe polecenie wystarcza do tego, aby serwis zaczął nasłuchiwać. Wracając do problemu z którym zetknąłem się podczas implementacji projektu i o którym pisałem w rozdziale 5.2, warto zauważyć, że komunikacja pomiędzy mikrokontrolerem a komputerem PC doszła do skutku. Niestety taka opcja była mało zadawalająca ze względu na założone cele, w których klientem poszukującym serwisu miał być telefon komórkowy. Więcej informacji o tym urządzeniu można znaleźć na stronie www.EmbeddedArtists.com. 5.2.4 Profile zastosowań Bluetooth Profile są bardzo istotnym zagadnieniem w standardzie Bluetooth od których w dużej mierze zależy dalszy rozwój tej technologii. Ich celem jest zapewnienie kompatybilności pomiędzy aplikacjami i urządzeniami pochodzącymi od różnych producentów [8]. Najogólniej, profile można podzielić na 4 grupy [8]: • Profile ogólne • Profile portu szeregowego • Profile telefonii • Profile pracy sieciowej Do profili ogólnych zalicza się profil ogólnego dostępu (GAP – Generic Access Profile) , który jest podstawą dla wszystkich pozostałych profili i jest obecny w każdym urządzeniu wyposażonym w Bluetooth [8]. Drugim profilem ogólnym jest profil aplikacji wyszukiwania usług (SDPAM – Service Discovery Application Protocol). Profil GAP określa jednakowe zasady korzystania z protokołów transportowych dla wszystkich profili, określa funkcję, które są obowiązkowe dla wszystkich urządzeń Bluetooth. Natomiast profil SDPAM tworzy zasady korzystania z protokołu SDP [8]. Do rodziny profilu portu szeregowego, z którego bezpośrednio korzystałem w swoim projekcie, zalicza się następujące profile [8]: • Profil portu szeregowego (SPP) • Profil ogólnej wymiany obiektów (GOEP) 63 • Profil transferu plików (FTP) • Profil wypychania obiektów (OPP) • Profil synchronizacji danych (SP) Ze względu na założenie w którym napisane przeze mnie aplikacje mają działać na jak największej ilości urządzeń, skorzystanie z profilu SPP wydaje się oczywiste, gdyż jest on najczęściej implementowanym profilem [8]. Pozwala na zestawienie wirtualnego portu szeregowego pomiędzy dwoma urządzeniami Bluetooth. Profil ten odwołuje się bezpośrednio do protokołu RFCOMM, co nie jest w cale bez znaczenia. Przewagą RFCOMM nad innymi protokołami pośredniczącymi jest fakt, iż w urządzeniu posiadającym Bluetooth jest on zaimplementowany zawsze, natomiast inne tego typu protokoły niekoniecznie [8]. Trzeba pamiętać, że do ustanowienia bezprzewodowego połączenia szeregowego, oprócz wszystkich protokółów transportowych do warstwy L2CAP włącznie (rysunek numer 17) potrzebne są 2 protokoły pośredniczące: wspomniany RFCOMM i SDP. Więcej na ten temat można dowiedzieć się ze specyfikacji Bluetooth i z literatury [8]. Chcę zauważyć, że inne profile, niektóre o wiele bardziej wyrafinowane byłyby również dobre, jednak z uwagi na fakt, iż urządzenie wyposażone w Bluetooth nie musi ich posiadać, tracą trochę na użyteczności. Nie będę opisywał pozostałych profili, gdyż zajęłoby to wiele stron, a nie to jest celem pracy. Wszystkie opisy dostępnych profili znajdują się w literaturze [8]. Aby uzupełnić rodziny profili, wspomnę jeszcze o profilach telefonii i pracy sieciowej, w skład pierwszej grupy wchodzą [8]: • Profil telefonii bezprzewodowej • Profil Interkomu • Profil zestawu słuchawkowego Do rodziny profili pracy sieciowej zalicza się [8]: • Profil pracy sieciowej z połączeniem komutowanym • Profil dostępu do LAN • Profil faksu 64 5.2.5 Instrukcja obsługi 5.2.5.1 Wymagania sprzętowe • Telefon komórkowy z systemem Symbian 7.0 z interfejsem UIQ 2.0 • Komputer PC: o Procesor: Intel Celeron/ Pentium III/ Pentium IV; AMD Duron/ Athlon o System operacyjny: Microsoft Windows 98 SE/ME/2000/XP o Pamięć RAM: co najmniej 32MB o Wolne miejsce na dysku: 11,5MB • Bluetooth USB Dongle z API BlueSoleil 5.2.5.2 Instalacja • Instalacja aplikacji na komputerze PC Mając w napędzie CD-ROM płytkę CD dołączoną wraz z tą pracą, należy podłączyć Bluetooth USB Dongle. Automatycznie zostanie wykryty nowy sprzęt, system operacyjny Windows poprosi nas o zainstalowanie sterowników, które dostępne są w katalogu SterownikiBlueSoleil. Po ukończeniu instalacji, program w katalogu AplikacjaNaPc\EXE jest gotowy do uruchomienia. • Instalacja aplikacji na telefonie komórkowym z Symbianem Instalacja napisanej przeze mnie aplikacji może przebiegać na różne sposoby. Przedstawię najłatwiejszy, ten z którego sam korzystałem. Otóż wystarczy przegrać plik instalacyjny SIS do pamięci telefonu (plik instalacyjny znajduje się w katalogu AplikacjaNaTelKom\SIS). Można to zrobić za pośrednictwem karty SD, w którą wyposażonych jest większość telefonów (np. Motorola A920, A925), lub nawiązując połączenie Bluetooth z telefonem komórkowym i przesyłając stosowny plik. Sama instalacja jest trywialna, wymaga jedynie kilkukrotnego kliknięcia „OK”. Po ukończonej instalacji, program jest gotowy do uruchomienia. 65 5.2.5.3 Opis szczegółowy • Aplikacja na komputerze PC Po uruchomieniu aplikacji, na ekranie pojawia się główne „menu”, które zawiera numerowane akcje. Do poprawnego działania wymagane jest włączenie SDK_BtRegisterCallBack, czyli akcja numer 10 (jest to funkcja która odpowiada za zdarzenia). Następnie trzeba podać na jakie zdarzenia ma reagować, więc należy podać EVENT_CONNECTION_STATUS (akcja numer 3). Aby wyjść z tego poziomu i wrócić do głównego „menu” należy podać w linii poleceń „-1”. Po tej operacji pozostaje tylko uruchomienie serwisu nasłuchującego na połączenia, co czyni akcja 12 (SDK_BtStartSPPExService). Po tych czynnościach aplikacja czeka na pojawienie się w zasięgu Bluetooth urządzenia zdefiniowanego w pliku BlueSoleilClient.ini. W pliku tym znajduje się MAC adres urządzenia posiadającego dostęp do wysłania stosownych komunikatów. Po pojawieniu się danego urządzenia w zasięgu, aplikacja na komputerze PC stosownym komunikatem głosowym powiadamia o tym zdarzeniu. Tak samo dzieje się w przypadku, gdy dane urządzenie opuszcza zasięg, • Aplikacja na telefonie komórkowym Po uruchomieniu aplikacji, z „menu” górnego należy wybrać polecenie „Commands”, a następnie z rozwijanej listy poleceń „Start”. Niestety dostępne urządzenia z którymi telefon komórkowy może nawiązać komunikację są zapisane w postaci struktury w pliku źródłowym aplikacji (w pliku ClientBT_MsgClient.cpp). Aby zmienić MAC adresy tych urządzeń, trzeba przekompilować cały projekt. Aby zatrzymać działanie aplikacji, trzeba wybrać z „menu” polecenie „Stop”. Zasadę działania aplikacji opisuję w rozdziale 5.2.1.6. 66 5.3 Standardy Bluetooth na komputery PC Na rynku jest kilka standardów Bluetooth, są to: • JSR 82 + Java API. Specyfikacja standaryzująca zbiór wywołań API, które pozwalają na wykorzystanie Bluetootha w aplikacjach napisanych w Javie. Link do strony z której można ściągnąć niezbędne biblioteki wraz ze specyfikacją to http://jcp.org/aboutJava/communityprocess/mrel/jsr082/index.html • Widcomm , obecnie Broadcom . Są dwie wersje SDK: jedna do pisania pod PC (Windows 98, ME, 2000, XP), druga na Windows Mobile Pocket PC (wspierane są HP, iPAQ's, Dell, Axim, X30, X50, Acer, n50, n300, Asus, A636, A716, A730, Windows Mobile Pocket PC ze zintegrowanym Bluetooth). Link do tego standardu jest następujący http://www.broadcom.com/products/bluetooth_sdk.php • Toshiba, SDK dostępne na stronie http://aps.toshiba-tro.de/bluetooth/ Wspierane platformy to: Win 95A, Win 95B, Win 98, Win 98SE, Win ME, Win NT 4.0, Win 2K, Win XP, Win Server 2K3, Win Vista. Informacje na temat tego standardu można uzyskać ze strony http://aps.toshiba- tro.de/bluetooth/redirect.php?page=pages/faq.html • Microsoft Bluetooth i jego API, które zawiera niezbędne biblioteki. Windows zapewnia dwa sposoby dostępu do Bluetooth: - poprzez użycie Windows Sockets Interface - zarządzanie urządzeniem bezpośrednio, bez użycia Sockets • BlueSoleil (w kilku zdaniach opisuje jego API w rozdziale 5.2.2) Wszystkie wymienione standardy rozwijane są w bardzo szybkim tempie. Niestety bardzo często nie są ze sobą kompatybilne, o czym mogłem się przekonać. Stwarza to wiele problemów z ich używaniem. Do swojego projektu wybrałem standard BlueSoleil. Decyzje mogę umotywować tylko tym, iż chciałem zapoznać się z implementacją podstawowych funkcji w standardzie innym niż Microsoft. 67 5.4 Dlaczego C++ W porównaniu z Javą, zaletą C++ jest pełny, niskopoziomowy dostęp do urządzenia, możliwość bezpośredniego dostępu do wielu funkcji telefonu., oraz znacznie szybsza praca aplikacji. Java uznawana jest za technologię wolną i „zasobożerną”, co w przypadku urządzeń o ograniczonej mocy obliczeniowej i małej pamięci jest poważnym zastrzeżeniem. Jeśli aplikacja pisana przeze mnie miałaby charakter jakiejś gry czy innej podobnej tego typu aplikacji, wówczas Java byłaby równie dobra co język C++. Jednak do tworzenia złożonych i bardziej zaawansowanych aplikacji (aplikacja wykorzystująca Bluetooth należy do takiej grupy programów), znacznie lepiej skorzystać z C++ [34]. 6 Dalsze kierunki rozwoju Przedstawiony i zrealizowany przeze mnie projekt posiada jedynie podstawowe elementy wchodzące w skład Inteligentnego Budynku. Proponowany jest dalszy rozwój w celu zwiększenia złożoności systemu i doprowadzeniu do stanu w którym liczba „inteligentnych” urządzeń wzrośnie. Należy dążyć do implementacji rzeczywistych wymogów stawianych przed tego typu systemami. Jest wiele kierunków, w których projekt może się rozwinąć. Oprócz dodania innych urządzeń, które w znaczący sposób rozszerzą projekt, można spróbować zmienić schemat ideowy projektu, o który opiera się cały system. Do istniejącej sieci można dodać punkt centralny – jednostkę, która będzie zarządzała wszystkimi urządzeniami peryferyjnymi, które byłyby w takim wypadku podrzędnymi w stosunku do punktu centralnego. Dobrym kandydatem urządzenia centralnego spełniającego wszystkie potrzebne funkcje mógłby być komputer klasy PC z Bluetooth’em. Wtedy „klucz”, telefon komórkowy łączyłby się tylko z jednostką centralną, która zajmowała by się realizacją zleconych mu zadań poprzez przesyłanie komunikatów do odpowiednich urządzeń. 68 Rys.25 Wariant rozbudowy projektu Takie rozwiązanie miałoby jedną dużą zaletę. Proces polegający na zweryfikowaniu tożsamości osoby (tzw. uwierzytelnienie) posiadającej telefon komórkowy i próbującej nawiązać połączenie z którymkolwiek urządzeniem byłby o tyle prosty, iż wymagałby zaimplementowania go jedynie na dwóch urządzeniach: telefonie komórkowym i jednostce centralnej. Niestety należało by się zastanowić nad wadami takiego rozwiązania. Jedną z takich wad jest niewątpliwie to, iż w sieci będzie istniała jednostka centralna, która w razie jakichkolwiek problemów technicznych unieruchomi całą sieć. Aplikacja na telefon komórkowy z system Symbian OS stwarza ogromne możliwości rozwoju. Napisana przeze mnie aplikacja polega na automatycznym wysyłaniu stosownego polecenia do zdalnego urządzenia, w momencie pojawienia się w jego zasięgu. Jednak może zajść potrzeba, gdzie użytkownik będzie chciał po wysłaniu tego polecenia, wysłać inne (przykładem może być telewizor, który włączy się po naszym wejściu do mieszkania, lecz przykładowo domownik chciałby mieć możliwość zmiany kanałów). Aplikacja uwzględnia przyszłe takie potrzeby, jest napisana w taki sposób, aby umożliwić w przyszłości zaimplementowanie tej funkcjonalności. 69 7 Wnioski i podsumowanie Cel który postawiłem sobie na samym początku został osiągnięty. W ramach mojej pracy powstał system Inteligentnego Budynku. Urządzeniem sterującym jest telefon komórkowy z systemem Symbian OS. Komputery klasy PC wraz z mikrokontrolerem pełnią rolę urządzeń peryferyjnych, wykonujących wcześniej skonfigurowane zadania. Oczywiście mam świadomość że w rzeczywistości Inteligentne Budynki składają się z większej ilości aktywnych urządzeń. Są to systemy bardzo rozbudowane, ich topologie bardzo często przybierają różną postać – w zależności od zastosowań. Zasadniczym celem pracy było zapoznanie się ze sposobami tworzenia i uruchamiania oprogramowania dla OS Symbian. Do tworzenia oprogramowania na Symbian OS powstało wiele środowisk programistycznych, tzw. IDE, których celem jest ułatwienie pisania aplikacji pod ten system. Mimo wszystko, tworzenie nawet prostych aplikacji przysparza wielu kłopotów, o czym mogłem się przekonać. Dużą przeszkodą w pisaniu programów na Symbian OS jest brak dobrej dokumentacji. Wsparcie techniczne dla tego systemu operacyjnego jest nieporównywalnie mniejsze od innych systemów operacyjnych, takich jak Windows czy Linux. Skalę problemu można zaobserwować przeglądając oferty księgarni publicznych a także księgarni internetowych. Na polskim rynku nie ma jeszcze ani jednej książki omawiającej system operacyjny Symbian. Jednym z najtrudniejszych wyzwań w tej pracy było napisanie oprogramowania przeznaczonego na telefon komórkowy, służącego do sterowania innymi urządzeniami. W tym celu niezbędną rzeczą było dogłębne poznanie protokołu Bluetooth. Jak wspominałem we wcześniejszych rozdziałach, protokół ten rozwija się bardzo szybko. Niestety nie jest on jeszcze doskonały, o czym świadczą istniejące „dziury”, które często wykorzystywane są przez liczne ataki. W 2005 roku opracowano już nawet mechanizm łamania PINu, o który oparty jest proces „parowania” urządzeń przed rozpoczęciem transmisji. Do najczęstszych ataków wykorzystujących luki w specyfikacji Bluetooth należą: • BlueJack – wysyłanie wiadomości do widocznych urządzeń będących w zasięgu, rozsyłanie SPAMu, wirusów. • BlueSmack – atak typu Dos, bazujący na wysyłaniu wiadomości protokołu L2CAP z żądaniem odpowiedzi (echo request) 70 • BlueBump – umożliwia połączenie z telefonem ofiary bez jej wiedzy jeśli wcześniej istniało uwierzytelnione połączenie. Jego działanie polega na manipulacji przechowywaniem klucza połączenia (link key). Wobec tego można sobie zadać pytanie dlaczego zdecydowałem się użyć Bluetootha, skoro jest tak dużo zagrożeń związanych z komunikacją opartą o ten protokół. W tym miejscu warto zastanowić się nad tym, czy chcemy mieć komunikację z urządzeniami za pomocą jakiegokolwiek okablowania, czy też drogą radiowa będzie odpowiedniejsza (bezpieczeństwo i uciążliwe kable, czy wygoda i ryzyko związane z narażaniem się na różne ataki ). W grupie protokołów radiowych Bluetooth wydaje się rozwiązaniem najlepszym patrząc z punktu widzenia zastosowania w Inteligentnym Budynku i nie bez znaczenia jest to, iż protokół ten jest bardzo intensywnie rozwijany. Grupa SIG stara się zwalczać wszelkie problemy, myślę że w ciągu kilku lat uda im się opracować algorytmy, które wykluczą wszelkiego rodzaju ataki. W przyszłości na podstawie mojej aplikacji może powstać bardzo duży system, który umożliwi sterowanie wieloma urządzeniami. Kod programu sterującego innymi urządzeniami jest napisany zgodnie z konwencją pisania programów pod Symbian OS, co powinno ułatwić rozwój aplikacji. Podsumowując cały temat związany z Inteligentnym Budynkiem, po zapoznaniu się z różnymi technologiami umożliwiającymi realizację praktyczną, z całą pewnością mogę stwierdzić, że jest to zagadnienie o które w przyszłości opierać się będzie budownictwo na całym świecie. Zaawansowane systemy kontrolujące niemal wszystko, co jest związane z budynkiem będą codziennością. 71 BIBLIOGRAFIA [1] Richard Harrisom, „Symbian OS C++ for Mobile Phones”, John Wiley & Sons Ltd 2003 [2] Rafał Fabich, Rafał Fetorków, strona zrealizowana w ramach przedmiotu "Środowisko telekomunikacyjne sieci komputerowych", http://fedik.republika.pl [3] SMARTech, Zastosowania Inteligentnego Budynku, http://poradnik.smartech.pl/ [4] Soft-Net, Zastosowania Inteligentnego Budynku, http://www.soft-net.com.pl [5] Piotr Zwierzchowski, „Oświetlenie w inteligentnych budynkach”, 2005 http://www.steruj.pl/index2.php?option=com_content&do_pdf=1&id=6 [6] Mariusz Szepietowski „Porównanie systemów inteligentnego domu - część I, II i III„, 2007 http://budujemydom.pl/component/option,com_content/task,specialblogcategory/ac t,view/id,1358/Itemid,45/ [7] Krzysztof Nowicki, „Ethernet - sieci, mechanizmy”, wyd. Infotech 2006 [8] Brent A. Miller, Chatschink Bisdikian, Ph. D., “Uwolnij się od kabli - Bluetooth”, Helion, Gliwice 2003 [9] Bzowski Remigiusz, Cerankowski Łukasz, „System zabezpieczenia w inteligentnym domu”, Elbląg 2005 http://www.elektrycy.cba.pl/nauka/informatykawelektroenergetyce/System_zabezpi eczenia_w_inteligentrnym_budynku.pdf [10] Jerzy Mikulik, „Budynek inteligentny. Tom II. Podstawowe systemy bezpieczeństwa w budynkach inteligentnych”, wyd. Politechniki Śląska 2005. [11] A. Janikowski „Sieci domowe cz.1”, 2001, http://www.networld.pl/artykuly/9289.html [12] A. Janikowski “Sieci domowe cz. IV - Sieci bezprzewodowe”, http://www.networld.pl/artykuly/21058.html [13] A. Janikowski, „PLC - prąd i dane w jednym gniazdku“, Networld – wydanie specjalne, nr 1/2002 [14] MainNet Communications Ltd, „BPL / PLC Technology Overview”, 2007, http://www.mainnet-plc.com/mainnet/home/page.aspx?id=1 [15] S. Chemishkian, „Building Smart Services for Smart Home”, Networked Appliances, 2002. Proceedings. IEEE 4th International Workshop on, 2002. 72 [16] Przemysław Pawełczak, Krzysztof Jakubik „Co nowego w PLC?”, 2006 http://cyfrowydom.idg.pl/artykuly/51611.html [17] Ascom Poland Sp. z o.o., opis techniczny systemu ASCOM PLC, http://networld.pl/suplementy/urzadzenia/ascom.html#charakt [18] Krzysztof Pietrzak, „Sieci HomePlug”, 2006, http://cyfrowydom.idg.pl/artykuly/50188.html [19] Andrzej Janikowski, “Sieci domowe”, 2002, http://wireless.idg.pl/artykuly/24453.html [20] XinWang, Georgios B. Giannakis, “CSMA/CCA: A Modified CSMA/CA Protocol Mitigating the Fairness Problem for IEEE 802.11 DCF”, http://www.hindawi.com/GetArticle.aspx?doi=10.1155/WCN/2006/39604&e=REF [21] Małgorzata Szafarz, „Inteligentny budynek”, 2006, http://nowebiuro.pl/biuro/kategorie/artykuly/Inteligentny;budynek-12,12129.html [22] Wojciech Wiśniewski, „Zasady działania systemu EIB”, http://eib.pl/?60320401 [23] IrDA Specifications, http://www.irda.org/displaycommon.cfm?an=1&subarticlenbr=7 [24] The HomeRF Technical Committee, “HomeRF 2.0 Specification Revision 2.01”, 2002, http://palowireless.com/homerf/homerfspec.asp [25] Marcin Suszkiewicz, “ZigBee - sieci energooszczędne”, 2004, http://www.idg.pl/artykuly/45542.html [26] ZigBee Alliance, ZigBee Specification Document 053474r13, 2006, http://www.zigbee.org/en/spec_download/download_request.asp [27] Bluetooth Specification Version 2.1 + EDR [vol 0], 2007, http://www.bluetooth.com/Bluetooth/Learn/Technology/Specifications/ [28] Philips, “UM_1SPP BGB203 BT 2.0 Serial Port Profile Module User’s Guide”, 2005 [29] Oficjalna strona Symbian OS, http://www.symbian.com [30] Cezary Kramp, „Systemy także w komórkach”, 2004 http://www.pcworld.pl/artykuly/44802.html [31] Portal poświęcony systemowi operacyjnemu Symbian, http://www.symbianos.pl [32] IETF Internet Draft – “Simple Service Discovery Protocol/1.0”, www.upnp.org [33] Choonhwa Lee and Sumi Helal “Protocols for Service Discovery in Dynamic and Mobile Networks”, 2002 Nova Science Publishers, Inc, http://www.harris.cise.ufl.edu/projects/publications/servicediscovery.pdf 73 [34] Andreas Jakl, „Pierwsze kroki w C++ dla Symbian OS”, Software 2.0, 5/2005 [35] Michael J. Jipping, “Symbian OS - Communications Programming”, published by John Wiley & Sons 2004, ISBN 0-470-88430-2 [36] Network Working Group, “RFC 2608 - Service Location Protocol, Version 2”, 1999 www.faqs.org/rfcs/rfc2608.html [37] International Telecommunication Union, “What is a UUID?”, http://www.itu.int/ITU-T/asn1/uuid.html [38] Sun Microsystems, White Paper, “Jini Architectural Overview”, www.sun.com/software/jini/whitepapers/architecture.pdf [39] Alan Berkema, “Minimal Basic Printing Profile Requirements for a Sender”, 2002, http://www.bluetooth.com/NR/rdonlyres/497756B8-1066-48D6-99EC0363D879FC27/0/Minimal_BPP_Reqs_For_Sender.pdf [40] Embedded Artists AB, “LPC2104 Color LCD Game Board User’s Guide”, 2006, http://.EmbeddedArtists.com [41] Embedded Artists AB, “QuickStart Program Development User’s Guide”, 2005, http://.EmbeddedArtists.com 74 Dodatek A Zawartość nośnika CD-ROM Aplikacja na telefon komórkowy – załączone oprogramowanie jest w dwóch wersjach: • programu wykonywalnego w postaci pliku SIS (AplikacjaNaTelKom\SIS) • plików źródłowych całej aplikacji (katalog AplikacjaNaTelKom\Sources) Aplikacja na PC – załączone w dwóch wersjach: • program wykonywalny w postaci pliku EXE (AplikacjaNaPc\EXE) • program w postaci plików źródłowych (AplikacjaNaPc\Sources) Praca mgr – tekst pracy w dwóch wersjach: • plik PDF (TekstPracyMgr\PDF) • plik DOC (TekstPracyMgr\DOC) SDK + Sterowniki do Bluetooth BlueSoleil • Katalog SDKiSterownikiBlueSoleil Materiały elektroniczne • Katalog Materiały elektroniczne Użyte rysunki • Katalog Rysunki do pracy Raporty autentyczności pracy • Katalog Pelny raport Systemu antyplagiatowyego Plagiat.pl • Katalog Skrócony raport Systemu antyplagiatowego Plagiat.pl Instalacja CodeWarrior + SDK (wersja 15 dniowa) • Katalog CodeWarrior + SDK LPC Game Board – sterowniki + programy • Katalog LPC 75 Dodatek B Raport skrócony wygenerowany przez System Antyplagiatowy Plagiat.pl, za pomocą witryny http://plagiat.pl 76 77 78 79