Arduinoで温度センサーからとってきたデータをMySQLに登録したいので前準備としてNode.jsを導入します。
Node.jsはサーバーサイドで動作するjavascriptとの事ですがRaspberry piを使ったIoTデバイス制御の記事でよく使われているのでこの機会に習熟しておきたい所です。
#導入手順
私の環境はMacOSX 10.8ですが
Linux環境も基本は同じです。
git が未インストールであればインストール
$ brew install git
Linux環境であればyum等使用してインストール
$ yum -y install git
nvmをインストール
$ git clone https://github.com/creationix/nvm.git ~/.nvm
$ source ~/.nvm/nvm.sh
バージョン確認
$ nvm --version
0.31.1
インストール可能なNode.jsバージョンの確認
$ nvm ls-remote
v0.1.14
v0.1.15
v0.1.16
...
v6.0.0
v6.1.0
v6.2.0
表示されたインストール可能なバージョンを選択し
インストール
$ nvm install v6.2.0
Downloading https://nodejs.org/dist/v6.2.0/node-v6.2.0-darwin-x64.tar.xz...
######################################################################## 100.0%
Now using node v6.2.0 (npm v3.8.9)
バージョン確認
表示されればちゃんと入ってます
$ node -v
v6.2.0
version 6.2.0をデフォルトで使用するよう設定
$ nvm alias default v6.2.0
default -> v6.2.0
.bash_profileにコードを追加
if [[-s ~./nvm/nvm.sh]];
then source ~/.nvm/nvm.sh
fi
#MySQL接続
node-mysqlをインストールします。
$ npm install mysql
mysql.jsで下記のコードを保存します。
今回はtestという名前のDBに接続し
test_tableというテーブルから全ての行をSELECTして表示します。
'use strict';
let mysql = require('mysql');
let connection = mysql.createConnection({
host : 'Mysqlホスト名(ip adderss)',
user : 'ユーザー名',
password : 'ユーザーパスワード',
port : 3306,
database: 'test'
});
connection.connect();
connection.query('SELECT * from test_table LIMIT 10;', (err, rows, fields) => {
if (err) throw err;
console.log('The solution is: ', rows);
});
connection.end();
対象のSQLサーバーで上記のユーザーにアクセス権限付与しておきます。
mysql> GRANT ALL ON *.* TO 'Mysqlユーザー名'@'アクセス元マシンのホスト名(IP address)' IDENTIFIED BY '********';
Query OK, 0 rows affected (0.00 sec)
$ node mysql.js
The solution is: [ RowDataPacket { id: 1, memo: '1st' },
RowDataPacket { id: 2, memo: '2nd+' } ]
ちゃんとDBのレコードを表示出来ました。
DBにINSERTすれば気温や光量、土壌データの自動保存が出来そうですね。