🛬

SORACOM Downlink APIを試してみた

に公開

この記事は

2025/3/10に発表された、SORACOM Downlink APIを試してみたという内容です。

SORACOM Downlink APIは、SORACOMのIoT SIMで通信をしているデバイスに対して、SORACOMからコマンドやリクエストを送信し、実行結果やレスポンスを受信できるAPIです。

詳しくは以下のリリース情報ならびに公式ドキュメントを参照してください。

https://changelog.soracom.io/ja/ssh-to-http-woshi-tutedebaisunikomandoyarikuesutowosong-xin-siteshi-xing-jie-guo-woshou-kequ-reruyouninarimasita-downlink-api-9nRT2

試してみる

早速試してみましょう。
今回は、Windows11のマシンをSORACOM Arc(WireGuard)を使ってSORACOMに接続し、そのバーチャルSIMに対してHTTPリクエストを送信してみます。
SORACOM Arcの設定については本記事では割愛します。公式ドキュメントを参照してください。

1. 受信側(デバイス側)の準備

HTTPリクエストを受信するためのプログラムを用意します。今回は.NET9(C#)を使って、HTTPリクエストを受信するWebAPIを作成します。

$ mkdir SampleDotnetRestAPI
$ cd SampleDotnetRestAPI
$ dotnet new web
$ dotnet run --urls "http://*:5000"

ちなみにこのテンプレートで出力されたソースコードは以下の通りで、/にGETリクエストが来たときに"Hello World!"を返すだけのものです。

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/", () => "Hello World!");

app.Run();

Downlink APIを使うために、SORACOM CLIをインストールまたは最新版(v1.4.0以降)にアップデートします。SORACOM CLIのインストールについては公式ドキュメントを参照してください。

HTTPのDownlink APIを実行するコマンドは以下の通りです。

$ soracom sims downlink-http --path / --port 5000 --method GET --sim-id xxxxxxxxxxxxxxxxxxxx
{
        "body": "Hello World!",
        "headers": {
                "Content-Type": "text/plain; charset=utf-8",
                "Date": "Wed, 09 Apr 2025 12:49:49 GMT",
                "Server": "Kestrel"
        },
        "isBase64Encoded": false,
        "statusCode": 200
}

--pathにはリクエストのパスを、--portにはポート番号を、--methodにはHTTPメソッドを指定します。
--sim-idには対象のvSIMのSIM IDを指定します。

実行して接続に成功すると、上記の通りHTTPリクエストのレスポンスを詰め込んだJSONが返ってきます。今回は想定したとおり"Hello World!"が返ってきました。

SORACOM Napterとの違い

SORACOMのサービスでIoT SIMに対してインターネット側から接続できるサービスとしては、これまでにSORACOM Napterがありました。
SORACOM Napterは、一時的にSORACOMのIoT SIMに対してインターネット側からTCP接続ができるようにするサービスです。そのため、比較的長期間に渡ってポートが開放された状態になり、ブラウザやsshクライアント、RDPクライアント等を使って人が接続して作業をするのに向いているサービスです。

これと違い、SORACOM Downlink APIは、1回だけのやり取りを行うためのAPIです。そのため、例えばデバイスの初期セットアップコマンドを外部のバッチコマンドから実行したり、デバイスの状態を確認するためのコマンドを監視サーバから定期的に実行したりするというような、1ショットの処理を機械的に実行するのに向いていると思います。

まとめ

SORACOM Downlink APIを試してみました。実際に試してみてNapterとの違いが理解でき、Downlink APIが便利そうなシーンがあると言うこともよく分かりました。
今回はdownlink-httpを試しましたが、次回はdownlink-sshを試してみたいと思います。

皆さんの参考になれば幸いです。

GitHubで編集を提案

Discussion