140_MySQL_8_(グラフ表示3)_on SAKURAVPS

***************
/var/www/html

20161129_disp_inst.php
を使って修正してみる
***************オリジナル
<?php
//MySQLに接続し、データベースを選択します。
$conn = mysql_connect(‘tk2-201-10183.vs.sakura.ne.jp’,’root’,’yoshihara20160805′
) or die(mysql_error());
mysql_select_db(‘20161129_sensor’) or die(mysql_error());
//SQLクエリを実行します。
$res = mysql_query(‘SELECT * from t_sensor order by Num DESC LIMIT 10’) or die(mysql_error());
//結果を出力します。
while ($row = mysql_fetch_array($res, MYSQL_NUM)){
echo $row[0].”\t”;
echo $row[1].”\t”;
echo $row[2].”\n”;
echo $row[3].”\n”;
echo $row[4].”\n”;
echo $row[5].”\n”;
echo “<br />\n”;
}
//結果セットを開放し、接続を閉じます。
mysql_free_result($res);
mysql_close($conn);
?>
***************
20161212_gra_tmp1.html
を修正する
***************
<?php
//MySQLに接続し、データベースを選択します。
$conn = mysql_connect(‘tk2-201-10183.vs.sakura.ne.jp’,’root’,’yoshihara20160805′
) or die(mysql_error());
mysql_select_db(‘20161129_sensor’) or die(mysql_error());
//SQLクエリを実行します。
$res = mysql_query(‘SELECT * from t_sensor order by Num DESC LIMIT 10’) or die(mysql_error());
//結果を出力します。
while ($row = mysql_fetch_array($res, MYSQL_NUM)){
echo “[‘”;
echo $row[1].”\n”;
echo “‘,”;
echo $row[2].”\n”;
echo “,”;
echo $row[3].”\n”;
echo “],”;
echo “<br />\n”;
}
//結果セットを開放し、接続を閉じます。
mysql_free_result($res);
mysql_close($conn);
?>
***************
20161213_gra_tmp1.html
を修正する
うーーーん。データテーブルの作成がうまくできればOKなんだけど。。
***************
<html>
  <head>
    <!– AJAX API のロード –>
    <script type=”text/javascript” src=”https://www.google.com/jsapi”></script>
    <script type=”text/javascript”>
      // Visualization API と折れ線グラフ用のパッケージのロード
      google.load(“visualization”, “1”, {packages:[“corechart”]});
      // Google Visualization API ロード時のコールバック関数の設定
      google.setOnLoadCallback(drawChart);
      // グラフ作成用のコールバック関数
      function drawChart() {
        //*****
        // データテーブルの作成
        var data = google.visualization.arrayToDataTable([
          [‘日時’, ‘温度’, ‘湿度’],
[‘2016-12-13 08:10:01 ‘,28 ,37 ],
[‘2016-12-13 08:00:01 ‘,86 ,99 ],
[‘2016-12-13 07:10:01 ‘,47 ,76 ],
[‘2016-12-13 07:00:01 ‘,71 ,86 ],
[‘2016-12-13 06:10:01 ‘,2 ,86 ],
[‘2016-12-13 06:00:02 ‘,62 ,20 ],
[‘2016-12-13 05:10:01 ‘,80 ,61 ],
[‘2016-12-13 05:00:02 ‘,83 ,48 ],
[‘2016-12-13 04:10:02 ‘,93 ,72 ],
[‘2016-12-13 04:00:01 ‘,65 ,1 ],
        //*****
        ]);
        // グラフのオプションを設定
        var options = {
          title: ‘温度・湿度ダミーグラフ’
        };
        // LineChart のオブジェクトの作成
        var chart = new google.visualization.LineChart(document.getElementById(‘chart_div’));
        // データテーブルとオプションを渡して、グラフを描画
        chart.draw(data, options);
      }
    </script>
  </head>
  <body>
    <!– グラフを描く div 要素 –>
    <div id=”chart_div” style=”width: 80%; height: 400px;”></div>
<br>
表示データ<br>
[‘2016-12-13 08:10:01 ‘,28 ,37 ],<br>
[‘2016-12-13 08:00:01 ‘,86 ,99 ],<br>
[‘2016-12-13 07:10:01 ‘,47 ,76 ],<br>
[‘2016-12-13 07:00:01 ‘,71 ,86 ],<br>
[‘2016-12-13 06:10:01 ‘,2 ,86 ],<br>
[‘2016-12-13 06:00:02 ‘,62 ,20 ],<br>
[‘2016-12-13 05:10:01 ‘,80 ,61 ],<br>
[‘2016-12-13 05:00:02 ‘,83 ,48 ],<br>
[‘2016-12-13 04:10:02 ‘,93 ,72 ],<br>
[‘2016-12-13 04:00:01 ‘,65 ,1 ],<br>
  </body>
</html>

139_MySQL_7_(グラフ表示2)_on SAKURAVPS

[]でデータを入れてあげれば、うまくグラフ表示できるかも???

ということでトライ!

/var/www/html

にあるファイル

20161129_disp_inst.php

をいじってみるファイル作成

20161211_disp_inst.php

で、SQLでとってきた値の部分を下記にように修正。

//結果を出力します。
while ($row = mysql_fetch_array($res, MYSQL_NUM)){
echo “[“;
echo $row[1].”\n”;
echo $row[2].”\n”;
echo $row[3].”\n”;
echo “]”;
echo “<br />\n”;
}

図1

capture_2016_12_11_22_16_15_496

すると、

図2

capture_2016_12_11_22_16_31_932

さあ、これで表示されるだろうか????

/var/www/html/ras_gra

20161211_gra_tmp3.html

をいじったので、

http://160.16.50.187/ras_gra/20161211_gra_tmp3.html

にアクセスしてみます。

ダメ。。。。。。かあ・・

(残念)

もしかして、foreach文を使えばよいのかな??

http://qiita.com/bami3/items/abce7ae683d1979e7e81

によると、、、(下記は抜粋。。)

<?php foreach($datas as $ym=>$values): ?>
[<?php echo $ym ?>, <?php echo $values[0] ?>, <?php echo $values[1] ?>],
<?php endforeach ?>

以上

 

138_MySQL_6_(グラフ表示)_on SAKURAVPS

http://make.bcde.jp/raspberry-pi/%E3%82%BB%E3%83%B3%E3%82%B5%E3%81%AE%E8%A8%98%E9%8C%B2%E3%82%92%E3%82%B0%E3%83%A9%E3%83%95%E5%8C%96/
「センサの記録をグラフ化 」
なんだけど、まだセンサないので、SQLのデータをグラフ化できるか?試そう。
1.データベースを準備する
はできているのでOK。
CREATE DATABASE logging CHARACTER SET utf8;
mysql> CREATE TABLE temperature (
??date datetime NOT NULL,
??value float(8, 4) NOT NULL
);
だけど。独自DB作ったので。
2.気温を計り、データをデータベースに格納する
これもOK。今はダミーデータを一時間気に入れている。
それをまずはグラフ化。
3.決まった時間に気温を記録
これもcronを作っているのでOK。
4.グラフを表示するプログラム
さあ、ここから!。
データベースから気温を取り出す方法は、PythonでMySQLを操作するを参考にします。(これはOK、とばし。)
html生成のためには、テンプレートからファイル生成を参考(http://make.bcde.jp/python/テンプレートからファイル生成/)にし、テンプレートエンジンを使います。
Pythonでテンプレートからファイルを生成します。
ここでは、サンプルプログラムとともに簡単な使い方を解説します。
テンプレートからファイルを生成することで、HTMLファイルのひな形にテキストを流し込み、動的にWebメージを作成することができます。
テンプレートからファイルを生成するライブラリをテンプレートエンジンといい、ここではjinja2というテンプレートエンジンを使用します。
4(1)テンプレートからファイル生成
Pythonでテンプレートからファイルを生成します。
ここでは、サンプルプログラムとともに簡単な使い方を解説します。
テンプレートからファイルを生成することで、HTMLファイルのひな形にテキストを流し込み、動的にWebメージを作成することができます。
テンプレートからファイルを生成するライブラリをテンプレートエンジンといい、ここではjinja2というテンプレートエンジンを使用します。
4(2)
jinja2のインストール
jinja2のインストールには、pipを使用します。
以下のコマンドを実行するだけです。
ID:sakuravps Pass:A*****6で入ってrootになってから実行
$ sudo pip install jinja2
だけど、、、このコマンドがうまく行かない。。。PIPがインストールされていない、、、、と。
で。。
http://qiita.com/who_you_me/items/831d62f396e6d66dda66
を参考に。
曰く、、Pythonでパッケージ管理といえばpipですね。
pipを入れようとしたら、以前なら「setuptools or distribute をインストール→easy_install pipを叩く」という手順でしたが、いつの間にかセットアップが楽になってました。
らしい。。。で。
# curl -kL https://bootstrap.pypa.io/get-pip.py | python
# curl -kL https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python pip install virtualenv virtualenvwrapper
うーーーん。アラーム出ているみたいだけど。Successgfullyとあるので、まあ続けてみるか。
(図1)
capture_2016_12_10_21_28_24_57
では、
# pip install jinja2
(図2)
capture_2016_12_10_21_31_05_638
うーーーん。またなんかアラームだらけだけど。。。まあ続けてみるか。。
4(3)GoogleAPIプログラム
ここでは気温グラフ表示に、Google Chart APIを使用します。Web上のAPIを使えば、グラフ表示は簡単に行うことができます。サンプルを元に、以下のようなグラフ表示用のhtmlテンプレートを使用します。
ちなみにpythonがつかえるか?確認が必要。
https://mag.osdn.jp/08/06/06/0149247
# python -V
(図3)
capture_2016_12_11_08_18_01_745
OKみたいね。各自の利用するWebサーバの設定にてCGIスクリプティングが実行可能となっているかを確認する。
次のステップとして/etc/httpd/conf/httpd.confを開き、サーバスクリプトの格納ディレクトリを指定している「#ScriptAlias: This controls which directories contain server scripts.」で始まるテキストブロックを特定し、次のような設定が施されているかを確認する。
、、、、と。。。
では。
(図4)
capture_2016_12_11_08_22_08_626
OKみたいね。
では、「4.グラフを表示するプログラム」にもどって、、
あらかじめ、グラフ表示を行うためのhtmlテンプレートを用意して、そこに先ほど取得した気温データを流しこみます。、、と。
下記をマネてhtmlを作成。
http://160.16.50.187/20161211_graph_temp1.html
/var/www/html
に配置して、
なんか表示するか?
<html>
<head>
<title>Temperature Chart</title>
<meta http-equiv=”content-type” content=”text/html; charset=utf-8″ />
<script type=”text/javascript” src=”https://www.google.com/jsapi”></script>
<script type=”text/javascript”>
google.load(“visualization”, “1”, {packages:[“corechart”]});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([
[‘Date’, ‘Temp’],
{% for record in temp_list %}
[‘{{record.date}}’,? {{record.temp}}],
{% endfor %}
]);
// グラフのオプションを設定
var options = {
title: ‘{{title}}’
};
var chart = new google.visualization.LineChart(document.getElementById(‘chart_div’));
chart.draw(data, options);
}
</script>
</head>
<body>
“なんか表示されない?2016/12/11”
<div id=”chart_div” style=”width: 80%; height: 400px;”></div>
</body>
</html>
http://160.16.50.187/ras_gra/20161211_graph_temp1.html
にアクセス
“なんか表示されない?2016/12/11”
だけ表示OK!!
*********
テンプレートを用意したあとは、データを流し込みます。
気温データをテンプレートに反映するプログラムは以下のように作成します。。。と。
#!/usr/bin/pythonCGI
# -*- coding: utf-8 -*-
from jinja2 import Environment, FileSystemLoader
import MySQLdb
import datetime
def mychart(environ, start_response):
env = Environment(loader=FileSystemLoader(‘./’, encoding=’utf8′))
tpl = env.get_template(‘template.html’)
#テンプレートへ挿入するデータの作成
title = u”Tmperature Chart”
temp_list = []
connector = MySQLdb.connect(host=”localhost”, db=”logging”, user=”user”, passwd=”passwd”, charset=”utf8″)
cursor = connector.cursor()
#sql = “select * from temperature”
sql = “select * from logging.temperature where DATE_ADD(date, INTERVAL 24 HOUR) > NOW()”
cursor.execute(sql)
records = cursor.fetchall()
for record in records:
temp_list.append({‘date’:record[0].strftime(“%Y-%m-%d %H:%M”), ‘temp’:record[1]})
cursor.close()
connector.close()
#テンプレートへ挿入するデータの作成
title = u”Tmperature Chart”
#テンプレートへの挿入
html = tpl.render({‘title’:title, ‘temp_list’:temp_list})
start_response(‘200 OK’, [(‘Content-Type’, ‘text/html’)])
return [html.encode(‘utf-8’)]
if __name__ == ‘__main__’:
from flup.server.fcgi import WSGIServer
WSGIServer(mychart).run()
************(俺様用に書き直し・・)
#!/usr/bin/pythonCGI
# -*- coding: utf-8 -*-
from jinja2 import Environment, FileSystemLoader
import MySQLdb
import datetime
def mychart(environ, start_response):
env = Environment(loader=FileSystemLoader(‘./’, encoding=’utf8′))
tpl = env.get_template(‘template.html’)
#テンプレートへ挿入するデータの作成
title = u”Tmperature Chart”
temp_list = []
connector = MySQLdb.connect(host=”tk2-201-10183.vs.sakura.ne.jp”, db=”20161129_sensor”, user=”raspai”, passwd=”Aa123456″, charset=”utf8″)
cursor = connector.cursor()
#sql = “select * from temperature”
sql = “select * from logging.temperature where DATE_ADD(date, INTERVAL 24 HOUR) > NOW()”
cursor.execute(sql)
records = cursor.fetchall()
for record in records:
temp_list.append({‘date’:record[1].strftime(“%Y-%m-%d %H:%M”), ‘temp’:record[3]})
cursor.close()
connector.close()
#テンプレートへ挿入するデータの作成
title = u”Tmperature Chart”
#テンプレートへの挿入
html = tpl.render({‘title’:title, ‘temp_list’:temp_list})
start_response(‘200 OK’, [(‘Content-Type’, ‘text/html’)])
return [html.encode(‘utf-8’)]
if __name__ == ‘__main__’:
from flup.server.fcgi import WSGIServer
WSGIServer(mychart).run()
****
これを、
/var/www/html/ras_gra
に作成、ついでにここへ上記htmlも同棲させる。
***************************************************************************************
うーーん、やはりきちんと学んだほうが良いかも。
新たに下記を参考に
http://yohshiy.blog.fc2.com/blog-entry-195.html#gct_line_chart
http://qiita.com/bami3/items/abce7ae683d1979e7e81
こちらで試す。。。
■データの準備
サンプルで超テキトーにデータつくります。と。
同じように2本グラフ引くためにValuesを2つ用意。
<?php
error_reporting(E_ALL);
$datas=array();
for($utime=strtotime(‘-1 year’); $utime<time(); $utime=strtotime(‘+1 month’,$utime))
$datas[date(‘Y/m’,$utime)]=array(rand(0,1000),rand(0,1000));
?>
■HTML準備
<html>
<head>
<script type=”text/javascript” src=”//www.google.com/jsapi”></script>
</head>
<body>
<div style=”margin:20px 10px; padding:0; width:800px; height:350px;” id=”graphField”>Now Loading …</div>
<script type=”text/javascript”>
// ここに後述のJSコードをいれてね
</script>
</body>
</html>
■JavaScriptを書く
// この辺おまじない
google.load(‘visualization’, ‘1.0’, {‘packages’:[‘corechart’]});
google.setOnLoadCallback(function(){
// この辺データ
var data = google.visualization.arrayToDataTable([
// 横軸 , 値1, 値2
[‘Month’, ‘Value1’, ‘Value2’],
<?php foreach($datas as $ym=>$values): ?>
[‘<?php echo $ym ?>’, <?php echo $values[0] ?>, <?php echo $values[1] ?>],
<?php endforeach ?>
]);
// この辺グラフの描画オプション
var options = {
title: ‘Graph Sample’,
chartArea: {‘width’:’70%’, ‘height’:’65%’, ‘left’:65 },
hAxis: { title:’Year/Month’, titleTextStyle:{italic:false} },
vAxis: { title:’Random Values’,  titleTextStyle:{italic:false} },
crosshair: { trigger: ‘both’ }
};
// この辺おまじない
var chart = new google.visualization.LineChart(document.getElementById(‘graphField’));
chart.draw(data, options);
});
■データの辺り
***********************************ダミーデータでダミhtmlを作ってみる。
\\\\\\\\\\\\\\\\\\\\>>>ファイル名:20161211_gra_tmp2.html
<?php
error_reporting(E_ALL);
$datas=array();
for($utime=strtotime(‘-1 year’); $utime<time(); $utime=strtotime(‘+1 month’,$utime))
  $datas[date(‘Y/m’,$utime)]=array(rand(0,1000),rand(0,1000));
?>
<html>
<head>
 <script type=”text/javascript” src=”//www.google.com/jsapi”></script>
</head>
<body>
<div style=”margin:20px 10px; padding:0; width:800px; height:350px;” id=”graphField”>Now Loading …</div>
<script type=”text/javascript”>
 // ここに後述のJSコードをいれてね
// この辺おまじない
google.load(‘visualization’, ‘1.0’, {‘packages’:[‘corechart’]});
google.setOnLoadCallback(function(){
  // この辺データ
  var data = google.visualization.arrayToDataTable([
    [‘Month’, ‘Value1’, ‘Value2’],
************今は、下記のデータを書いて表示だけ。
[‘2013/11’,100,444],
[‘2013/12’,400,512],
[‘2014/10’,931,123],
[‘2014/10’,200,400],
[‘2014/10’,931,123],
[‘2014/10’,500,123],
[‘2014/10’,340,450]
  ]);
************下記で書くと何も出ない
    <?php foreach($datas as $ym=>$values): ?>
    [‘<?php echo $ym ?>’, <?php echo $values[0] ?>, <?php echo $values[1] ?>],
    <?php endforeach ?>
  ]);
************
// この辺グラフの描画オプション
  var options = {
    title: ‘Graph Sample’,
    chartArea: {‘width’:’70%’, ‘height’:’65%’, ‘left’:65 },
    hAxis: { title:’Year/Month’, titleTextStyle:{italic:false} },
    vAxis: { title:’Random Values’,  titleTextStyle:{italic:false} },
    crosshair: { trigger: ‘both’ }
  };
  // この辺おまじない
  var chart = new google.visualization.LineChart(document.getElementById(‘graphField’));
  chart.draw(data, options);
});
</script>
</body>
</html>
\\\\\\\\\\\\\\\\\\\\
上記を、ファイル名
20161211_gra_tmp2.html
で、
/var/www/html/ras_gra/
に保存。
一度ここで、Webアクセスしてみる。************
なので、
http://160.16.50.187/ras_gra/20161211_gra_tmp2.html
capture_2016_12_11_21_41_32_465
一応なんか出る。。。。
じゃあ。きちんとデータを入れてあげれば。。。
[]の中に。。。
以上。つづく。。。

137_MySQL_5_(case when文使って湿度で判断)_on SAKURAVPS

http://www.dbonline.jp/sqlite/select/index13.html
を参考に改造してみる。。。。
ブログなので、うまく行った順番も載せておく。
ここから、、、、、
select
case
when result > 80 then ‘Pass’
when result > 50 then ‘ReTest’
else ‘Fail’
end
from test;
***********************************12/8 in JR
select
case
when @abc > 270 then ’12/8Pass’
when @abc < 270 then ’12/8ReTest’
else ’12/8Fail’
end
from t_sensor;
***********************************12/8 in JR
****file_sql_upd2****
select
case
when @humid_fg > 50 then ‘50%以上なんで水いらない’
when @humid_fg < 20 then ‘20%以下なんで水ほしい’
else ‘20%<humid<50%なので水充足中’
end
from t_sensor WHERE Num IN (SELECT max(Num) FROM t_sensor);
***********************************12/9 OK
で結局、こうなりました!!
****file_sql_upd3****
INSERT INTO `t_sensor` (
`time_stamp`,
`temp`,
`humid`,
`water_need`,
`memo`) VALUES (
CURRENT_TIMESTAMP,
CONCAT((CEILING(RAND() * 100))),
CONCAT((CEILING(RAND() * 100))),
‘test_12/9_18:00’,
‘file_sql_ist1そのままの値’);
SELECT Num,temp,humid into @abc,@temp_d,@humid_d
from t_sensor WHERE Num IN (SELECT max(Num) FROM t_sensor);
UPDATE `t_sensor`
SET
`time_stamp` = CURRENT_TIMESTAMP,
`temp`= CONCAT(@temp_d,’度’),
`humid` = CONCAT(@humid_d,’%’),
`water_need` = (
case when @humid_d > 50
        then ‘湿度50%以上なので水不要’
     when @humid_d < 20
        then ‘湿度20%以下なので水ほしい’
else
        ‘湿度が0%<humid_d<50%より水充足中’
end),
`memo` = ‘humid値で判断修正’
 WHERE Num = @abc;
できた!!!!
crontabは、下記で設定
capture_2016_12_09_20_18_03_284
phomyadminでみてもOK
capture_2016_12_09_20_20_55_859
PHPもOK
capture_2016_12_09_20_21_27_409
では、少しーーー様子見ましょう!!!
(少しうれしい!)
以上

136_MySQL_4_(SELECT結果を変数に入れる)_on SAKURAVPS

最新レコードの値を見て「水いる・いらない」をいずれ判断させるのに、SELECT結果を辺陬に入れて、最新レコードだけ変更する、、にチャレンジ!

SQL文ではうまく行く!
phpmyadminではダメだけど。。
SELECT Num into @abc from t_sensor WHERE Num IN (SELECT max(Num) FROM t_sensor);
UPDATE `t_sensor` SET
`time_stamp` = CURRENT_TIMESTAMP,
`temp`= (CEILING(RAND() * 100))
WHERE Num = @abc;
ID:raspai Pass=A*****6

/home/raspai
のところに、ファイル
file_sql_upd1
を作成
****これをいれました!*****
SELECT Num into @abc from t_sensor WHERE Num IN (SELECT max(Num) FROM t_sensor);
UPDATE `t_sensor` SET
`time_stamp` = CURRENT_TIMESTAMP,
`temp`= (CEILING(RAND() * 100)),
`humid` = (CEILING(RAND() * 100)),
`water_need` = ‘いらない!’,
`memo` =’temp,humidはランダム!’
 WHERE Num = @abc;
crontabの設定を追加
10 * * * * mysql -u raspai -pAa123456 20161129_sensor < file_sql_upd1
10分後に最新レコードだけ、ランダム変数に変更します。
はたして、、、????
(2016/12/06 23:00いい感じ!!)
結局、今のファイルは、、、下記。
****file_sql_ist1****
INSERT INTO `t_sensor` (`time_stamp`, `temp`, `humid`, `water_need`, `memo`) VALUES (CURRENT_TIMESTAMP,’10ど’,’10%’,’no_need’,’file_sql_ist1のそのままの値’)
****file_sql_upd1****
INSERT INTO `t_sensor` (
`time_stamp`,
`temp`,
`humid`,
`water_need`,
`memo`) VALUES (
CURRENT_TIMESTAMP,
10,
10,
‘no_need’,
‘2016/12/6_10:30_そのまま’);
SELECT Num into @abc from t_sensor WHERE Num IN (SELECT max(Num) FROM t_sensor);
UPDATE `t_sensor` SET
`time_stamp` = CURRENT_TIMESTAMP,
`temp`= CONCAT((CEILING(RAND() * 100)),’度’),
`humid` = CONCAT((CEILING(RAND() * 100)),’%’),
`water_need` = ‘水いらない!’,
`memo` =’temp,humidはランダム!file_sql_upd1で修正’
 WHERE Num = @abc;
(2016/12/07 8:00今は下記)
****file_sql_ist1****
INSERT INTO `t_sensor` (
`time_stamp`,
`temp`,
`humid`,
`water_need`,
`memo`) VALUES (
CURRENT_TIMESTAMP,
CONCAT((CEILING(RAND() * 100)),’ど’),
CONCAT((CEILING(RAND() * 100)),’%’),
‘test’,
‘file_sql_ist1のそのままの値’)
****file_sql_upd1****
INSERT INTO `t_sensor` (
`time_stamp`,
`temp`,
`humid`,
`water_need`,
`memo`) VALUES (
CURRENT_TIMESTAMP,
CONCAT((CEILING(RAND() * 100))),
CONCAT((CEILING(RAND() * 100))),
‘test’,
‘file_sql_ist1のそのままの値’);
SELECT Num,temp,humid into @abc,@temp_de,@humid_fg
from t_sensor WHERE Num IN (SELECT max(Num) FROM t_sensor);
UPDATE `t_sensor` SET
`time_stamp` = CURRENT_TIMESTAMP,
`temp`= CONCAT(@temp_de,’度’),
`humid` = CONCAT(@humid_fg,’%’),
`water_need` = ‘水いらない!’,
`memo` =’temp,humidはランダム!file_sql_upd1で修正’
 WHERE Num = @abc;
以上

135_MySQL_3_(配列に入れる)_on SAKURAVPS

raspaiのshellを作る。まずは単純なselect文だけ。
https://gist.github.com/ShigeoTejima/7fcb68ffd3e5ffc596f8
を参考
/home/raspai
に、
slt_20161204_1.sh
として作成します。
ーーーーーーーーーーーー./slt_20161204_1.shで実行
#!/bin/bash
function get_one_value() {
cmd=2016/12/04 17:43 direct echo
echo “$cmd”
}
function main() {
get_one_value
}
####. $(dirname $0)/database.conf
main “$@”
ーーーーーーーーーーーーここまでOK(単純にechoを$変数で表示まで)
ーーーーーーーーーーーー./slt_20161204_1.shで実行
#!/bin/bash
function get_one_value() {
cmd=’SELECT * FROM t_sensor WHERE time_stamp IN (SELECT max(time_stamp) FROM t_sensor)’
echo “$cmd”
}
function main() {
get_one_value
}
####. $(dirname $0)/database.conf
main “$@”
ーーーーーーーーーーーーここまでOK(SQL文の表示まで)
ーーーーーーーーーーーー./slt_20161204_2.shで実行
#!/bin/bash
function get_one_value() {
 DATABASE=20161129_sensor
USERNAME=raspai
PASSWORD=Aa123456
 local query=”SELECT * FROM t_sensor WHERE time_stamp IN (SELECT max(time_stamp) FROM t_sensor)”
local result
result=$(mysql -B –user=${USERNAME} –password=${PASSWORD} –database=${DATABASE} -N -e “${query}”)
if [[ $? -eq 0 ]]; then
echo “value: [${result}]”
else
echo “fail to select from mysql.” 1>&2
fi
echo “${result}”
}
function main() {
get_one_value
}
main “$@”
ーーーーーーーーーーーーここまでOK(SQL文の表示まで、でも2行表示される)
ーーーーーーーーーーーー./slt_20161204_2.shで実行
#!/bin/bash
function get_one_value() {
 DATABASE=20161129_sensor
USERNAME=raspai
PASSWORD=Aa123456
 local query=”SELECT * FROM t_sensor WHERE time_stamp IN (SELECT max(time_stamp) FROM t_sensor)”
local result
result=$(mysql -B –user=${USERNAME} –password=${PASSWORD} –database=${DATABASE} -N -e “${query}”)
echo “${result}”
}
function main() {
get_one_value
}
main “$@”
ーーーーーーーーーーーーここまでOK(SQL文の表示まで。、1行表示になりました。)
次に結果を配列に入れて表示させてみる。
http://shellscript.sunone.me/array.html
を参考。
ーーーーーーーーーーーー./slt_20161204_3.shで実行
#!/bin/bash
function get_one_value() {
 DATABASE=20161129_sensor
USERNAME=raspai
PASSWORD=Aa123456
 local query=”SELECT * FROM t_sensor WHERE time_stamp IN (SELECT max(time_stamp) FROM t_sensor)”
local result
result=($(mysql -B –user=${USERNAME} –password=${PASSWORD} –database=${DATABASE} -N -e “${query}”))
echo “${result[@]}”
echo “第0は、${result[0]}”
echo “第1は、${result[1]}”
echo “第2は、${result[2]}”
echo “第3は、${result[3]}”
echo “第4は、${result[4]}”
echo “第5は、${result[5]}”
echo “第6は、${result[6]}”
echo “第7は、${result[7]}”
}
function main() {
get_one_value
}
main “$@”
ーーーーーーーーーーーーここまでOK(配列result[@]にスペース毎に入れられました!!)
 capture_2016_12_04_21_40_22_881
さあ、次は、取り込んだ配列変数を条件(水が必要かどうか?y/n)に合わせて結果を挿入(updateして書き換える)する、をやろう。。
以上