Node-RED編

  • はじめに
    IoTとNode-REDの関係については、大原雄介氏が書かれた「Node-RED」がつなげるWeb系エンジニアとIoTがあります。Node-REDの生い立ちからIoTへの応用についてまとめられていて非常に読みやすい記事です。恥ずかしながら、Web-Masterは本稿を執筆するまで知りませんでしたが、Kikoriを使い始めた皆さんはぜひご一読をお勧めします。
    その記事を引用させてもらうと、

    もちろん、こうしたWebベースのサービスでもある程度はIoTらしいものを構築できる(センサーノード上にWebサーバを立てて、そこをアクセスするとデータが取れる様にすればいいからだ)が、実はもうちょっと直接的な方法もある。先にターゲットデバイスにArduinoが含まれていると書いたが、さすがにArduino上でNode.jsを動かし、さらにその上でNode-REDを動かすのはかなり無理がある。その代わりに用意されているのが「Firmata」と「Johnny-Five」である。Firmata用のファームウェアをArduinoにロードする(これはArduino IDEで行える)と、ArduinoはCOMポートでつながるリモートI/Oボックスのように扱える。

    があります。

     Arduino, COMポートと来たところで、一般的なWebエンジニアは狼狽し取り扱いに躊躇(そういうエンジニア?を両手で足りないくらい目の当たりにしています。)することでしょう。なので、Webサーバへのアクセスを徹底させたのがkikoriなわけです。

  • 使い方

     すでに基礎編で説明したように、curlを使ってサーバへのアクセスは確認しています(疎通確認)。これをNode-REDのHTTP-REQUESTに対応させます。

  • 専用ノードの問題点
     先にご紹介した大原雄介氏の記事をはじめNode-REDをIoTで使う文脈では、センサやインターフェイスボードのベンダの紹介のWeb-Pageには「IoT構築のための専用ノードを用意しました !」の文字が少なからず躍ります。マーケティング・セオリーで語られる事の多い「ユーザが本当に欲しいのは、ドリルではなくて。」があります。このセオリーに従えばユーザが本当に欲しいのは、「専用ノードやセンサではなくて、センシングした情報になります。」

     もうひとつの問題はPortabilityの問題です。専用ノードで構成したフローはそのフローに対応した機材(この言い方は少しおかしいのですが、話の順番でこうなることをご容赦下さい)が無いと基本的には動作しません。Groovy-IoT+Kikoriはハードとソフトの両面からこの問題に対応します。ハードは標準的なUSB(CDC, HID)を用いカーネルドライバのみで動作、ソフトは一般的なソフトウェアエンジニアに馴染の深いRESTでアクセスする構成です。

  • 今後
     もう既に答えは出ています。Node-REDでセンサを取り扱う場合は、Web-Serverで包んで完全に抽象化します。そのセンサの特性やセンシングする方法について互換性を維持するための、REST-API, URLのConventionを定義する時期に来ています。大宮技研ではこれを積極的に啓蒙、推進します。ひとつでも多くのベンダがこのアイデアを理解・実現するための手助けをします。