投稿日

SORACOM Napter で Node-RED ウキウキリモート開発

こんにちは、Node-RED という OSS のコントリビュータをしている kaz です。

Node-RED とは?

皆さん、Node-RED ってご存知でしょうか? Node-RED は、機能を持つ箱(以下、ノードと呼びます)を白いキャンバス上にいくつか配置し、ノードを線で繋ぎ合わせるだけでプログラムを作れるツールで、ブラウザから簡単に操作することができます。Node-RED の良さとしては、例えば以下のようなものがあります。

  • プログラミングの知識がない人でもプログラムが作れる。
  • 処理の流れが視覚的に分かりやすい。
  • コミュニティ内で様々なノードが作られており、世の中にあるサービスを操作するノードは誰かがすでに作ってくれていることが多い。

例えば、下のプログラムは「ニュースサイトを1時間おきにチェックし、SORACOM というキーワードが含まれている記事だけメールする」というものですが、パッと見で何をしているのかおよそ理解できますよね。それが Node-RED の強みなのです。

sample-flow

世界中で2,000万台以上販売されている Raspberry Pi に対応した OS である Raspbian には、実は初めから Node-RED がインストールされているので、Raspberry Pi をお持ちの方はすぐにでも試すことができます。Node-RED の情報について、本家のサイトは英語なのですが、Node-RED ユーザグループ のサイトもあり、そちらは日本語の情報があります。

Raspberry Pi で Node-RED を操作する時の苦労

私が Raspberry Pi 上で Node-RED の実機確認をする場合、まず始めに普段使っていないキーボードやマウスを引っ張り出してきて Raspberry Pi に繋ぎ、さらに HDMI ケーブルも挿してから電源を入れていました。本来、Node-RED はブラウザアクセスさえできれば操作できるので、自分の PC からブラウザでアクセスできればそれで良かったのですが、自宅の Wi-Fi ルータはデバイスに対して IP アドレスを固定にできないため、IP アドレスを確認するためにやはり一度直接 Raspberry Pi 上で操作する必要がありました。また、HDMI ケーブルを挿さずに Raspberry Pi を起動してしまうと、後から HDMI ケーブルを挿しても認識してくれず、電源をぶつ切りするしかない(それで一度 OS イメージが壊れたことも(泣))など、色々苦労が絶えませんでした。ところが、SORACOM Napter はこの問題を全て解決してくれたのです!こちらの before と after をご覧ください。

before/after

今までは左の写真のようにケーブルを挿してから起動していたのですが、今では右の写真のように電源ケーブルと USB ドングルだけ挿して起動すれば Node-RED の開発ができるようになりました。Raspberry Pi に電源を入れるたびに、毎回本当にウキウキします(本当の本当です!)。

SORACOM Napter で Node-RED にアクセス

SORACOM Air と Node-RED のセットアップについては、こちらをご覧ください。私の環境は、Raspberry Pi -> USB モデム MS2372h-607 -> SORACOM という構成でした。

SORACOM Air で接続ができていると、下のようにセッション状態が オンライン と表示されるので、この状態であれば Napter が利用可能です。

online

あとはこちらの説明を参考に Napter の利用を開始すると、Raspberry Pi にアクセスできるようになります。用途に応じて、適切なポート番号を指定します。

  • ssh 接続したい場合:デバイス側ポートに22番を指定して、sshで接続する。
  • Node-RED にアクセスしたい場合:TLSにチェックを入れた後、デバイス側ポートに1880番を指定して、ブラウザからアクセスする。
  • Raspberry Pi 上で GUI 操作したい場合:あらかじめ Raspberry Pi のメニューから選択できる Raspberry Pi の設定画面インタフェースタブで VNC を有効にしておいた状態で、デバイス側ポートに5900番を指定して、VNC クライアントを使って接続する。

Napter を使って Raspberry Pi にアクセスすることで、上記の課題以外にも例えば遠隔地に設置した Raspberry Pi のリモートメンテナンスなども容易かつセキュアに実現できるようになります。遠隔地にある Raspberry Pi をインターネットに公開し、セキュリティ状態を最新に保つのが大変なのは、想像に難くないかと思います。特にその台数が数十台規模になってくると、それは明らかに現実的な選択肢ではなくなります。そのような状況においても、Napter は非常に有効です。

Node-RED を使って SORACOM にアクセスしよう!

それでは、Node-RED から SORACOM を使ってみましょう。Node-RED は、簡単にプログラムを共有できる仕組みがあるので、それを使ってみましょう。まずは、Node-RED Library にアクセスして、soracom と入力してください。

flow-soracom

左に表示されている Access to SORACOM services をクリックすると、移動先のページの下の方に JSON データがあるので、そのテキストを全て選択してクリップボードにコピーします。
次に Node-RED を表示し、右上のメニューから 読み込み -> クリップボード を選択します。

menu

出てきたダイアログに先ほどコピーした JSON を貼り付けて 読み込みボタンをクリックすると、フローが取り込まれます。2つタブが表示されるので、それぞれ説明してきます。

load-flow

1つ目のタブは、メタデータサービスを使って SIM に関する情報を色々取ってきています。画面は左にある4つの四角いボタンをそれぞれ押した結果を表示しており、上から順に「SIM の全ての情報」「IMSI」「タグ情報」「ユーザデータ」を取ってきて右のデバッグウィンドウに出力しています。

metadata-flow

2つ目のタブは、5分間の平均 CPU 使用率を取り出して SORACOM Harvest に送るプログラムです。

harvest-flow

Raspberry Pi 上で高負荷処理を実行しながら何度か Start ボタンを押すと、以下のようなグラフが作れました。CPU が4つあるので、縦軸の CPU 使用率は0から4の間の数値になります。上の図の Start と書いたノード(Inject ノードと呼びます)は自動で繰り返し実行もできるので、例えば5分間隔で実行するようにしておけば、常に CPU 使用率の情報をアップロードできるようになります。CPU 使用率がしきい値を超えたらメールで通知するといったプログラムを作るのも良いですね。

harvest

まとめ

Node-RED は、プログラミングをされない方はもちろん、プログラマの方でもプログラムを作る選択肢の一つとして考えられると思います。SORACOM Napter は、Raspberry Pi を使う時の周辺機器を減らすのにも使えますし、リモートメンテナンスなどにも最適です。
SORACOM Napter と Node-RED はどちらも本当に素晴らしいものなのですが、このブログでそれが伝わりましたら幸いです。