3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

HERE Positioning APIとSigfox Atlas WiFiの検証

Last updated at Posted at 2020-05-05

Sigfox位置情報サービスAtlas Suiteのひとつとして提供されているAtlas WiFi。WiFi MACアドレスをSigfoxで送信することにより、IoTデバイスの位置情報を推定するサービスですが、こちらの記事にある通り、位置推定のコアは欧州のHere社との提携の下、開発されています。
image.png
ここでは、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

  1. ビーコンフレームもしくはプローブ応答フレームで得られたMACアドレスであること
  2. アドホックモードネットワークではなく、インフラストラクチャモードのネットワークであること
  3. ユニキャストであること(**先頭オクテットのb0ビットが"0"**であること)
  4. リザーブMACアドレス(00:00:00:00:00:00、FF:FF:FF:FF:FF:FF)でないこと

###Recommendation

  1. グローバルアドレスであること(**先頭オクテットのb1ビットが"0"**であること)
  2. テザリング端末やWi-Fiモバイルルータをフィルタリングすること(SSIDでの識別を推奨)
  3. ステルスSSIDを避けること
  4. RSSIが強いアクセスポイントを優先すること

image.png

##Atlas WiFiサービスを適用しないメッセージ
上記ルールの下、選択された2つのMACアドレスをSigfox上りメッセージで送信することにより、Altas WiFiによる位置推定結果をData Advanced Callbackで受信することができますが、位置情報ではないメッセージを送りたい場合もあるかと思います。
そのような場合は、先頭オクテットのb0ビットとb1ビット両方を"1"とすることにより、そのメッセージは位置推定からは外れます。
image.png

#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を送信します。

here-positioning-request.json
{
 "wlan": [
  {"mac": "AA-AA-AA-AA-AA-AA"},
  {"mac": "BB-BB-BB-BB-BB-BB"},
  {"mac": "CC-CC-CC-CC-CC-CC"}
  ]
}

応答は下記のようなJSONが返ってきます。

here-positioing-response.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.json
{
    "error": {
        "code": 404,
        "message": "Not Found",
        "description": "Position not found"
    }
}

URLが間違っていた場合でも同じエラーでdescriptionだけが違うので、原因切り分けが面倒ですね。
image.png

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?