Contents
- 0.概要
- 1. GCPへのMySQLのインストール
- 1.1. SSH端末の起動
- 1.2. MySQLのバージョン確認
- 1.3. MySQLのインストール実施
- 1.4. MySQLの起動確認
- 2. MySQLのユーザーアカウントの作成
- 1.1. ユーザーとパスワードの設計
- 1.2. rootユーザーの登録
- 1.2.1. rootのパスワード設定
- 1.2.2.初期環境整備の実施
- 1.3. 通常使用時のユーザー登録
- 3. データベースとテーブルの作成
- 3.1. データベース名の決定
- 3.2. テーブルの設計
- 3.2.1. データベース全体の設計
- 3.2.2. attributeテーブル
- 3.3.3. dataテーブル
- 3.3. データベースの作成
- 3.4. テーブルの作成
- 3.4.1. attributeテーブルの作成
- 3.4.2. dataテーブルの作成
- 4. データの登録と動作の確認
- 4.1.データの登録
- 4.2. 動作の確認
- 1) 日付の期間でデータを選択する。
- 2) センサの名前で選択する
- 3) データを削除する
- 5. Node-REDでデータ登録
- 5.1. MySQLノードのインストール
- 5.2. MyQLノードの設定
- 5.2.1. フローの説明
- 5.2.2. MySQLノードの設定
- 5.3.functionノードの記載
- 5.4.動作確認
- 6. 日時指定でグラフ表示
0.概要
R-MSMからクラウドの送られたデータを蓄積する方法としては、以下の2つの方法が一般的だと思います。
- 記録媒体以上にファイルとして記録する
- データベースにデータとして記録する
また、データベースとして記録する方法としても2つの方法が考えられます。
- MySQLやPostgreSQLなどのアプリケーションを利用する
- GCPのCloud SQLやAWSのAmazon RDSを利用する
本投稿では、ii.データベースにデータとして記録するために、a.MySQLをGCP(Google Cloud Platfrom)のVMインスタンス上にインストールします。そして、R-MSMから送られてきたセンサデータする方法を説明します。
説明の流れは、以下の通りです。現在、データベースに登録したデータから日時指定でデータを読みだすところまで完了しており、グラフ表示にする部分は記載できておりません。後日追って記載いたします。ご了承ください。
1. GCPへのMySQLのインストール
まず初めに、MySQLをGCPにインストールします。
1.1. SSH端末の起動
GCPのコンソール画面を開いて、VMインスタンスの選択画面を開きます。そして、SSH端末を起動するため、[SSH]をクリックします。
1.2. MySQLのバージョン確認
端末の画面が開いたら、インストールされるMySQLのバージョンを調べます。
$ sudo apt show mysql-server
と端末に入力します。
すると、次のようにVer.8.0.29がインストールされることが分かります。
1.3. MySQLのインストール実施
インストールするために、次のコマンドを入力します。インストールが完了するまで、しばらく待ちます。
$ sudo apt install mysql-server -y
1.4. MySQLの起動確認
プロンプト($)が返ってきたら、インストールされたか確認します。
$ mysql --version
バージョン情報(Ver 8.0.29)が無事にインストールされていることがわかりました。
次に、サービスとして起動しているかを確認します。
$ systemctl status mysql.service
サービスがactiveであることが分かりました。MySQLはインストールされると自動実行されます。
また、サービスの自動起動が有効になっているかを確認します。
$ systemctl is-enabled mysql.service
enabledが表示され、自動起動が有効になっていることが分かりました。
ここまででインストールは終わりです。次は、使うための準備を行います。
2. MySQLのユーザーアカウントの作成
ここからMySQLを使うための設定を行います。
1.1. ユーザーとパスワードの設計
まず、初めにユーザーアカウントを作成します。そのために、どのようなユーザーを登録するかを設計します。
今回は、rootユーザーと通常使用するユーザーの2つのユーザーを登録します。
rootユーザーには、すべての権限をあたますが、通常使用するユーザーには、データベース仕様に必要な権限しか与えません。
次の表にユーザー名とパスワードと権限をまとめました。
1.2. rootユーザーの登録
rootユーザーの登録は2ステップです。
- まず、rootのパスワード設定を行います。
- その後に、mysqql_secure_installationコマンドを実行して、初期環境整備を行います。
1.2.1. rootのパスワード設定
rootのパスワード設定の手順を次に示します。
- ① $ sudo mysql [RET]で、mysqlにログインする。
- ② ALTER USERコマンドを使って、パスワードを設定する。
mysql>ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘新しいパスワード’;
※ 新しいパスワードも’ ’で囲むのを忘れずに。 - ③mysqlを終了する。
mysql>exit; で抜ける。
以下に実行例を示します。
1.2.2.初期環境整備の実施
初期環境整備には、”mysql_secure_installation”コマンドを使用します。
$ mysql_secure_installation
手順を次に示します。
- ①mysql_secure_installation コマンドを実行
- $ mysql_secure_installation [RET]
- ② ルートのパスワードを聞いてくるので、前のページのALTER USERコマンドで設定したパスワードを入力する。
- ③ パスワードの強度のチェックを行うVALIDATE PASSWORD COMPONENTをセットアップするか聞いてきますので、必要な場合は”y”(セットアップする)を入力します。通常は”n”(セットアップしない)を選びます。パスワードのチェックがかなり厳しいです。
- ④ パスワードを変更するか聞いてくるので、”n”(変更しない)を入力する。
- ⑤ 匿名ユーザーを削除するか聞いてくるので、”y”(削除する)を入力する。
- ⑥ “root”ユーザーのリモートでのログインを不許可にするかを聞いてくるので、”y”(許可しない)を入力する。
- ⑦ テストデータベースを削除するか聞いてくるので、”y”(削除する)を入力する。
- ⑧ 特権の与えられたテーブルを再ロードするか聞いてくるので”y”(再ロードする)を入力する。
以下に実行例を示します。
以上で、rootユーザーの登録が完了です。
1.3. 通常使用時のユーザー登録
次に、通常に使用するためのユーザーを登録します。
まず、先ほど登録したパスワードを使って’root’でログインします。sudoが必要です。
$ sudo mysql –u root –p
パスワードを入力して、ログインします。CREATE USERコマンドを使って、ユーザーを登録します。ユーザー名の@’%’は、コマンドを発行するIPがどこでもOKという意味です。注意事項は、mysqlの端末では、コマンドの末尾に’;’が必要になることです。
mysql> CREATE USER RMSM01@'%' IDENTIFIED BY 'パスワード';
次に、権限を設定します。
mysql> grant create ,alter, drop, insert, update, delete, select, references, reload on *.* to RMSM01@'%' with grant option;
これで、ユーザーRMSM01の登録が終わりました。
登録されているかを確認します。
RMSM01がuserにあるのが分かります。
これで、通常使用するユーザーの登録が終わりました。
以上で、初期準備が終わりです。
3. データベースとテーブルの作成
ここからは、データベースの作成とデータの登録を行います。
3.1. データベース名の決定
まず、データベースを設計します。
データベース名を決めます。データベース名:rmsm_db
3.2. テーブルの設計
次に、テーブルの設計です。
3.2.1. データベース全体の設計
MySQLはRDB(リレーショナル・データ・ベース)です。カラムに登録する項目を設定します。実際のデータは行に収められます。
R-MSMから送られてくるデータに対して、項目とその項目のデータタイプを決めます。
今回は、以下のように項目とデータをまとめました。項目はセンサが変わっても共通して使えるようにdata0~data4という名称にしています。例1~例3の種類の異なるセンサーからデータが送られてきます。
nodeは、R-MSMが複数ある場合に区別するための番号です。labelは、センサの名称です。name0からname4に具体的なデータの名前を記載します。さらに、ダッシュボードのグラフにする際に必要になる単位と最大値/最小値もデータとして持ちます。
テーブルを2つのテーブルに分けます。
- センサの情報をまとめたattributeテーブル
- 実際のデータを格納するdataテーブル
attributeテーブルは、初めに1回登録すれば終わりです。
dataテーブルは実際のデータが格納されますので、随時使用します。
3.2.2. attributeテーブル
attributeテーブルの一覧を以下に示します。
3.3.3. dataテーブル
また、実際のデータを格納するdataテーブルを以下に示します。
3.3. データベースの作成
ここからは、データベースの作成とデータの登録を行います。
まず、データベースを作成します。
mysql> create database rmsm_db;
rmsm_dbを選択します。
mysql> use rmsm_db;
3.4. テーブルの作成
次にテーブルを作ります。
3.4.1. attributeテーブルの作成
まず、attribute テーブルを作成します。
3.4.2. dataテーブルの作成
dataテーブルを作成します。
テーブルが出来たか確認します。
mysql> show tables;
attributeとdataというテーブルがrmsm_dbの中に作られています。
4. データの登録と動作の確認
4.1.データの登録
データベースにデータを登録します。
まず、attributeテーブルからです。こちらは一度登録すればOKです(センサデータの追加等があれば変更は必要です)。
複数のデータを一度に登録します。
中身を確認します。
mysql> select * from attribute;
次に、dataテーブルに登録します。
中身を確認します。
mysql> select * from data;
4.2. 動作の確認
ここから、上で登録したデータに関して、簡単に検索等を行ってみたいと思います。
1) 日付の期間でデータを選択する。
20220-03-14のデータが3つ選ばれています。
2) センサの名前で選択する
labelがBME680のデータが選ばれて表示されています。
3) データを削除する
一つ目のdeleteコマンドで、labelがBME680である行が消えました。その次のdeleteコマンドですべてのデータが消えました。
5. Node-REDでデータ登録
この章では、インストールしたMySQLにNode-REDを使ってデータを登録することを行います。
5.1. MySQLノードのインストール
まず、Node-REDにMySQLのノードをインストールします。
- Node-REDのエディタ画面を立ち上げ、パレット管理から、ノードを追加のタブを選びます。
- 検索窓に、”mysql”と入力します。
- 出てくる検索結果の中で、”node-red-node-mysql”の右下の[ノードを追加]をクリックします。
追加されると以下のような、mysqlのノードが表示されます。
5.2. MyQLノードの設定
次に、R-MSMから送られてきたデータをMySQLに登録するフローを作ります。
5.2.1. フローの説明
下記の様なフローを作成しました。
- R-MSMから送られてきたjsonを読み込む
- センサー毎に内容が異なるので、switchノードでlabelで区別して、センサー毎に分けます。
- functionノードを使って、MySQLへのinsertコマンドを作ります。
- MySQLノードを使って、作ったinsertコマンドを発行し、Databaeに登録します。
5.2.2. MySQLノードの設定
1) MySQLノードをクリックします。すると編集画面が現れます。
2) データベース窓の横の鉛筆マークをクリックします。すると、databeseノードの編集画面が現れます。
ユーザー名、パスワード、データベース名を記入した後、[更新]をクリックします。
3) MySQLの編集画面に戻りますので、名前を追加して、[完了]をクリックします。
以上で、MySQLノードの設定が終了です。デプロイすると、ノードの下に”connected”と出ればOKです。
5.3.functionノードの記載
次に説明するのが、R-MSMから送られてきたデータをMySQLへのデータ登録コマンド(“insertコマンド”)に変換するのための、functionノードです。
fucntionノードはクリックすると、次のような編集画面が現れます。中央下の画面に、javascriptの命令を記載します。
次に、javascriptの命令を示します。
一番上の行が、R-MSMで測定したデータをGateWayがクラウドに上げてくるjsonデータです。
それを途中のfunctionノードで変換して、一番下の行の,”insert”コマンドの形に変換します。
5.4.動作確認
動作確認として、登録されているデータから日時を指定して該当するデータを抽出してみます。
2022-03-15の8:40~8:50に登録されたデータを次のコマンドで抽出しました。
1分ごとに3種類のセンサのデータが抽出されて全部で30個のデータが呼び出されています。
6. 日時指定でグラフ表示
応用事例「データベースに蓄えたデータでグラフを描こう!!」を参照ください。