Downlink API Sim:sendDownlinkSsh API
と Sim:sendDownlinkHttp API
の価格は、2025 年 6 月を目処に発表します。それまでの間、これらの API は無料で利用できます。
Downlink API は、「デバイスの動作」が必要な処理の自動化やスクリプトでの利用に適しています。このページでは、Downlink API のうち Sim:sendDownlinkSsh API
を利用して、以下のように動作する Flux アプリを作成します。SORACOM Flux (以下、Flux) はコードを書くことなく IoT アプリケーションを開発、実行できるプラットフォームサービスで、今回はタイマー機能と SORACOM API 呼び出し機能を使用して、Downlink API の定期的な呼び出しをローコードで実現します。Flux について詳しくは、SORACOM Flux を参照してください。
15 分ごとに
Sim:sendDownlinkSsh API
を実行する。Sim:sendDownlinkSsh API
は、指定した IoT SIM を利用する Raspberry Pi で「最新 15 分間のシステムログを Harvest Files にアップロードする」コマンドを実行します。journalctl -S -15min | curl -X PUT -H 'Content-Type: text/plain' --data-binary @- http://harvest-files.soracom.io/logs/{sim_id}/${event.context.timestamp}.log
- Harvest Files にファイルをアップロードしたりダウンロードしたりすると料金が発生します。詳しくは、SORACOM Harvest Files の料金プラン を参照してください。
- Flux のイベントが 15 分に 1 回実行されます。Flux では、イベント数に応じて料金が発生します。詳しくは、料金プラン を参照してください。
ステップ 1: SSH の鍵ペアを作成して適切な場所に保存する
ここでは、公開鍵と秘密鍵のペアを使用して SSH ログインするように、公開鍵と秘密鍵を作成して、以下のように保存します。
項目 | 説明 |
---|---|
公開鍵 (id_ed25519.pub) | Raspberry Pi の定められた場所に保存します。 |
秘密鍵 (id_ed25519) | SORACOM ユーザーコンソールの認証情報ストアに保存します。 |
PC で公開鍵と秘密鍵のペアを作成します。
$ ssh-keygen
Generating public/private ed25519 key pair. Enter file in which to save the key (/home/xxxxxx/.ssh/id_ed25519):
以降、画面の指示に従って操作すると、公開鍵 (id_ed25519.pub) と秘密鍵 (id_ed25519) のペアが作成されます。
パスフレーズを設定した場合は、SORACOM API アクションを作成するときに、そのパスフレーズを指定してください。
公開鍵 (id_ed25519.pub) を Raspberry Pi にコピーします。
公開鍵は任意の方法でコピーしてください。なお、Raspberry Pi のユーザー名を、これ以降、${user} と表記します。例:
pi
Linux など
ssh-copy-id
を利用できる環境から、IP アドレス (例: 192.168.xxx.xxx) でアクセスできる Raspberry Pi にコピーする場合は、以下のようなコマンドを実行します。$ ssh-copy-id -i /PATH/TO/PUBLIC_KEY ${user}@192.168.xxx.xxx
Linux など
ssh-copy-id
を利用できる環境から、IoT SIM を利用する Raspberry Pi にコピーする場合は、遠隔地にあっても Napter のオンデマンドリモートアクセスを作成すると、以下のようなコマンドを実行します。Napter のオンデマンドリモートアクセスについて詳しくは、オンデマンドリモートアクセスを作成する を参照してください。xxxxx
やxxx-xxx-xxx-xxx.napter.soracom.io
は、Napter のオンデマンドリモートアクセスで発行されたポート番号とドメインです。$ ssh-copy-id -i /PATH/TO/PUBLIC_KEY -p xxxxx ${user}@xxx-xxx-xxx-xxx.napter.soracom.io
同様に、Windows など
scp
を利用できる環境からコピーする場合は、以下のようなコマンドを実行します。> scp -P xxxxx /PATH/TO/PUBLIC_KEY ${user}@xxx-xxx-xxx-xxx.napter.soracom.io:/home/${user}/
なお、この場合は、さらに ssh で Raspberry Pi にアクセスして、id_ed25519.pub の内容を適切な場所に移動します。
> ssh -p xxxxx xxx-xxx-xxx-xxx.napter.soracom.io -l ${user}
$ mkdir -p ~/.ssh $ cat ~/id_ed25519.pub >> ~/.ssh/authorized_keys $ chmod 600 ~/.ssh/authorized_keys $ rm ~/id_ed25519.pub
SSH の鍵ペアを利用して、Raspberry Pi にログインできることを確認します。
$ ssh -p xxxxx xxx-xxx-xxx-xxx.napter.soracom.io -l ${user}
鍵ペアにパスフレーズを設定した場合は、パスフレーズを入力するとログインできます。
秘密鍵を SORACOM ユーザーコンソールに登録します。
具体的には、認証情報ストアの「認証情報を登録」画面で以下のように登録します。この画面の表示方法については、認証情報を登録する を参照してください。
項目 説明 認証情報を識別するために任意の名前を入力します。例: Private-Key
「秘密鍵 (PEM)」を選択します。 秘密鍵 (id_ed25519) の内容をコピーします。
ステップ 2: Harvest Files を有効化する
Raspberry Pi で「最新 15 分間のシステムログを Harvest Files にアップロードする」コマンドを実行するため、Raspberry Pi で利用する IoT SIM で、Harvest Files を利用できるように設定します。
ユーザーコンソールにログイン し、Raspberry Pi で利用する IoT SIM にあわせてカバレッジタイプを変更します。
たとえば、plan01s の IoT SIM を Raspberry Pi で利用する場合は、グローバルカバレッジの表示に変更します。詳しくは、SORACOM ユーザーコンソールで表示するカバレッジタイプを変更する を参照してください。
SIM グループを作成します。
詳しくは、グループを作成する を参照してください。
作成した SIM グループで Harvest Files を有効化して、IoT SIM を SIM グループに所属させます。
詳しくは、SORACOM Harvest Files を有効化する を参照してください。
なお、
、 、 は、空欄や off のままにしてください。
ステップ 3: Flux アプリを作成する
タイマーイベントソースと、SORACOM API アクションを利用する Flux アプリを作成します。
→ → の順にクリックして、 をクリックします。
以下の項目を設定します。
項目 説明 Flux アプリの名前を入力します。 Flux アプリの概要を入力します。 をクリックします。
Flux アプリが作成され、SORACOM Flux Studio の
タブが表示されます。→ → の順にクリックします。
この Flux アプリでは、15 分に 1 回の頻度で、メッセージをチャネルに送信するように設定します。
以下の項目を設定します。
項目 説明 チャネルの名前を入力します。 チャネルの概要を入力します。 タイマーの間隔を設定します。
項目 説明 この条件の有効/無効を設定します。「有効」にしてください。 実行の間隔を設定します。ここでは 15 分と設定します。 タイマー設定の説明を記載します。 をクリックします。
→ → → の順にクリックします。
SORACOM API アクション が作成されます。
以下の項目を設定します。
項目 説明 SORACOM API アクションの名前を入力します。 SORACOM API アクションの概要を入力します。 SORACOM API アクションを有効化します。ここでは「有効」にします。 SORACOM API アクションの実行条件を設定します。ここでは、タイマーイベントにあわせて常に実行するため、空欄のままにします。 SORACOM API アクションで利用する API を設定します。
: 「Sim:sendDownlinkSsh」を選択します。
: で選択した API のパスが表示されます。{sim_id}
を Raspberry Pi で使用している IoT SIM の SIM ID に置き換えてください。例:/v1/sims/1234567890123456782/downlink/ssh
:Sim:sendDownlinkSsh API
のリクエストボディを入力します。ここでは、以下のように入力してください。なお、
${credential_id}
、{sim_id}
、${user}
を、認証情報 ID (例:Private-Key
)、Raspberry Pi で利用するの IoT SIM の SIM ID、Raspberry Pi のユーザー名に書き換えてください。{ "authentication": { "type": "publickey", "keyCredentialsId": "${credential_id}" }, "command": "journalctl -S -15min | curl -X PUT -H 'Content-Type: text/plain' --data-binary @- http://harvest-files.soracom.io/logs/{sim_id}/${event.context.timestamp}.log", "username": "${user}" }
注意点をよく読み、理解できたら
にチェックを入れます。: 「新しく SAM User を作成する」を選択します。
: SAM ユーザー名が表示されます。必要に応じて編集してください。
[HTTP ボディ] の
${event.context.timestamp}
は Flux アプリの実行時に置き換えられます
の${event.context.timestamp}
は、そのまま入力してください。Flux アプリが実行するときに、タイマーが起動した時刻を表す UNIX 時間 (ミリ秒) に置き換えられます。詳しくは、タイマーイベントソース#Context を参照してください。SORACOM API アクションのレスポンスを、別のチャネルに送信するかどうかを設定します。
- : 「無効」にします。
をクリックします。
ステップ 4: Harvest Files のファイルをダウンロードする
15 分に 1 回、Raspberry Pi でコマンドが実行され、Harvest Files にログが保存されます。ログが保存されるパスは、/logs/{sim_id}/${event.context.timestamp}.log
です。
Harvest Files のファイルをダウンロードする操作については、Harvest Files に保存したファイルをダウンロードする を参照してください。
タイマーが動作していると継続して課金が発生します
タイマーを止めるには、タイマーイベントソースを無効化してください。詳しくは、タイマーイベントソース を参照してください。