2016년 8월 16일 화요일

라즈베리 파이를 에디스톤 URL 비콘으로 사용하기 (Use Raspberry Pi as an Eddystone URL beacon)

이전 포스트인 라즈베리 파이를 비콘으로 사용하기를 먼저 보기를 권한다.

Eddystone beacon


Eddystone은 구글이 만든 프로토콜로 BLE 디바이스가 URL을 메시지로 브로드캐스트 할 수 있게 해 준다. Eddystone에 관한 자세한 내용은 github를 보면 된다. 현재 스펙은 3가지 타입(UID, URL, telemetry)의 브로드캐스트 메시지를 정의하고 있다.

Eddystone 비콘의 마법은 스마트폰 쪽에서 이 브로드캐스트 메시지를 기다리고 있다가 메시지를 받으면경고 메시지를 표시하거나 특정 동작을 수행할 수 있다.

이 튜토리어에서는 라즈베리 파이를 eddystone beacon으로 사용하는 방법을 보여준다.

Setting up the Pi


$ hciconfig
$ sudo hciconfig hci0 up
$ sudo hciconfig hci0 leadv 3
$ sudo hcitool -i hci0 cmd 0x08 0x0008 17 02 01 06 03 03 aa fe 0f 16 aa fe 10 00 02 77 65 62 67 61 7a 65 72 08 00 00 00 00 00 00 00 00

 바로 위의 명령 payload를 상세히 보면 다음과 같다.

0x08 - OGF (Operaton Group Field) -> Bluetooth Command Group (0x08)
0x0008 - OCF (Operation Command Field) -> HCI_LE_Set_Advertising_Data (0x0008)
17 - Length (23 bytes)
  02 - Length
    01 - Flags Data type value
    06 - Flags Data
  03 - Length
    03 - Complete list  of 16-bit Service UUID data type value
    aa - 16-bit Eddystone UUID
    fe - 16-bit Eddystone UUID
  0f - Length
    16 - Service Data data type value
    aa - 16-bit Eddystone UUID
    fe - 16-bit Eddystone UUID
    10 - Frame type -> URL
    00 - TX Power (calibrated)
    02 - URL Scheme 02 -> http://
    77 - 'w'
    65 - 'e'
    62 - 'b'
    67 - 'g'
    61 - 'a'
    7a - 'z'
    65 - 'e'
    72 - 'r'
    08 - 08 -> '.org'
  00 - 
  00 - 
  00 - 
  00 - 
  00 - 
  00 - 
  00 - 
  00 - 

위의 명령은 URL 'http://webgazer.org' 를 브로드캐스트 한다.
만일 다른 URL을 advertise하고 싶으면 아래 박스에 원하는 URL을 입력하면 그에 해당하는 명령을 자동으로 만들어 준다.


 
위의 명령을 라즈베리 파이에 입력해 주면 이제부터 라즈베리 파이가 Eddystone URL beacon으로 동작하게 된다. 아이폰에서 PhyWeb이나 안드로이드에서 크롬을 사용해 보면 링크가 뜨는걸 확인할 수 있다.

* 모든 설정이 끝났는데 안드로이드에서 비콘이 보이지 않는 경우 원인은 거의 99.9% 이상이 URL주소가 https:// 로 시작하지 않아서이다. 어떤 이유로...아마도 man in the middle attack에 대해 방어하기 위해 안드로이드의 크롬은 URL이 secure하기를 요구한다. 그러지 않으면 비콘이 발견되어도 트리거 되지 않는다.

댓글 없음:

댓글 쓰기