iBeacon… im więcej o nim wiem tym bardziej mi się podoba…

iBeacon-Qart-ikonka
iBeacon to technologia lokalizacji za pomocą Bluetooth low energy (BLE) udostępniona przez Apple wraz z iOS 7.0 (7.1). Obyło się to bez wielkiego rozgłosu lecz teraz pojawia się cały wysyp urządzeń i zastosowań (nawet Samsung próbuje skopiować tę technologię o czym mówiliśmy w czwartym pear 2 pear). Do tego doszło, że sam zacząłem zgłębiać tajniki iBeacon „od środka” i podzielę się z Wami zdobytą już wiedzą…



Już kiedyś pisałem o iBeacon. Wieszczyłem w tym wpisie kres NFC choć nie we wszystkich zastosowaniach: NFC oczywiście nie zaginie całkiem bo świetnie nadaje się zamiast np. kodów kreskowych, w magazynach, sklepach. Może się okazać, że naprowadzeni na promocję w sklepie za pomocą iBeacons za towary „z koszyka” zaskandowane w kasie przez czytnik NFC zapłacimy przez iBeacons. Generalnie to wiele się nie pomyliłem ;-) Co prawda Apple zastosował technologię NFC w płatnościach, a nie iBeacon ale dla iBeacon’a zarezerwowane zostały ważniejsze funkcje.

Wracając do tematu…
iBeacon zostało opracowane jako technologia lokalizacji na małe odległości głównie (ale nie tylko) w pomieszczeniach. Taki był pierwotny pomysł. Działa ona w oparciu o malutkie urządzenia Bluetooth LE rozgłaszające swoją obecność drogą radiową na odległość maks. do 30 m. Zazwyczaj są one zasilane baterią (jedna „pastylka” wystarcza na rok działania) ale są też wersje zasilane ogniwami słonecznymi czy nawet pobierające energię z otoczenia zaśmieconego falami radiowymi. Każde z urządzeń ma nadany iBeacon UUID (nie mylić z UUID Bluetooth, które w iBeaconach się zmienia[!]) oraz dwa parametry: Major i Minor.

iBeacon-jkk
Jeden z moich modułów zakupionych na testy „od Chińczyka”

Jak to działa od strony aplikacji?
Za obsługę iBeacon w iOS odpowiada CoreLocation (to samo API, które jest odpowiedzialne za lokalizację GPS itp.). W aplikacji ustawiamy „region” na jaki ma nasz program reagować. Reagować może na wejście w region, wyjście z niego i dodatkowo gdy znajdujemy się w regionie, na zmianę odległości od jego centrum (urządzenia iBeacon). Region definiujemy za pomocą iBeacon UUID (zaprogramowany w naszych iBeaconach), który możemy dodatkowo uściślić używając parametrów Major i Minor. Przykładowo UUID określa sieć sklepów, Major miasta, a Minor określony sklep. Czyli możemy ustawić aplikację tak aby reagowała na pojawienie się w pobliżu dowolnego sklepu danej sieci w określony sposób ale już w inny gdy znajdujemy się w konkretnym sklepie (np. informacja o lokalnej wyprzedaży).
Oczywiście to tylko przykład bo już teraz pojawiło się dużo całkiem odmiennych zastosowań iBeacon. Do jednych z ciekawszych należy lokalizacja przedmiotów, które często gubimy, za pomocą przyczepionych do nich „iBeaconów”. W takiej sytuacji „regiony” są mobilne! Jeszcze ciekawsze jest to, że każde z iUrządzeń wyposażonych w Bluetooth 4.0 i iOS 7.1 może samo stać się iBeaconem i być „namierzane” (oczywiście gdy uruchomimy na nim odpowiednią aplikację i jest ona aktywna) przez inne. Widziałem też iBeacony do nadzoru (zabezpieczenia) przedmiotów, dzieci czy zwierząt. Jeżeli się one oddalą od naszego iPhone to wywołany zostanie „alarm” opuszczenia regionu.
A to nie koniec ciekawostek związanych z iBeacon. Aby regiony były wykrywane przez nasze iPhony (czy iPady) aplikacja je obsługująca wcale nie musi być aktywna! Ba… lepiej… może być „ubita” przez nas lub przez system (i nie występuje na liście aplikacji po dwukrotnym naciśnięciu klawisza Home) lecz nadal może obsługiwać regiony iBeacon! Po prostu gdy przy uruchomieniu, program ustawi odpowiednie regiony (iBeacon UIDD plus ew. Major, Minor) system przejmuje ich namierzanie i potrafi ożywić (w tle) aplikację gdy stwierdzi wejście, opuszczenie regionu lub zmianę odległości (zależnie na co reakcję w programie ustawimy - nie musi obsługiwać wszystkich tych zdarzeń). Oczywiście reakcja na zdarzenia „iBeaconowe” gdy aplikacja jest w tle lub „ubita” są znacznie rzadsze i Apple narzuca pewne ograniczenia na procesy jakie „reanimowana” aplikacja może wykonać po otrzymaniu powiadomienia z systemu. Tak czy siak widać jak bardzo Applowi zależy na tym aby lokalizacja za pomocą iBeacon działała.

Jeżeli bardzo nie chcemy aby nasze iUstrojstwo coś namierzało to mamy kilka możliwości: odinstalować dany program, wyłączyć w Ustawieniach Odświeżanie w tle, a w ostateczności wyłączyć Bluetooth całkiem.
Apple zadbało również aby nie można było zbyt łatwo podszyć się pod obce iBeacony. W iOS nie jesteśmy w stanie odczytać iBeacon UUID (jedynie UUID Bluetoot’a). Czyli możemy zrobić lub pobrać (jest ich trochę) aplikację do skanowania otoczenia na wypadek występowanie urządzeń BLE ale nie poznamy iBeacon UUID. A samo API iBeaconowe aby „namierzać” urządzenia i regiony wymaga podania iBeacon UUID. Ograniczenie dotyczy tylko iOS więc jak się uprzemy do możemy naszym Maciem z BLE odczytać te identyfikatory. Czyli możemy sprawdzić jakie UUID w sowich iBeaconach stosuje firma X i namierzać je we własnym celu, we własnej aplikacji.

Same urządzenia iBeacon są zazwyczaj przez producenta zabezpieczane hasłem przed zmianą parametrów. Koszt urządzenia zależy od producenta i ew. dołączonego rozwiązania programowego (system do ustawiania parametrów i zarządzania iBeaconami + ew. dedykowana aplikacja dla użytkowników). Najtańsze moduły bez specjalnego oprogramowania kosztują „u Chińczyka” (zależnie od ilości, wykonania, zasilania) od kilku do kilkudziesięciu dolarów).

Podsumowując:

  • API iBeacon działa nawet jak aplikacja, która ustawiła parametry regionu nie jest uruchomiona. Lepiej! Działa nawet po restarcie czy włączeniu systemu!
  • Można włączyć reakcję na wejście w region, wyjście z niego i zmianę odległości (trzy strefy: bezpośrednie [poniżej 1 m], blisko [1-3 m], daleko [ponad 3 m], nieznana [coś tam łapie ale za słabo aby określić odległość]. Urządzenia można kalibrować aby precyzyjniej określać odległość lecz przeszkody mają duży wpływ na pomiar.
  • iUrządzenia też mogą być iBeaconami ale tylko jak aplikacja „propagująca” jest aktywna.
  • Urządzenia iBeacon nie mogą zbierać informacji o namierzających je iPhonach (tak jak w GPS - satelity nas nie namierzają tylko my satelity).
  • Bluetooth UUID urządzeń iBeacon się zmienia co sesję i nie może służyć do ich identyfikacji przez zwykłe API Bluetooth.

Już znane lub wymyślone przeze mnie zastosowania:
  • Nawigacja w pomieszczeniach.
  • Obsługa ekspozycji np. w muzeach. Zbliżamy się do eksponatu, a aplikacja wyświetla lub wygłasza informacje o nim.
  • To samo w otwartym terenie… zbliżamy się do „pomnika przyrody” i program wyświetla nam informacje o nim.
  • Odnajdowanie zagubionych przedmiotów z przytwierdzonym iBeaconem.
  • Pilnowanie aby coś się od nas nie oddaliło np. plecak czy dziecko.
  • Odszukiwanie się w tłumie np. aplikacja na iPhone, która rozgłasza naszą obecność i/lub nasłuchuje innych poszukiwanych osób.

A to tylko tak na szybko…
Macie jakiś pomysł? Dajcie znać… może coś razem zrobimy! Mam jeszcze kilka iBeaconów na testy i już zaczęte prototypowe aplikacje ;-)





Informacje okazały się przydatne?
Daj znać znajomym o tym wpisie i zrób to po applowsku ;-)
MacWyznawca udostępnij wpisMacWyznawca udostępnij wpis

blog comments powered by Disqus