iBeacons – informacja kontekstowa dla aplikacji mobilnych.

Co to jest iBeacon i jak działa?

iBeacon to urządzenie proste. Nie tyle technicznie, ale jeśli chodzi o  zasadę działania. Jego jedynym zadaniem jest wysyłanie swojego UUID (Universally Unique IDentifier), oraz dwóch liczb Major i Minor, co pewien zdefiniowany z góry czas, z pewną zdefiniowaną siłą sygnału (co ma bezpośredni wpływ również na obszar w którym taki sygnał da się wykryć).

iBeacon

 

Jeśli chodzi o elektronikę, to jest to już nieco bardziej skomplikowany temat. Urządzenie na pewno musi posiadać jakieś zasilanie (najczęściej bateria), nadajnik i odbiornik BLE (Bluetooth Low Energy), pewnie jakiś mikroprocesor i pamięć do obsługi mini systemu operacyjnego, który przechowuje konfigurację nadajnika, zarządza nadawaniem sygnału, czy też obsługuje różne inne czujniki wpięte w iBeacona, np czujnik temperatury, żyroskop, itd.

Jak widać, iBeacon może być urządzeniem bardzo prostym jak i też nieco bardziej skomplikowanym, jeśli zostanie rozszerzone o dodatkowe czujniki. Cokolwiek by to nie było, zawsze iBeacon będzie wysyłał UUID, Major, Minor. I to jest to na czym należy się skupić na samym początku przy zgłębianiu tego tematu.

Jak można z tego korzystać?

No dobrze, powiesz, co z tego że jakiś tam beacon wyśle mi swój identyfikator i dwie liczby… Jak z tego skorzystać? Przecież nie noszę ze sobą komputera!

iBeacony nadają swój sygnał przy pomocy Bluetooth Low Energy. Jest to stosunkowo młody standard komunikacji, zużywający niewiele energii w porównaniu do poprzednich generacji Bluetooth. Wiele, na prawdę bardzo wiele smartfonów od dawna dostępnych na rynku wspiera już BLE. Jeśli chodzi o urządzenia Apple są to iPhone, generacje 4S, 5, 5C, 5S. Czyli od 3 lat mamy już w regularnej sprzedaży telefony z BLE. Zaskoczony? Większą listę przeróżnych urządzeń, możesz znaleźć tutaj.

Wyobraź sobie, że masz bazę danych nt 100 ibeaconów, która trzyma informację przyporządkowującą daną krotkę: (UUID, Major, Minor) do konkretnej lokalizacji (konkretnego miejsca). Nie ma znaczenia czy dany nadajnik powiązany jest z jakimś towarem na półce, wejściem do jakiegoś działy w sklepie, czy jakimś eksponatem w muzeum. To jest coś wtórnego, coś trzymanego w bazie danych, co zawsze można wyedytować przy przeniesieniu beacona w inne miejsce.

A więc mamy już bazę danych i jesteś w stanie po odczytaniu sygnału z iBeacona, dowiedzieć się, co to za ibeacon wysłał swoje dane (inaczej: w zasięgu jakiego ibeacona jesteś, w jakim obszarze się znalazłeś). Mając tę informację, będziesz wiedział, jak zareagować na wejście lub wyjście z danego obszaru, bo wiesz co to za obszar, czy to jest kilka metrów od najsłynniejszego obrazu, czy to wejście na dział RTV w supermarkecie, czy to może sygnał z plecaka, który właśnie oglądasz na wystawie sklepowej. W zależności od tego gdzie więc się znajdujesz, wiesz co ma zrobić Twoja aplikacja mobilna

Aplikacja iOS jest w stanie nasłuchiwać na maksymalnie 20 różnych UUID nadawanych przez ibeacony. Mało? Niby tak, ale nie zapomnij, że masz do dyspozycji, oprócz UUID,  jeszcze liczby Major i Minor. Zatem przykładowa konfiguracja może wyglądać np tak: tworzysz sobie jedno UUID dla wszystkich beaconów jakich będziesz używał w Twojej aplikacji. Następnie dla każdego beacona tworzysz unikalny zestaw Major i Minor wg Twojego schematu, tak by to miało jakiś sens. Taki zestaw danych zapisujesz już do wspomnianej wcześniej bazy danych. Twój telefon (a dokładnie aplikacja, która zarejestrowała się na nasłuchiwanie zdarzeń nt beaconów z konkretnym UUID), wchodząc w zasięg beacona (lub go opuszczając) dostaje informację nt co to za UUID, Major i Minor. Biorąc tę informację, telefon wysyła  zapytanie do bazy danych i dostaje np polecenie wyświetlenia na ekranie telefonu mapki najbliższej okolicy, informacji o produkcie, przypomnienia, czy czegokolwiek sobie zażyczysz.

Funkcjonalność iBeaconów jest prosta: ich jedynym zadaniem ma być informowanie Twojego telefonu w jakim obszarze jesteś (wszedłeś lub opuszczasz). To co z tą informacją zrobi już Twoja aplikacja, to zależy tylko i wyłącznie od Twojej wyobraźni i potrzeb Twojego klienta. Po prostu, ibeacon dostarcza kontekst, a aplikacja ma go wykorzystać.

Kto to produkuje?

Lista producentów urządzeń typu iBeacon dostępna jest m.in. tutaj. Na szczególną uwagę zasługują jednak 2 (polskie!!!) startupy. Tak więc można stwierdzić, że w tym raczkującym i innowacyjnym biznesie (dostawców iBeaconów nie ma tak dużo na świecie), w Polsce mamy swoją reprezentację, a na dodatek nie 1, ale aż 2 firmy. Miałem kontakt z urządzeniami obu firm, dlatego pozwoliłem sobie poniżej na porównanie obu opcji.

  • Estimote – $99 za 3 sztuki w developer packu
  • Kontakt.io – $81 za 3 sztuki + 2 dodatkowe obudowy w zestawie

Jeśli chodzi o różnice między urządzeniami obu w/w firm to dotyczą one 3 obszarów: obudowa urządzenia, zasilanie, zakres funkcjonalności. Dodatkowo oprócz różnic w samym urządzeniu, różne jest oprogramowanie i SDK wspierające urządzenia.

Beacon Estimote, źródło: http://estimote.com
Beacon Estimote, źródło: http://estimote.com

 

Obudowa beaconów Estimote’a jest wykonana z silikonu i jest wodoszczelna. Płaska powierzchnia z tyłu urządzenia umożliwia przyklejenie go do bardzo wielu powierzchni. Jeśli trzeba takie urządzenie przenieść, wystarczy je oderwać, wyczyścić i można mocować na nowym miejscu. Bateria zasilająca te beacony jest dużo mniejsza niż w przypadku Kontakt.io. Aby wymienić baterię w beaconie Estimote trzeba niestety zniszczyć obudowę, ponieważ jedyną możliwością wymiany baterii jest rozcięcie/rozklejenie/rozdarcie łączenia tylnej ścianki od pokrywy. Przez tą operację na beaconie tracimy niestety wodoszczelność urządzenia.

Jakiś czas temu Estimote wypuściło aktualizację firmware’u beaconów do 2.1 uaktywniając w nich czujnik temperatury i akcelerometr. Developerzy zyskali dostęp do 2 nowych funkcjonalności beaconów. Niby fajnie, ale… sprawdzając temperaturę na 2 różnych beaconach umieszczonych obok siebie w oryginalnym pudełku dev packa otrzymałem takie rezultaty: jeden beacon pokazał temperaturę 26 stopni a drugi 30 stopni Celsjusza. Niedokłądność pomiary rzędu 13,3% to jednak spory minus jak na takie urządzenie. Dokłądności rzędy 0,0001 stopnia się nie spodziewałem, ale też nie spodziewałem się aż takiej niedokładności…

Dziś (11.08.2014) dostałem maila, że dostępna jest nowa aplikacja iOS do zarządzania beaconami Estimote’a, która umożliwia włączenie zarządzania energią, co umożliwi inteligentne oszczędzanie energii.  Temat ten na pewno zbadam i być może powstanie na ten temat jakiś oddzielny wpis, jeśli będzie to miało sens.

 

Kontakt.io beacon, źródło: http://kontakt.io
Kontakt.io beacon, źródło: http://kontakt.io

 

iBeacony Kontak.io mają plastikową obudowę, którą można zawiesić na haczyku/kołku wbitym w ścianę lub przykręcić do wybranej powierzchni. Obudowę zdemontować jest bardzo łatwo, dzięki czemu proces wymiany baterii jest wręcz trywialny. Nie musimy kroić czy rozrywać obudowy urządzenia, aby wymienić baterię. Zaleta ta wynikająca z takiej a nie innej konstrukcji obudowy powoduje, że samo urządzenie nie jest wodoodporne.

Z tego co wiem, to beacony kontakt.io nie posiadają ani akcelerometru, ani czujnika temperatury.

Czy to ma sens?

iBeacony dodają do aplikacji mobilnych wg mnie bardzo ważną rzecz, tj kontekst. Używając aplikacji mobilnej w pewnym miejscu i czasie, możemy dostarczyć użytkownikowi lepszych informacji, przedstawić je w wygodniejszy sposób, itd. Aplikacja jest po prostu świadoma gdzie ten użytkownik się znajduje (czy to będzie informacja o piętrze w budynku, sklepie w galerii handlowej, sekcji/dziale supermarketu, czy przy konkretnym eksponacie w muzeum). Informacja ta jest ważna i odsłania spore możliwości dla autorów aplikacji mobilnych.

Nie znam wszystkich urządzeń typu iBeacon, ale zastanawiam się nad 1 rzeczą, czemu większość ich jest zasilana baterią? Dlaczego nikt nie wpadł na to, że jednak wymiana baterii co 2 miesiące lub częściej (w przypadku beaconów wysyłających sygnał co kilkanaście/kilkadziesiąt milisekund na maksymalny zasięg) będzie uciążliwa? Czy nie można było na przykład stworzyć urządzenia wpinanego w infrastrukturę sieci LAN i wykorzystać technologie Power over Ethernet? Na pewno byłoby to pewnym ograniczeniem dla jakiejś grupy zastosowań, ale w przypadku budynków, gdzie infrastruktura sieciowa jest już rozwinięta i gdzie beacony zawsze będą mieć swoje stałe miejsce, takie podejście byłoby według mnie o wiele lepsze niż zasilanie na baterię. Bateria ma to do siebie, że się rozładowuje i trzeba ją wymieniać. Potrzeba wymiany, skutkuje potrzebą monitorowania stanu baterii co jakiś regularny okres czasu. A jak opisałem powyżej, czasem też zmusza do fizycznego zniszczenia obudowy (lub jej wodoszczelnych właściwości).

Jestem bardzo ciekaw gdzie nas zawiedzie ta technologia, gdzie pójdą developerzy i jakie aplikacje zbudują w oparciu o iBeacony. Jak wiele z tej informacji kontekstowej będzie można „wycisnąć”? Estimote z tego co wiem celuje w Retail. Wg mnie zastosowanie iBeaconów na tym się nie skończy. Wydaje mi się, że powstanie masa aplikacji i masa pomysłów co z tym zrobić także poza tym obszarem. Czas pokaże. Pozostaje trzymać kciuki za oba polskie startupy i firmy z Krakowskimi korzeniami. Oby więcej takich ciekawych projektów z Polskimi korzeniami. I oby więcej success stories o jakich można rozmawiać i naśladować 🙂


Niniejszy post jest częścią serii postów pod tytułem: Jak stworzyć aplikację mobilną? Jeżeli zainteresowała Cię ta tematyka, to zachęcam do przeczytania pozostałych artykułów powiązanych z tworzeniem aplikacji mobilnych.


 

Dodaj komentarz