IoTに挑戦

【IoTに挑戦】いよいよDBに着手してみることにした、はたして?

データサーバー

おはようございます。じぇいかわさきです。

スポンサーリンク

 

今回は、いよいよmariadbに検出した温湿度データをテーブルにインサートするための準備に取り掛かる。

 

DB自体の使い方もいまいちよくわからないので、ネットを見ながらの進め方になる。

 

初めてDBを扱う人の参考になればいいよね。

 

データサーバー

 

 

まずはともあれDBにログインしデータベースを作成

それでは、チョット前にDBをインストールして準備したので、それに則り実行してみよう。

 

mariadb

 

DB-login

 

まずは最初に、rootでログインをする。

 

rootでログインしているので、基本は全ての操作が可能。

 

まずは、今回のIoTでデバイスから取得したデータを格納するためのデータベースを作成する。もちろん、標準でできているデータベースを使用することも可能だが、ここはやはり別のデータベースを作成して個別に管理することにした。

 

create database iotdata;

 

このコマンドラインでデータベースを作成する。今回は、iotdataという名前のデータベースを作成した。

[ads]

 

DBを作る

 

Query OKと表示されれば、コマンドの動作が受け付けられ実行が完了した事になる。

 

次は、今回作成したiotdataで作業をするので、データベースをiotdataに切り替える。

 

切り替えるのは以下のコマンドを実行。

 

use iotdata;

 

Datadase changedと表示されて、MariaDB [none]がMariaDB [iotdata]となり、データベースが切り替わったことが確認できる。

 

DB変更

 

 

新規にユーザーを作成し権限を与える

次は、作成したデータベースiotdataについて、操作ができるユーザーを作成する。

 

普通、rootはスーパーユーザーなので、rootで作業は継続しない。基本はユーザーを作成し、そのユーザーで作業をするのだ。

 

従って、今回は新たにiotdataを操作するraspというユーザーを新規に作成した。

 

create user rasp identified by ‘passwd’;

 

これで新規にraspというユーザーが追加されたことになる。

 

ユーザー登録

 

次は、作成したraspというユーザーに対して、iotdataというデータベースに対してだけ全ての権限を与える。allと言ってもrootと同じ権限をもたせるわけでは無い

 

grant all on iotdata.* to rasp;

 

これでraspはiotdataというデータベースに対して、全ての操作ができるようになった。

[ads]

 

権限設定

 

実際に新規にユーザーが作られているか確認をする。操作を間違えて、プログラムを一旦終了してしまったが、useコマンドでデータベースを切り替えればそのまま可能であることを忘れていた。

 

データベースをmysqlに切り替える。

 

use mysql;

 

mysqlに切り替えたら、実際にユーザーが正しく登録されているか、確認してみる。

 

select user, password, plugin from user;

 

リストが表示されて、新規に作成したraspというユーザーがパスワード付きで登録されているのがわかる。

 

これで準備は完了した。

 

ユーザー確認

 

 

データを格納するテーブルを作成する

いよいよ、今回のメインイベントになるデータを本当に格納するためのテーブルを作成する。

 

これが完成すれば、後はデータを流し込むだけになる。

 

ますは新規作成したraspというユーザーでログインをする。

 

mariadb -u rasp -p

 

パスワードを入力してMariaDBを起動する。

 

新規ユーザーログイン

 

次は、新規に作ったデータベースのiotdataへ作業データベースを切り替える。

 

use iotdata;

 

MariaDB [nono] が MariaDB [iotdata] に切り替わり準備完了

 

DB変更

 

それではデータを格納するテーブルを作っていきましょう。

 

今回、DHT11から吐き出すデータをタイムスタンプを付加して、CSV形式のカンマ区切りデータでレコードを作成している。

 

この時、タイムススタンプは西暦ー月ー日の11桁、ブラックを挟み時間は時:分の5桁。そうすると合計で11+1+5になり17桁となる。

 

温度と湿度は各々小数点以下が一桁なのでMAX5桁有れば十分可能。

 

従って、以下のようにカラム名と変数を決定。

date varchar(20)、temp varchar(5)、humd varchar(5)

 

ここで使用した変数varcharとは、可変文字列という意味があり、簡単に言うと varchar(20)の場合、最大で20桁までの文字列を格納できる。ただし、20桁以下の場合は桁数が自動的に縮小し、余分なデータを格納しない方式。

 

これに対して、char(20)とすると、20桁の文字列が固定になり、20桁以下の場合にも空いた桁にはNUL(ブランク)が付加されてしまい、無駄になりデータの圧縮ができないのが特徴。

 

ではテーブルを作ってみましょう。

 

create table temphumd ( data varchar(20), temp varchar(5), humd varchar(5));

 

これでQuery OKが返ってくればテーブルが作られたことになります。

 

テーブル作成

 

最後に確認のため、本能にテーブルができているか確認をします。

 

show tables;

 

というコマンドになります。テーブルを作る時はtableですが、できたテーブルを確認する時はtablesになりますので注意してください。

 

show table;とすると、エラーになります。

 

テーブル確認

 

このように、iotdataというデータベースの中に、temphumdというテーブルが作られている事が確認できました。

 

これでデータを格納する準備が整いました。

 

後は、前回作ったデータを流し込み、このテーブルに本当に格納できるかを、確認する事が次の作業になりますね。

 

少しづつですが、確実に前進はしております。

 

 

まとめ

とりあえず、ネットを見ながら手探りでテーブル作成にまでたどり着いた。

 

しかし、これで本当にうまくいくのかははっきり言って分からない。DBって簡単なようで意外と難しそうだしね。

 

そもそも、ラズパイOSのベースはLinuxのDebianなんだよ。忘れていたんですがLinuxって、ユーザーやその権限の管理が厳密に行われているので、その辺でトラブる事が多いんです。

 

過去にちょっとLinuxをかじった時に、辛り痛い目に合った記憶がある。

 

何かしようとすると、すぐにアクセス権限が無いとか言って、先に進まなくなる。

 

ちょっと悪夢がよみがえって来そうな感じ。

 

とりあえず、ここまで来たので先に進んでいきたいと思う。

 

[twt]

 

 

ABOUT ME
じぇいかわさき
進撃の社畜/弱小プロブロガー 本ブログは、還暦で定年の世代の筆者が、まだまだやれるという事を証明するために新たな事に挑戦した事を情報発信しているブログです。同世代の人達に対して、まだまだいろいろと頑張れる、第二の人生を楽しく生きていく為に現状維持は退化、失敗の反対は行動しないことを座右の銘とし、思い立ったことにチャレンジした記録です。また、せっかく稼いだ収益を騙し取られないように、毎日来る迷惑メールなどのネットリテラシーについても情報発信をしています。 このブログは ネットリテラシー ブログ 働くこと について書いており、第二の人生で頑張る同世代の心に刺さる記事を目指してます。人生100年、まだまだがんばれます。 >> Twitterをフォローする