GROVE PI+で第5回、第9回で温度センサーで温度を取得することを行いました。言語としては、pythonを
使用しましたが、今回はJavaScriptからセンサーのデータを取得します。
なお、今回は、「センサーでできるおもしろまじめ電子工作」を参考にさせていただきました。

必要ライブラリのインストール

・標準のRaspberryPiのOSにもNode.jsは入っていますが、バージョンが古いので最新のものと入れ替えます。
(1)古いnode.jsをアンインストールします

$ sudo apt-get autoremove nodejs

(2)nvmのインストール
・nvmをインストールするためのディレクトリを作成します

$ cd /home/pi
$ sudo mkdir .nvm
$ sudo chmod 777 .nvm

・gitからnvmを取得します

$ git clone https://github.com/creationix/nvm.git .nvm

・/home/pi/.profileに以下の行を末尾に追加します

source /home/pi/.nvm/nvm.sh

・上記の変更を有効化します

$ source .profile

・nvmのバージョンを確認し、使用可能になっていることを確認します
(2018/9/10時点では、0.33.11と表示されました)

$ nvm --version

(3)Node.jsのインストール
・Node.jsのインストールできるバージョンを確認します

$ nvm ls-remote

・Node.jsをインストールします。上記コマンドで最新バージョンが10.0.0なので指定します

$ nvm install v10.10.0

(4)node-grovepiモジュールのインストール
・JavaScriptでgrovepiを使用するためのライブラリをインストールします

$ npm install node-grovepi

プログラミング

以下のコードを入力します(temp_test.js)

'use strict';

var GrovePi          = require('node-grovepi').GrovePi;
var Board            = GrovePi.board;
var DHTDigitalSensor = GrovePi.sensors.DHTDigital;
var pinID            = 2;  // D2 ピン
var deviceID         = DHTDigitalSensor.VERSION.DHT22;
var unit             = DHTDigitalSensor.CELSIUS;

var board = new Board({
    onInit: function(res) {
        if (res) { console.log('start reading from sensor'); }

        var tempHumidity   = new DHTDigitalSensor(pinID, deviceID, unit);
        setInterval(function(){
            var arr = tempHumidity.read();
            console.log('temperature:', arr[0], 'humidity:', arr[1]);
        }, 2000);
    },
    debug: true,
    onError: function(err) {
        console.log(err)
    }
});

board.init();

動作確認

ターミナルでsshで接続し、実行します。

$ node temp_test.js
info GrovePi.board GrovePi is initing
start reading from sensor
temperature: 26.2 humidity: 77.7
temperature: 26.2 humidity: 74
temperature: 26.2 humidity: 74
temperature: 26.2 humidity: 74
・・・・

JavaScriptで温度を取得することができました!