前回、ESP-WROOM-02からWebサーバーに温湿度データを取り込むことが出来ました。
今回は、取り込んだデータをグラフに表示します。
※11/16追記
プログラム部分はスマホでは正しく表示されません。
プログラムをご利用の方はPCでご確認下さい。m(_ _ )m
index.html
今回はhtmlとJavaScriptを使います。
プログラムは全部index.htmlに書きました。笑
<!DOCTYPE HTML> <title>温湿度管理</title> </head> </body>
|
基本はこれだけ
datepickerを使う
IEでdateタグが使えないけれど、日付指定をカレンダークリックで行いたいのでdatepickerを使います。
日付データはグローバル変数に入れます。
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js"></script>
var selDate;
|
日付がクリックされたときテキストボックスに表示する表示形式を指定しています。csvファイル名に合わせておけばそのまま利用できます。
$(function(){ |
日付テキストボックスの日付が変わったときに呼び出される関数です。
function dateChange(){ |
ブラウザが開かれたときに実行される関数です。
今日の日付を日付テキストボックスに登録し、csvファイルを読みます。
setIntervalで1分毎にcsvファイルを読むようにしています。
window.onload = function(){
|
csvファイル読み込み
データをグラフに渡すための配列をグローバル変数にしています。
ここでは、csvArray[i][]のデータ数は指定しません。
グローバル配列を初期化してXMLHttpRequestでサーバー上のcsvファイルを読み込みます。
読み込みが終わったら、配列に登録しグラフを描画します。
csvファイルはindex.htmlと同じフォルダにあります。
var csvArray = new Array(3);
function getCSVFile() { function createXMLHttpRequest() {
|
csvデータをグローバル配列に登録しています。
大量のデータを扱うときは特に配列の初期化を行っておきましょう。
function createArray(csvData) {
|
Chart.jsを使う
Chart.jsを使って1分毎にグラフを更新します。
Chart.jsはブラウザ画面を拡大・縮小すると勝手に拡大・縮小してくれるので便利です。
グラフを描画する関数です。配列がそのままデータとして利用できます。
<script src=https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.1.4/Chart.bundle.js> </script>
function draw(){ // grid line settings
|
Y軸の設定yAxisで軸見出しscaleLabelを付けています。これ、ネット上を探してもほとんど出てこないので貴重です。 笑
scaleLabel:{ display:true, labelString:"Tempture(℃)", fontSize:10 }
|
Chart.jsはCanvasを使っているのでcanvasのスタイルです。
<style> canvas { -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; } </style>
|
bodyの中は2行だけ
canvasを表示するエリアと、日付を選ぶテキストボックスだけです。
<canvas id="myChart" width="400" height="100"></canvas>
|
一連のプログラムを掲載しておきます。
<!DOCTYPE HTML> //グローバル変数 $(function(){ function getCSVFile() { function createXMLHttpRequest() { function createArray(csvData) { function draw(){ // grid line settings window.onload = function(){
|
以上で今回やりたかった『AM2302の温湿度データをWifiで飛ばしてローカルPCでグラフ表示する』記事が完成です。
後は、今ブレッドボードにある部品を基板に移して箱に詰めれば終了です。そのうち「PICを試してみる」のページに写真アップします。笑
この温湿度データをクラウドに飛ばして解析して何かアクションを起こせばIoTって言うのでしょうね。
お決まりですが、
今回の連載の著作権は放棄しておりません。
ご利用頂くのは自由ですが、このサイトにリンクを張って頂けると管理人が喜びます。
この連載を通してご利用頂いた結果不利益が生じても私は知りません。笑
では、ご利用下さい。(。・ω・)ノ゙