Soracom

Users

ドキュメント
Home ドキュメント SORACOM Funnel リファレンス

SORACOM Funnel から送信されるデータフォーマット

クラウドサービスには、以下のようなフォーマットのデータが送信されます。

{
  "credentialId": "ソラコムの認証情報のID",
  "operatorid": "ソラコムのアカウントID",
  "destination": {
    "provider": "(aws|azure|google)",
    "service": "(aws-iot|kinesis|firehose|eventhubs|pubsub)",
    "resourceUrl": "送信先クラウドサービスのURL",
    "payloadsOnly": false,
    "sendPayloadsAsBinary": (true|false)
  },
  "sourceProtocol": "(tcp|udp|http|sigfox|lora|unspecified)",
  "payloads": "送信されたデータ本体",
  "timestamp": "Funnel でデータを処理した日時 (UNIX 時間)",
  "imsi": "送信元のSIMのIMSI",
  "imei": "送信元デバイスのIMEI"
}
Funnel が対応する TLS バージョンは 1.2 です

転送先のクラウドサービスでは、TLS 1.2 に対応するように設定してください。たとえば、AWS IoT Core に送信する場合は、AWS IoT Core の [セキュリティポリシーを選択] では、TLS 1.2 に対応するセキュリティポリシーを選択してください。たとえば、「IoTSecurityPolicy_TLS13_1_2_2022_10」は TLS 1.2 に対応しています。

payloads 以外の値が送信されないように設定できます

[ペイロードのみ転送する] を ON に設定すると、payloads に設定されるデータだけが送信されます。payloads 以外の値 (credentialId など) は送信されません。

[送信データ形式] が「JSON」で、[ペイロードのみ転送する] が OFF の場合:

{
  "credentialsId": "AWS-IAM-role-credentials",
  "operatorId": "OPxxxxxxxxxx",
  "destination": {
    "provider": "aws",
    "service": "aws-iot",
    "resourceUrl": "xxxxx-ats.iot.ap-northeast-1.amazonaws.com/myTopic/#{imsi}",
    "payloadsOnly": false,
    "sendPayloadsAsBinary": false
  },
  "sourceProtocol": "http",
  "payloads": {
    "deviceid": "iot123",
    "temp": 54.98,
    "humidity": 32.43,
    "coords": {
      "latitude": 47.615694,
      "longitude": -122.3359976
    }
  },
  "timestamp": 1653891795421,
  "imsi": "2950xxxxxxxxxxx",
  "imei": "8676xxxxxxxxxxx"
}

[送信データ形式] が「JSON」で、[ペイロードのみ転送する] が ON の場合:

{
  "deviceid": "iot123",
  "temp": 54.98,
  "humidity": 32.43,
  "coords": {
    "latitude": 47.615694,
    "longitude": -122.3359976
  }
}

payloads に設定されるデータ

payloads に設定されるデータは、[送信データ形式] の設定によって異なります。

デバイスでのコマンド例:

curl -v funnel.soracom.io \
-H "Content-Type: application/json" \
-d '{
  "deviceid": "iot123",
  "temp": 54.98,
  "humidity": 32.43,
  "coords": {
    "latitude": 47.615694,
    "longitude": -122.3359976
  }
}'

上記のコマンドを実行して Funnel にデータを送信した場合に、payloads に設定されるデータは、以下のとおりです。

[送信データ形式] の設定説明
(指定しない)

Funnel のエントリポイントの種類によって、データの処理が異なります。

  • UDP: テキストデータとして処理されます。
  • TCP: テキストデータとして処理されます。
  • HTTP: HTTP ヘッダーの Content-Type に従って処理されます。(*1)
  • SMS: テキストデータとして処理されます。
  • USSD: テキストデータとして処理されます。
  • Air for LoRaWAN、Air for Sigfox、Inventory: テキストデータとして処理されます。
JSON

Funnel のエントリポイントの種類に関わらず、JSON 形式のデータとして処理されます。

{
    :
  "payloads": {
    "deviceid": "iot123",
    "temp": 54.98,
    "humidity": 32.43,
    "coords": {
      "latitude": 47.615694,
      "longitude": -122.3359976
    }
  },
    :
}

デバイスが、JSON 形式以外のデータを送信した場合は、400 Bad Request が返されます。

テキスト

Funnel のエントリポイントの種類に関わらず、テキストデータとして処理されます。

{
    :
  "payloads": "{\n  \"deviceid\": \"iot123\",\n  \"temp\": 54.98,\n  \"humidity\": 32.43,\n  \"coords\": {\n    \"latitude\": 47.615694,\n    \"longitude\": -122.3359976\n  }\n}",
    :
}
バイナリ

Funnel のエントリポイントの種類に関わらず、バイナリデータとして処理されます。(*2)

{
    :
  "payloads": "ewogICJkZXZpY2VpZCI6ICJpb3QxMjMiLAogICJ0ZW1wIjogNTQuOTgsCiAgImh1bWlkaXR5IjogMzIuNDMsCiAgImNvb3JkcyI6IHsKICAgICJsYXRpdHVkZSI6IDQ3LjYxNTY5NCwKICAgICJsb25naXR1ZGUiOiAtMTIyLjMzNTk5NzYKICB9Cn0=",
    :
}
SORACOM Binary Format v1TCP で送信されたバイナリデータが、SORACOM Binary Format v1 に準拠するものとして処理されます。SORACOM Binary Format v1 形式について詳しくは、SORACOM Binary Format v1 (Public beta) を参照してください。
  • (*1) 「(指定しない)」を選択し、かつ、Unified Endpoint の HTTP エントリポイントにデータを送信して、Funnel の転送先に送信される場合は、HTTP ヘッダーの設定にかかわらずテキストデータとして処理されます。
  • (*2) 仮に JSON 形式のデータと同じフォーマットで Funnel に送信した場合でも、バイナリデータとして処理されます。
バイナリデータは JSON 形式に変換されて転送されます
  • バイナリデータとして処理される場合は、以下の JSON 形式に変換されたうえで転送されます。payloads の値 (eyJs...) は、デバイスから送信した JSON 形式のデータを Base64 形式でエンコードしたものです。これを、payload 変換と呼びます。

    {
        :
      "payloads": "eyJsYXQiOm51bGwsImxvbiI6bnVsbCwiYmF0IjozLCJycyI6MywidGVtcCI6MTkuOSwiaHVtaSI6NDcuNiwieCI6bnVsbCwieSI6bnVsbCwieiI6bnVsbCwidHlwZSI6MX0=",
        :
    }
    

    payload 変換されたデータから元のデータを取り出すには、payloads の値 (eYJs...) を Base64 形式でデコードしてください。

  • バイナリパーサーOrbit で処理された場合は、処理後のデータが JSON 形式のデータとして Funnel のエントリポイントに出力されるため、payload 変換は行われません。