Skip to content

WPS 적용 가이드

WPS (Wifi Positioning System)

loplat WPS(WiFi Positioning System) API 는 WIFI AP 정보를 바탕으로 정확한 위치를 반환합니다. 평균 15m 내외의 정확도로 전국 어디에서 휴대폰, 키즈폰 등 IoT 기기들의 위치정보를 확인할 수 있습니다.

API 사용을 위한 인증키는 dev@loplat.com 으로 요청부탁드립니다.

WPS 요청

WPS 요청은 POST를 사용하여 다음의 URL로 전송됩니다.

URL 주소

https://loplat-ai.appspot.com/wps

Request Format

  • clientId: 승인된 사용자 id
  • clientSecret: 승인된 사용자 secret value
  • wifiAPs: WiFi AP 정보의 배열

    {
        "clientId": "wpstest",
        "clientSecret": "wpstest",
        "wifiAPs": [
    	    {"bssid": "00:11:22:33:44:55:66", "ssid": "starbucks", "rss": -65, "frequency": 2452},
    	    {"bssid": "22:33:44:55:66:77:88", "ssid": "olleh", "rss": -75, "frequency": 5765},
            ...
        ]
    }
    

WiFi AP 정보 상세

  • bssid: AP의 bssid(MAC)주소. 구분기호는 : (콜론) 필수
  • ssid: (string) AP의 ssid
  • rss: (int) 해당 AP로부터 수신된 신호 세기
  • frequency: (int) AP의 주파수

WPS 응답 (Response)

정상 (HTTP 상태코드 : 200)

위치요청이 성공적인 경우, 위치(위도,경도)정보와 정확도(에러반경)을 JSON형태로 반환합니다.

  • location: 기기의 예상 위도 및 경도. latitude와 longitude 및 floor 하위필드를 포함함.
  • accuracy: 예상 위치의 정확도(미터 단위).
{
    "location": {
	    "lat": 37.502341,
        "lng": 127.055941,
        "floor": 1
    },
    "accuracy": 80.0
}

오류

오류의 경우, HTTP 상태코드가 오류로 설정되고 다음과 같은 정보가 JSON 형태로 전달됩니다.

  • reason: 오류 이유
  • code: 오류 코드 값
  • message: 오류 상세 내용
{
    "error": {
	    "reason": "badRequest",
        "code": 400,
        "message": "invalid json format"
    }
}
오류종류

Bad Request (HTTP 상태코드 : 400)

리퀘스트 값 정보 혹은 형태 오류

Forbidden (HTTP 상태코드 : 403)

사용자 인증 실패

Not Found (HTTP 상태코드 : 404)

위치 인식 실패

Python 샘플 코드

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def get_http_request():
    return req

data = {
    'clientId': 'wpstest',
    'clientSecret': 'wpstest'
    'wifiAPs': [{'bssid': '88:36:6c:13:21:10', 'ssid': 'buzzmetrix_2', 'rss': -61, 'frequency': 5765},
            {'bssid': '64:e5:99:42:b8:f8', 'ssid': 'dale', 'rss': -36, 'frequency': 2452}
    ]
}

try:
    url = 'https://loplat-ai.appspot.com/wps'
    req = urllib2.Request(url)
    req.add_header('Content-Type', 'application/json')
    response = urllib2.urlopen(req, json.dumps(data))
    string = response.read().decode('utf-8')
    jresponse = json.loads(string)
    print jresponse
except urllib2.HTTPError as e:
    print e.code
    error = e.read()
    print error