Raspbian 資料一覧
TWE-LITE-2525A(加速度センサー内蔵無線タグ)の値をNode.jsで読み出す
2016/12/18更新
対応バージョン: Raspbian Jessie Lite - September 2016
「Raspberry Pi 3とMONOSTICKを使ってTWE-LITE-2525A(加速度センサー内蔵無線タグ)からデータを読み取る」でTWE-LITE-2525Aのデータが読み出せるようになったが、Twitter投稿やメール送信などと簡単に連携させるためNode.jsでも読み出してみる。
serialportモジュールインストール
同モジュールの公式GitHubリポジトリは以下で、npmで簡単にインストールできる。
https://github.com/EmergingTechnologyAdvisors/node-serialport
% sudo npm install -g serialport
読み出しプログラム
以下のような簡単なプログラムにてTWE-LITE-2525Aのデータを読み取る。
get_twelite.js
var serialport = require('serialport'); // シリアルポート設定 var port = new serialport('/dev/ttyUSB0', { baudRate: 115200, parser: serialport.parsers.readline("\n") }); // TWE-Liteからデータ受信 port.on('data', function(input) { var devid = ' 1: 0x' + input.slice( 1, 3) + ' device id'; var comm = ' 2: 0x' + input.slice( 3, 5) + ' command'; var packetid = ' 3: 0x' + input.slice( 5, 7) + ' packet id'; var proto = ' 4: 0x' + input.slice( 7, 9) + ' protocol version'; var lqi = ' 5: 0x' + input.slice( 9,11) + ' LQI'; var src = ' 6: 0x' + input.slice(11,19) + ' source id'; var dst = ' 7: 0x' + input.slice(19,21) + ' destination id'; var time = ' 8: 0x' + input.slice(21,25) + ' time stamp'; var relay = ' 9: 0x' + input.slice(25,27) + ' relay flag'; var volt = ' a: 0x' + input.slice(27,31) + ' supply voltage'; var na = ' b: 0x' + input.slice(31,33) + ' N/A'; var di = ' c: 0x' + input.slice(33,35) + ' DI status'; var di_chg = ' d: 0x' + input.slice(35,37) + ' DI change status'; var ad = 'ex: 0x' + input.slice(37,45) + ' AD value'; var ad_corr = 'ef: 0x' + input.slice(45,47) + ' AD correction value'; var chksum = ' g: 0x' + input.slice(47,49) + ' check sum'; console.log(input); console.log(' ^1^2^3^4^5^^^^^^^6^7^^^8^9^^^a^b^c^de1e2e3e4ef^g'); console.log('---'); console.log(devid); console.log(comm); console.log(packetid); console.log(proto); console.log(lqi); console.log(src); console.log(dst); console.log(time); console.log(relay); console.log(volt); console.log(na); console.log(di); console.log(di_chg); console.log(ad); console.log(ad_corr); console.log(chksum); console.log('-------------------------------------------------'); });
これを実行してTWE-LITE-2525Aに変化を与えると以下のような結果が得られる。
% node get_twelite.js :78811501A2810F0508008EF4000B4000000F3E3E425A1AA4 ^1^2^3^4^5^^^^^^^6^7^^^8^9^^^a^b^c^de1e2e3e4ef^g --- 1: 0x78 device id 2: 0x81 command 3: 0x15 packet id 4: 0x01 protocol version 5: 0xA2 LQI 6: 0x810F0508 source id 7: 0x00 destination id 8: 0x8EF4 time stamp 9: 0x00 relay flag a: 0x0B40 supply voltage b: 0x00 N/A c: 0x00 DI status d: 0x0F DI change status ex: 0x3E3E425A AD value ef: 0x1A AD correction value g: 0xA4 check sum ------------------------------------------------- :78811501AB810F0508008EFC000B4000000F3E3E425A1A93 ^1^2^3^4^5^^^^^^^6^7^^^8^9^^^a^b^c^de1e2e3e4ef^g --- 1: 0x78 device id 2: 0x81 command 3: 0x15 packet id 4: 0x01 protocol version 5: 0xAB LQI 6: 0x810F0508 source id 7: 0x00 destination id 8: 0x8EFC time stamp 9: 0x00 relay flag a: 0x0B40 supply voltage b: 0x00 N/A c: 0x00 DI status d: 0x0F DI change status ex: 0x3E3E425A AD value ef: 0x1A AD correction value g: 0x93 check sum -------------------------------------------------
このデータを利用して他の処理と組み合わせればいろいろな用途に使える。
尚、データ仕様はMONO-WIRELESSの公式サイトにて定義されている。
関連資料・記事
参考サイト
Raspberry Pi (Wikipedia)
RaspberryPi技術情報 (Qiita)
Raspbian技術情報 (Qiita)
TWE-Lite技術情報 (Qiita)
IT女子のラズベリーパイ入門奮闘記 (Device Plus)
RaspberryPi電子工作入門 (ツール・ラボ)