SORACOM Users

SORACOM Funnel : Funnelを使用したデータの送信

グループ設定の概要

Funnelはグループに対して以下のような設定をすることによって、そのグループに所属しているSIMから利用できます。

configuration

選択可能な通信プロトコル

デバイスからFunnelのエントリポイントにデータを送信する際に利用可能なプロトコルの一覧です。

以下、各プロトコルについてより詳細に解説します。

HTTP

HTTPのPOSTリクエストによって送信されたデータを1つのデータとしてクラウドサービスに送信します。

リクエスト

リクエストフォーマットは通常のPOSTメソッドに準じます。許容されるContent-Typeヘッダは以下の3種類です。

レスポンス

送信されたリクエストに基づいて以下のようなレスポンスがデバイスに返されます。レスポンス送信のタイミングは、クラウドサービスへのメッセージの送信に基づきます。

以下、送信するデータの形式にJSONを選択した場合のデータ送信例です。

$ curl -v -d '{"key":"value"}' -H 'Content-Type: application/json' http://funnel.soracom.io
* Rebuilt URL to: http://funnel.soracom.io/
*   Trying 100.127.65.43...
* Connected to funnel.soracom.io (100.127.65.43) port 80 (#0)
> POST / HTTP/1.1
> Host: funnel.soracom.io
> User-Agent: curl/7.49.0
> Accept: */*
> Content-Type: application/json
> Content-Length: 15
>
* upload completely sent off: 15 out of 15 bytes
< HTTP/1.1 204 No Content
< Date: Tue, 06 Dec 2016 16:19:37 GMT
< Connection: keep-alive

TCP

TCP上で送信されたデータをクラウドサービスに送信します。

リクエスト

基本的には1つのTCPセグメントを1つのメッセージとしてクラウドに送信します。しかし、連続した2つ以上のTCPセグメントが1つのメッセージとして取り扱われる場合もありますのでご注意ください。

大きなデータを送信しようとする場合、伝送路のMTUによってデータは複数のTCPセグメントにフラグメンテーションされます。この結果としてそれぞれのTCPセグメントが別々のメッセージとしてクラウドサービスに転送されることに注意してください。

レスポンス

TCPにはHTTPのようなリクエスト&レスポンスの概念はありませんので、下記のBodyに記述されているコードやメッセージをペイロードとして含んだTCPパケットがFunnelエントリポイントからクライアントに対して送信されます。レスポンス送信のタイミングは、クラウドサービスへのメッセージの送信に基づきます。

以下、送信するデータの形式にJSONを選択した場合のデータ送信例です。

# funnelエントリポイントとのTCPセッションの確立
$ nc -v funnel.soracom.io 23080
found 0 associations
found 1 connections:
     1: flags=82<CONNECTED,PREFERRED>
    outif en0
    src 192.168.43.232 port 51053
    dst 100.127.65.43 port 23080
    rank info not available
    TCP aux info available

Connection to funnel.soracom.io port 23080 [tcp/*] succeeded!

# JSONを送信
(request) {"key":"value"}
(response) 200

# 不正なJSONを送信
(request) bad text
(response) 400 Invalid JSON is send to funnel.

UDP

送信されたTCPの1パケット(厳密にはUDPデータグラム)を1つのデータとしてクラウドサービスに送信します。

リクエスト

1メッセージあたりの最大送信データサイズは1つのUDPデータグラムで送信できるペイロード長と等しくなります。

レスポンス

UDPにはHTTPのようなリクエスト&レスポンスの概念はありませんので、下記のBodyに記述されているコードやメッセージをペイロードとして含んだUDPパケットがFunnelエントリポイントから送信されます。レスポンス送信のタイミングは、クラウドサービスへのメッセージの送信に基づきます。

以下、送信するデータの形式にJSONを選択した場合のデータ送信例です。

# UDPクライアントを起動してエントリポイントとの接続確認
$ nc -v -u funnel.soracom.io 23080
found 0 associations
found 1 connections:
     1: flags=82<CONNECTED,PREFERRED>
    outif (null)
    src 192.168.43.232 port 61136
    dst 100.127.65.43 port 23080
    rank info not available

# 接続成功。ncは接続確認のためにUDPデータグラムを送信する。(データ形式にJSONを指定している場合、それフォーマットエラーが返ってくる。(が、問題なし))
Connection to funnel.soracom.io port 23080 [udp/*] succeeded!
(response) 400 Invalid JSON is send to funnel.
(response) 400 Invalid JSON is send to funnel.
(response) 400 Invalid JSON is send to funnel.
(response) 400 Invalid JSON is send to funnel.


# JSONを送信
(request) {"key":"value"}
(response) 200

# 不正なJSONを送信
(request) bad text
(response) 400 Invalid JSON is send to funnel.

クラウドサービスへ送信されるデータ

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

{
    "operatorid": "ソラコムのアカウントID",
    "timestamp": "funnelがデータを受け取った日時(unix time)",
    "destination" : {
        "resourceUrl": "送信先クラウドサービスのURL",
        "service": "(aws-iot|kinesis|firehose|eventhubs|pubsub)",
        "provider":"(aws|azure|google)"
    },
    "credentialId": "ソラコムの認証情報のID",
    "payloads": "送信されたデータ本体",
    "sourceProtocol": "(tcp|udp|http|sigfox|lora|unspecified)",
    "imsi": "送信元のSIMのIMSI",
    "imei": "送信元デバイスのIMEI"
}

エラーログ

Funnel では、直近2週間で発生したエラーログを保管しており、ユーザーコンソールやAPIから確認できます。うまく通信できないときなどのデバッグに利用できます。

確認できるエラーログの内容は以下のとおりです。

注意
ログは直近2週間分のみ参照可能です。それより古いログは閲覧できませんので、ご注意ください。

ユーザーコンソールでは、ドロップダウンメニューの「ログ」からアクセスできます。 “リソース ID” はSIMのIMSIです。

次に

以下の次のセクションを順に読むことをお勧めします。

pagetop