Sigfox位置情報サービスAtlas Suiteのひとつとして提供されているAtlas WiFi。WiFi MACアドレスをSigfoxで送信することにより、IoTデバイスの位置情報を推定するサービスですが、こちらの記事にある通り、位置推定のコアは欧州のHere社との提携の下、開発されています。
ここでは、Altas WiFiのサービス仕様を振り返りつつ、HERE社の位置情報サービス(HERE Positioning API)との違いを検証します。
#Atlas WiFiサービス
Sigfox社が提供するAtlas WiFiサービスの基本的な使い方はこちらを参照してください。
Atlas WiFiサービスを使用するには、KCCSのパートナーからAtlas WiFiに対応した回線サービスを購入いただく必要があります。(Sigfox Buyからの回線には、このサービスは含まれていません)
そのうえで、IoTデバイスでスキャンしたWi-FiネットワークのMACアドレスを2つ送信することとなりますが、送信するMACアドレスは、サービスのアベイラビリティを向上するために、いくつかの注意点があります。
##Atlas WiFiにおけるMACアドレスの選択
Atlas WiFiにおいて送信するMACアドレスは下記のルールに従ってください。
###MUST
- ビーコンフレームもしくはプローブ応答フレームで得られたMACアドレスであること
- アドホックモードネットワークではなく、インフラストラクチャモードのネットワークであること
- ユニキャストであること(**先頭オクテットのb0ビットが"0"**であること)
- リザーブMACアドレス(00:00:00:00:00:00、FF:FF:FF:FF:FF:FF)でないこと
###Recommendation
- グローバルアドレスであること(**先頭オクテットのb1ビットが"0"**であること)
- テザリング端末やWi-Fiモバイルルータをフィルタリングすること(SSIDでの識別を推奨)
- ステルスSSIDを避けること
- RSSIが強いアクセスポイントを優先すること
##Atlas WiFiサービスを適用しないメッセージ
上記ルールの下、選択された2つのMACアドレスをSigfox上りメッセージで送信することにより、Altas WiFiによる位置推定結果をData Advanced Callbackで受信することができますが、位置情報ではないメッセージを送りたい場合もあるかと思います。
そのような場合は、先頭オクテットのb0ビットとb1ビット両方を"1"とすることにより、そのメッセージは位置推定からは外れます。
#HERE社Positioning API
一方、HERE社は、同様のサービスをPositioning APIとして提供しています。
HERE社のREST APIは、これ以外にもMapサービスやジオコーディングサービスなど多岐にわたっていますので、同社のDeveloperサイトを参考にしてください。
Positioning APIはAPI KEYを取得したうえで、下記エンドポイントにMACアドレスをPOSTすることにより利用可能です。
https://pos.ls.hereapi.com/positioning/v1/locate?apiKey={YOUR_API_KEY}
HTTPヘッダにContent-Type=application/json
を追加し、下記Bodyを送信します。
{
"wlan": [
{"mac": "AA-AA-AA-AA-AA-AA"},
{"mac": "BB-BB-BB-BB-BB-BB"},
{"mac": "CC-CC-CC-CC-CC-CC"}
]
}
応答は下記のようなJSONが返ってきます。
{
"location": {
"lat": 52.5187469,
"lng": 13.37551117,
"accuracy": 338
}
}
#HERE Positioning APIとSigfox Atlas WiFiの比較
##比較その1
仮に、この2つのMACアドレス(BC-5C-4C-15-FE-4?、84-AF-EC-F5-47-F?)が取得できたとします。
?のところは、隠しています。
Sigfox Altas WiFiとHERE Positioning APIそれぞれに上記2MACアドレスを送信したところ、下記の通り、同じ位置推定結果が得られました。
Sigfox Altas WiFi | HERE Positioning API | Google Geolocation API | |
---|---|---|---|
lat | 35.7?78051 | 35.7?78051 | 35.7x83267 |
lng | 139.7?59457 | 139.7?59457 | 139.7x62130 |
accuracy(radius) | 250 | 250 | 150 |
確かに、HERE社のエンジンを使っていることが推測できます。 | |||
Google Geolocation APIとも比較しましたが、今回の場合、accuracyはGoogleの方が良いものの、実際の位置との誤差はHEREの方が若干良い結果でした。(これは、場所によって変わると思いますが) |
##比較その2
次に、2つ目のMACアドレスを別のものに変え、この2つのMACアドレス(BC-5C-4C-15-FE-4?、50-C4-DD-CD-6B-E?)を送信してみました。
結果は、HERE社のPositioning APIは404エラーを返してきました。おそらく、2つ目のMACアドレスが登録されていないのではないかと思います。
Sigfox Altas WiFi | HERE Positioning API | Google Geolocation API | |
---|---|---|---|
lat | 35.7?3913 | 404 error | 35.7x83267 |
lng | 139.7?3475 | 404 error | 139.7x62130 |
accuracy(radius) | 250 | 404 error | 150 |
これから想像するに、Sigfox Atlas WiFiサービスは、メッセージを受信したSigfox BaseStation情報も位置推定に使われており、少ないMACアドレス数でも位置推定しやすくしているのだと思います。(あくまで想像ですが)
###404エラーはやめて
HERE社のPositioning APIですが、送信したMACアドレスから位置推定できなかった場合に、404エラーを返してきます。(こんな感じ)
{
"error": {
"code": 404,
"message": "Not Found",
"description": "Position not found"
}
}