部屋の温度を可視化するアプリを作ってみた(1/3)の続きです。
EC2
S3からセンサーのデータが入ったファイルを取ってMySQLに保存するところを書きます。
MySQLのインストール
先にセンサーデータを保存するMySQLをインストールしテーブルを作成します。$ sudo yum install mysql mysql-devel mysql-server
$ mysql --version
mysql Ver 14.14 Distrib 5.5.46, for Linux (x86_64) using readline 5.1
$ sudo chkconfig mysqld on
$ sudo /etc/init.d/mysqld start
$ sudo mysql_secure_installation
適当に設定する
$ mysql -uroot -p
>CREATE USER username IDENTIFIED BY 'password';
>CREATE DATABASE sensordb;
>grant all privileges on sensordb.* to username@localhost identified by 'password';
>CREATE TABLE `temperatures` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`imsi` varchar(255) DEFAULT NULL,
`temp` float DEFAULT NULL,
`send_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
)
データ形式
おおよそ5分に1回、SORACOM Funnelから送られてくるデータは次のような形式です。
{"operatorId": "OP00********", "timestamp": 1457194143120, "destination": {"resourceUrl": "https://firehose.us-west-2.amazonaws.com/soracom-funnel-******", "service": "firehose", "provider": "aws"}, "credentialsId": "my-aws-credentials", "payloads": {"temp": "34.061508", "send_time": "1457194141469"}, "sourceProtocol": "http", "imsi": "44010**********"} |
S3のデータをMySQLに保存する
Node.jsでS3からセンサーのデータを取得してMySQLに保存します。
node.jsインストール
上の手順でnode.jsをインストールする。
$ mkdir get-data && cd get-data |
mysqlのpoolの使い方がいまいちわからなかったので、毎回繋ぎ直すことにした。。
require('date-util'); |
自動実行
1時間に一回実行するようにcronに設定する。
$ crontab -l |
get-data.jsを実行してMySQLにデータが格納されていればOK。