紹介する内容
- Node.js のインストール方法
- node-sensortag (CC2650STKの Javascriptライブラリ) のインストール方法
- node-sensortag を使った簡単なアプリ開発
環境
- Armadillo-IoT ゲートウェイ G3
- Kernel: v5.00
- Debian: v20160920
- CC2650STK
作業
1. Node.js のインストール
ここでは node
(インタープリター) と npm
(パッケージマネージャー) をインストールする方法を紹介します。
node
と npm
はご存知の方も多いかと思いますが、インストール方法がいくつもあります。
ここでは筆者が一番手軽だと感じた apt
で Node.js をインストールする方法を紹介します。
ただし、apt でインストールできる node
, npm
のバージョンは新しくありませんので、
より新しいバージョンをインストールしたい方は別の方法を検索してみてください。
apt で Node.js をインストールする
以下のコマンドを実行し、インタープリターとパッケージマネージャーをインストールしてください。
armadillo:~# apt-get update
armadillo:~# apt-get install nodejs npm
一般に Node.js のスクリプトを実行する際には node
というコマンドを使いますが、
Debian パッケージでは node
が nodejs
になっています。
以下のコマンドで alias を作り node
で Node.js のインタープリターを実行できるようにしておきましょう。
armadillo:~# ln -s `which nodejs` /usr/local/bin/node
動作確認
atmarkユーザーでログインし、sudo を付けて node が動けば問題ありません。
armadillo:~$ sudo node -v
v0.10.29
もし、atmark ユーザーが sudoers に入っていない場合は、一度 root でログインし、visudo を使って追加してください。
2. node-sensortag のインストール
CC2650STKのJavascriptライブラリnode-sensortag
をインストール方法を紹介します。
- node-sensortag: https://github.com/sandeepmistry/node-sensortag
node-sensortag をインストールするためには node-gyp と noble を先にインストールしておく必要があります
- node-gyp: https://github.com/nodejs/node-gyp
- noble: https://github.com/sandeepmistry/noble
作業ディレクトリを作成
はじめに、作業用ディレクトリを作成します。
armadillo:~$ mkdir sensor-test
armadillo:~$ cd sensor-test
以降の手順はすべてこの作業ディレクトの中で行います。
node-gyp のインストール
以下のコマンドで node-gyp をインストールしてください。
armadillo:~/sensor-test$ npm install node-gyp
なぜ npm install -g node-gyp
のように -g
オプションを付けなかったかは、
以下のNode.jsのドキュメントを参照してください。
Global vs Local installation | Node.js
https://nodejs.org/en/blog/npm/npm-1-0-global-vs-local-installation/
noble のインストール
noble をインストールするためにはいくつかのパッケージが必要です。 npm install を行う前に必要なパッケージをインストールしましょう。
armadillo:~/sensor-test$ sudo apt-get install bluetooth bluez libbluetooth-dev libudev-dev python
以下のコマンドで noble をインストールしてください。
armadillo:~/sensor-test$ npm install noble
node-sensortag のインストール
以下のコマンドで node-sensortag をインストールしてください。
armadillo:~/sensor-test$ npm install sensortag
これで node-sensortag のインストールは完了です。
動作確認
正しく node-sensortag がインストールできたかを確認するためにデモアプリを実行しましょう。
デモアプリを実行するために node_modules/sensortag/ 以下で npm install
を行ってください。
armadillo:~/sensor-test$ cd node_modules/sensortag/
armadillo:~/sensor-test/node_modules/sensortag$ npm install
ここではtest-cc2650-io.js
というデモアプリを実行してみます。
CC2650STKに電池を入れ、緑LEDが点滅している状態にしてください
test-cc2650-io.js
を実行すると以下のようなログが表示されます。
armadillo:~/sensor-test/node_modules/sensortag$ sudo node test-cc2650-io.js
discovered: {"id":"b0b448d75e01","type":"cc2650"}
connectAndSetUp
IO off
writeIoConfig
LED red
LED green
buzzer
IO off
disconnect
disconnected!
ログ表示と同時にLED点灯やブザー鳴動が行われます。
簡単なアプリを開発
インストール時に作成した作業ディレクトリ内で簡単なアプリを開発します。
- アプリ仕様
- 右スイッチが押されるとコンソールに right: down と表示され、離すと right: up と表示される
- 左スイッチが押されるとアプリを終了する
テキストエディタなどで下記の get-switch.js
を作成します。
armadillo:~/sensor-test$ ls
node_modules/
armadillo:~/sensor-test$ vim get-switch.js
- get-switch.js
var async = require('async');
var CC2650SensorTag = require('sensortag').CC2650;
CC2650SensorTag.discover(function(sensorTag) {
console.log('discovered: ' + sensorTag);
sensorTag.on('simpleKeyChange', function(left, right, reedRelay) {
if (right) {
console.log('right: down');
} else {
console.log('right: up');
}
if (left) {
console.log('disconnected!');
process.exit(0);
}
});
async.series([
function(callback) {
console.log('connectAndSetUp');
sensorTag.connectAndSetUp(callback);
},
function(callback) {
sensorTag.notifySimpleKey(callback);
console.log('key change waiting...');
}
]
);
});
アプリでは async というライブラリを使用しているので、 実行前に npm で async をインストールしておきましょう。
armadillo:~/sensor-test$ npm install async
実行はサンプルアプリ同様に sudo を付けて実行してください。
armadillo:~/sensor-test$ sudo node get-switch.js
discovered: {"id":"b0b448d75e01","type":"cc2650"}
connectAndSetUp
key change waiting...
right: down
right: up
right: down
right: up
right: down
right: up
right: down
right: up
right: up
disconnected!