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://wps-backend-3q6nicdgla-uc.a.run.app/wps
Request Format¶
clientId
: 승인된 사용자 idclientSecret
: 승인된 사용자 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의 ssidrss
: (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://wps-backend-3q6nicdgla-uc.a.run.app/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 |