Starlinkの衛星通信を経由してAWS IoT CoreとMQTT通信をしてみた

2022.11.01

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、CX事業本部 IoT事業部の若槻です。

イーロン・マスクが展開する低軌道衛星を利用した衛星通信サービスStarlinkが国内(東日本)でも利用可能とのことで、早速弊社クラスメソッドでも検証が行われています。

私も出社時にStarlinkへの接続を試すことができる機会があったので、簡単にですが衛星通信を経由してAWS IoTとのMQTT通信を試してみました。

環境

Starlinkのアンテナはこちら。ビルの屋上に設置してあります。

電源と回線を兼ねたケーブルを屋内に引き込み、Wi-Fiルーターで接続できるようにしています。

操作端末であるMacbookからWi-Fiに繋げると、Starlink経由でインターネットに接続することができました。

回線速度は下りで260Mbps(計測時)でした。十分に高速ですね。

ちなみにStarlinkの利用環境のセットアップは大瀧さんにやって頂けました。ありがとうございます!

やってみた

AWS IoTへの接続準備

以前投稿した次のエントリを参考に、AWS IoTへの接続準備を行います。

準備は次のコマンドを実行して行いました。(ただし今回はDockerコンテナは使わず、mosquitto_pubを直接実行します。)

//certsディレクトリの作成
mkdir ./certs

//キーペアとデバイス証明書の作成
aws iot create-keys-and-certificate \
  --set-as-active \
  --private-key-outfile ./certs/privateKey.pem \
  --certificate-pem-outfile ./certs/cert.pem

//ルートCA証明書の取得
curl -o ./certs/rootCA.pem \
  -s https://www.amazontrust.com/repository/AmazonRootCA1.pem

//IoTポリシーの作成
aws iot create-policy \
   --policy-name demoPolicy \
   --policy-document file://demo-policy.json

//IoTポリシーをデバイス証明書へアタッチ
aws iot attach-principal-policy \
  --policy-name demoPolicy \
  --principal arn:aws:iot:ap-northeast-1:123456789012:cert/00c0479e991dcfa918d67b53762ecd95e1171c7ee984f44399d86a8c581ba817

MQTT通信(Publish)をしてみる

それではStarlink経由で、AWS IoTとのMQTT通信(Publish)を試してみます。

以前投稿した次のエントリを参考に、MosquittoをMQTTクライアントとして使用して行います。

AWS IoT Coreコンソールでトピック/demo/eventをSubscribeして通知を待ち受けます。

トピック/demo/event宛にデータをPublishします。

mosquitto_pub \
  -h $(aws iot describe-endpoint --endpoint-type iot:Data-ATS | jq -r .endpointAddress) \
  -p 8883 \
  -q 1 \
  -i demo-device-id-1 \
  -m '{"message":"Hello Starlink!"}' \
  -t /demo/event \
  --cafile ./certs/rootCA.pem \
  --key ./certs/privateKey.pem \
  --cert ./certs/cert.pem

すると送信したデータがコンソールに表示され、Publishが成功しました!遅延もまったく感じなかったです。

(後の祭りですがローカルのクライアントでSubscribeも試せば良かったです。)

おわりに

簡単にですが衛星通信を経由してAWS IoTとのMQTT通信を試してみました。

Starlinkの用途として、プロバイダーの回線が未整備のネットワーク過疎地でインターネットに接続できるようにするなどが考えられますが、IoTデバイスも野外の回線接続が不安定だったり細かったりする場所で利用されるケースは多いので、IoTデバイス -> Starlink -> AWS IoTというパターンは有り得るのではないでしょうか。

以上