0.概要

R-MSMからクラウドの送られたデータを蓄積する方法としては、以下の2つの方法が一般的だと思います。

  1. 記録媒体以上にファイルとして記録する
  2. データベースにデータとして記録する

また、データベースとして記録する方法としても2つの方法が考えられます。

  1. MySQLやPostgreSQLなどのアプリケーションを利用する
  2. 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ステップです。

  1. まず、rootのパスワード設定を行います。
  2. その後に、mysqql_secure_installationコマンドを実行して、初期環境整備を行います。

1.2.1. rootのパスワード設定

rootのパスワード設定の手順を次に示します。

  1. $ sudo mysql [RET]で、mysqlにログインする。
  2. ALTER USERコマンドを使って、パスワードを設定する。
     mysql>ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘新しいパスワード’;
          ※ 新しいパスワードも’   ’で囲むのを忘れずに。
  3. mysqlを終了する。
     mysql>exit; で抜ける。

以下に実行例を示します。

1.2.2.初期環境整備の実施

初期環境整備には、”mysql_secure_installation”コマンドを使用します。

$ mysql_secure_installation

手順を次に示します。

  1. mysql_secure_installation コマンドを実行
  2.  $ mysql_secure_installation [RET]
  3. ルートのパスワードを聞いてくるので、前のページのALTER USERコマンドで設定したパスワードを入力する。
  4. ③ パスワードの強度のチェックを行うVALIDATE PASSWORD COMPONENTをセットアップするか聞いてきますので、必要な場合は”y”(セットアップする)を入力します。通常は”n”(セットアップしない)を選びます。パスワードのチェックがかなり厳しいです。
  5. ④ パスワードを変更するか聞いてくるので、”n”(変更しない)を入力する。
  6. 匿名ユーザーを削除するか聞いてくるので、”y”(削除する)を入力する。
  7. “root”ユーザーのリモートでのログインを不許可にするかを聞いてくるので、”y”(許可しない)を入力する。
  8. ⑦ テストデータベースを削除するか聞いてくるので、”y”(削除する)を入力する。
  9. ⑧ 特権の与えられたテーブルを再ロードするか聞いてくるので”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つのテーブルに分けます。

  1. センサの情報をまとめたattributeテーブル
  2. 実際のデータを格納する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のノードをインストールします。

  1. Node-REDのエディタ画面を立ち上げ、パレット管理から、ノードを追加のタブを選びます。
  2. 検索窓に、”mysql”と入力します。
  3. 出てくる検索結果の中で、”node-red-node-mysql”の右下の[ノードを追加]をクリックします。

追加されると以下のような、mysqlのノードが表示されます。

5.2. MyQLノードの設定

次に、R-MSMから送られてきたデータをMySQLに登録するフローを作ります。

5.2.1. フローの説明

下記の様なフローを作成しました。

  1. R-MSMから送られてきたjsonを読み込む
  2. センサー毎に内容が異なるので、switchノードでlabelで区別して、センサー毎に分けます。
  3. functionノードを使って、MySQLへのinsertコマンドを作ります。
  4. 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. 日時指定でグラフ表示

応用事例「データベースに蓄えたデータでグラフを描こう!!」を参照ください。