Estimote Beacons

By Kwiecień 13, 2015Android, Development, iOS

Czym są beacony?

Beacony to urządzenia emitujące sygnał radiowy, który może być odbierany przez telefony komórkowe. Działają one w technologii Bluetooth 4.0 Smart, znanej również jako Bluetooth Low Energy. Jest to kompletnie nowy protokół komunikacji, którego nie należy kojarzyć z poprzednim Bluetooth’em. BLE nie wymaga parowania, używa częstotliwości 2.4Ghz – tej samej co routery sieci WiFi.

Technologia ta jest dostępna w smartfonach z Androidem od wersji 4.3 i oraz iPhone od modelu 4s.

Sposób działania

Sygnał nadawany przez beacony może być odbierany przez smartfony w promieniu od kilku cm do około 70m (w zależności od panujących warunków, podobnie jak sygnał WiFi). Urządzenia odbierające sygnał, mogą estymować odległość od beacona, na podstawie jego siły (RSSI). Im bliżej beacona się znajdujemy, tym mocniejszy sygnał.

W ten sposób, urządzenie odbierające sygnał od kilku beaconów może obliczyć odległość do każdego znich i estymować swoje relatywne położenie.

Każdy beacon ma swój unikalny identyfikator. Identyfikator ten ma 20 bajtów i składa się z:

  • proximityUUID (16 bajtów)
  • major number (2 bajty)
  • minor number (2 bajty)

Na podstawie odległości oraz identyfikatora beacona, urządzenie odbierające sygnał może podejmować różne akcje np. na podstawie ID pobrać informacje z web service’u i wyświetlić je.

Android

Beacony, których używamy w Smartsoft są od Estimote, więc aby w pełni wykorzystać ich możliwości będziemy używać SDK od Estimote (https://github.com/Estimote/Android-SDK).

Aby używać SDK w naszej aplikacji, musimy dodać do AndroidManifest następujące pozwolenia

oraz dodać serwis odpowiedzialny za monitorowanie beaconów

Jakie możliwości daje nam Estimote SDK ?

Ranging

Dzięki tej funkcji możemy w łatwy sposób określać odległość od wykrytych w pobliżu beaconów. Monitorować możemy beacona o danym ID lub też wszystkie beacony jakie znajdą się w zasięgu. W przypadku pojedynczego beacona nasz kawałek kodu odpowiedzialny za jego monitorowanie powinien wyglądać następująco

Natomiast jeśli chcemy monitorować wszystkie beacony w zasięgu, podczas budowania obiektu typu Region, nie podajemy identyfikatora beacona

 Monitoring

O ile ranging’u powinno się używać podczas gdy nasza aplikacja jest uruchomiona, monitorowanie służy do obserwowania beaconów w tle. Monitorować możemy beacony na podstawie ich ID, jednak każda ze składowych tego ID jest opcjonalna.

Cały obszar objęty zasięgiem danego beacona podzielony jest na strefy

  • immediate
  • near
  • far
  • unknown

Aby obliczyć w jakiej strefie znajduje się wykryty beacon używamy metody

lub

Podsumowanie

Zasada działania beaconów jest bardzo prosta, a możliwości jakie nam dają są bardzo duże. Wiele przykładów i inspiracji do tworzenia aplikacji znajdziemy na stronie Estimote – https://community.estimote.com/hc/en-us/articles/202885933-Problems-to-Solve-with-Beacons

 

Bartek

About Bartek

Android developer, owner of smartsoft.io