Raspberry PiによるIoT(M2M)【I2C温度センサー/xively/JavaScript(Node.js)】

 最近「kinoma Createミートアップ参加レポート)」や「Tessel」等ハードウェア制御にもJavaScriptを利用しているキットがチラホラ見受けられるようになりました。そこで、先日Raspberry PiにちょうどNode.jsも入れたばかりということで、前回Raspberry Piを用いてPythonで温度センサー(ADT7410)をxivelyに連携したものを今回JavaScript(Node.js)でトライしてみました。 

 以下、これまでやってきたI2C(関連リンク)やNode.js(関連リンク)までの設定が終わっている前提で進めていきたいと思います。結線図等もありますので、一読して確認頂ければと思います。

 

手順1 Node.js用のモジュールのインストール

 今回の実装のために次のモジュールをインストールします。なお、今回の作業ディレクトリを iotとしておきます。

  • requestHTTPS REST APIクライアント)

  • i2c(I2CのREAD/WRITE)

  • async(非同期、ループ処理)・・・【12/29追記】これをそのまま常駐化として利用するには適さないようです(よく止まります)

$ mkdir iot && cd iot

$ sudo npm install request && sudo npm install i2c && sudo npm install async

f:id:yamaryu0508:20141212090319p:plain

手順2 JavaScript(Node.js)によるセンサーからクラウド連携

 今回も「xivelyAPIドキュメント)」への連携です。※Gistがうまく表示されない時にはこちらから直接ご覧ください。

 

 そして、プログラム実行時には、ここでもI2Cデバイスへのアクセスのため、 sudo node adt7410.jsのように sudoをつける必要があります。もしくは、 sudo adduser pi i2cI2Cグループにアクセスユーザーを追加していれば、 node adt7410.jsのような実行も可能になります(グループ追加時は sudo rebootで再起動しておきましょう)。

f:id:yamaryu0508:20141213212103p:plain

f:id:yamaryu0508:20141212094136p:plain

 

 考え方は前回と同様ですがNode.js on Raspberry Piということで、数少ないサンプルだったと思いますが、いかがだったでしょうか?

 今後更にハードとソフトのボーダレス化が進み色々なアイディアが出てくることでIoTの分野も面白みを増してくるのではないかと思います。