Skip to main content

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: 승인된 사용자 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 샘플 코드

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