概要
SORACOMさんから購入したCO2センサー「RS-LTECO2スターターキット」のデータを
SORACOM Beamを使って自社システムに転送する際の備忘録。
システムイメージ
ざっくり書くとこんな感じです。
RS-LTECO2からのデータは、SORACOMプラットフォームのUnified Endpointに送信されます。
そこからSORACOM Beamを使用して、当社システムに送信します。
注意点
BeamはUDP → HTTP/HTTPS エントリポイントで構築する
最初HTTPエントリポイントでBeamを構成していましたが、
なぜか当社システムにデータが送信されない。
Harvest Dataを有効にするとちゃんと受信データが表示されるので、
Unified Endpointまで来ていることがわかる。
ここで一つ勘違いしていたことがあって、
Unified EndpointからBeam/Funnel/Hervest Dataに転送される際、
HTTPで通信されていると思っていたんですが、
デバイスとUnified Endpoint間の通信方式のままBeamやらに転送されるんですね。
で、RS-LTECO2とUnified Endpoint間の通信はUDPでした。
つまり、BeamはUDPとHTTPで構築する必要があります。
⇒RS-LTECO2とUnified Endpoint間の通信仕様の記載箇所が見つからなかったのですが、
オフィシャルの記事でRS-LTECCO2からのデータをバイナリパーサーを使用してJSONに変換しているので
HTTPではなくTCPまたはUDPだろうと推測。
で、試してみたところ、Beamの設定をUDP → HTTP/HTTPS エントリポイントに設定すると、
通信ができました。
IMSI情報をヘッダに仕込む
Beamから当社のシステムにデータ転送する際に、どのデバイスからのデータか分かるよう、
Beam側でIMSI情報をヘッダに仕込むよう設定しました。
この画面をちゃんと見て気付けばよかったんですが、
違うページを見て勘違いしてました。
リクエストに追加されるIMSI情報は、リクエストヘッダーの
「x-soracom-imsi」
に設定されます。
⇒「HTTP_X_SORACOM_IMSI」ではありません!