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의 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 샘플 코드
import requests
import json
url = "https://wps-backend-822395763299.us-central1.run.app/wps"
# 요청 데이터
payload = {
    "clientId": "wpstest",
    "clientSecret": "wpstest",
    "wifiAPs": [
        {
            "bssid": "00:23:aa:02:24:90",
            "ssid": "T wifi zone",
            "rss": -24,
            "frequency": 5000,
        },
        {
            "bssid": "0a:23:aa:02:24:92",
            "ssid": "T wifi zone_secure",
            "rss": -24,
            "frequency": 5000,
        },
    ],
}
headers = {"Content-Type": "application/json"}
try:
    response = requests.post(url, json=payload, headers=headers, timeout=30)
    result = response.json()
    print(json.dumps(result, indent=2, ensure_ascii=False))
except Exception as e:
    print(f"오류 발생: {e}")