クラウドサービスには、以下のようなフォーマットのデータが送信されます。
{
"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 以外の値が送信されないように設定できます
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 のエントリポイントの種類によって、データの処理が異なります。
|
JSON | Funnel のエントリポイントの種類に関わらず、JSON 形式のデータとして処理されます。
デバイスが、JSON 形式以外のデータを送信した場合は、 |
テキスト | Funnel のエントリポイントの種類に関わらず、テキストデータとして処理されます。
|
バイナリ | Funnel のエントリポイントの種類に関わらず、バイナリデータとして処理されます。(*2)
|
SORACOM Binary Format v1 | TCP で送信されたバイナリデータが、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 変換は行われません。