Sigfox API v1 - v2 マイグレーション Unixタイムスタンプ

技術情報

この記事は、Sigfox Web APIのv1を使用していたユーザーがv2にマイグレーションする時の注意点を記載しています。

Sigfox Web API v2はv1とは下位互換がないというものの、device/messages APIに関しては、かなり似通ったAPI体系となっています。

API V1 : GET : https://backend.sigfox.com/api/devices/{device-id}/messages
API V2 : GET : https://backend.sigfox.com/api/v2/devices/{device-id}/messages

Response Jsonも似通っていますが、ちょっとした変更点がシステム開発上の隠れバグを生む可能性があります。

Device ID

Device IDは、下記の変更がなされています。

API v1API v2
"device": "{デバイスID}" "device": {"id": "{デバイスID}"}

こちらは、プログラムエラーが出るので、マイグレーションしやすいかと思いますが、わかりにくいのが、timeです。

Time (Unix Timestamp)

Timeはデバイスメッセージの基地局での受信時刻になり、UNIXタイムスタンプで表現されています。
1538446508
というものです。これは、「協定世界時(UTC)を基準にした1970年1月1日の0時0分0秒からの経過秒数」ということで、UNIXシステム上で時間を経過秒として計算する時に使用します。ちなみに、上記例は、「 2018/10/02 11:15:08」となります。

Sigfox Web API V1では、上記の表記であったのですが、V2では、
1538446508000
となります。

つまり、V1で取得できていたものより1000倍多い数値となります。

この違いが実装時には気づかず、試験しだすとなぜか時刻が違うということになってしまいます。

ちなみに、PHP、Pythonは秒単位、javascriptはミリ秒単位としてUNIXタイムスタンプを取り扱います。

改めて、V1とV2でのDevice MessagesのResponse JSON(一部)を記載しておきます。

Web API v1

{"data": [
  {
    "device": "7B0DE2",
    "time": 1538446508,
    "data": "0b37278203c6fef1ffe303d0",
    "seqNumber": 3585,
    ....

Web API v2

{"data": [
  {
    "device": {
      "id": "7B0DE2"
    },
    "time": 1538446508000,
    "data": "0b37278203c6fef1ffe303d0",
    "seqNumber": 3585,
    ...