データを簡単に保存&グラフ化できるThingSpeakが便利!
家で収集したデータってどうしてますか?
もしくは
そのデータをグラフ化したい時ってどうしてますか?
データ集めるIoTは良いけど集めて終わり・・・
って意味ないですよね
簡単に見える化できるといいなー
データ集めたら勝手にグラフ化してくれないかなー
というズボラなあなたのための
ThingSpeakを使ったデータ収集&グラフ化する話、です
ThingSpeakとは?
MathWorks社が提供するIoT向けプラットフォーム
データ格納・可視化&分析・アクションをクラウド上で実施できるとのこと
何が便利なの?
REST APIが提供されていて自身のAPI Keyに向けて
データをPOSTリクエストで送ってあげると勝手にグラフ化してくれる
更に収集したデータをトリガーにした機能も使えて
「収集したデータが一定の閾値を越えたらツイートをする」
といったことができるとのこと
でもお高いんでしょう?
無料で使えるが制限有り
制限としては以下の通り
・メッセージインターバル15秒
・300万メッセージ/年
・商用利用は禁止
つまり
1度データを送ったら15秒間はデータを受け取れないよ
年間のメッセージは300万以下だよ
それを使って商用利用はしちゃダメだよ
ということらしい、がそんなにヘビーユーズする予定はないので問題なし
普通の人なら特別気にする必要はないと思う
一日辺りで考えると8,217以下の数のデータならば格納可能らしい
(でも15秒おきのインターバルだとそもそもMAXで5,760メッセージか)
毎秒データを送りたいヘビーユーザは9,490円〜
もっとヘビーに使いたい人には有料プランがあって
・メッセージインターバル1秒
・3300万メッセージ/年
・商業利用も化(Homeプランはダメ)
といった制限が解除されるとのこと
HOMEプラン
商用利用はできないが年間3300万メッセージを格納可能
公式HPによると9,480円から使える模様
どうやって使うの?
ThingSpeakへの登録
上記リンクをクリックすると下記画像の様な画面が表示されるので
「Get Started For Free」をクリック
クリックするとログインするかアカウントを作成するか
が聞かれますので左下の
「Create Account」をクリック
(※この際に登録したいアカウント名とパスワードを入力する必要は無し
結局次の画面で全てを入力することを求められる)
下記画面の項目を埋めて登録するしていく
必要な情報としては
- メールアドレス
- 希望のユーザー名
- パスワード
- 名前
- 名前(英字)
全ての項目を埋めたら
「Continue」をクリック
すると下記のように
登録したメールアドレスへ確認のメールを送りましたので
アドレスのリンクをクリックして確認お願いしまーす、と表示が出る
この画面はそのままにしてメールの確認を行う
届いているメールを確認して
「Verify your email」
をクリック
すると下記の様に確認できましたー、と出る
そしたら先ほど開いたままの画面に戻り
「Continue」をクリックする
すると登録完了しましたよー
と出るので
「OK」
をクリック
利用規約が出てくるのでちゃんとよく読み
「Agree to Terms」
をクリック
としたところで登録は完了!
channelの作成
続いてはChannelの作成を行っていく
Channelとはグループ分けみたいなものと考えてもらえればいいと思う
例えば
リビングのデータを入れる目的であれば「リビング」
とか
畑のデータを入れる目的だったら「畑」
とか
とかとかそんな感じで
先ほどの登録を最後までやると下記の様な画面が出てくるので
「New Channel」
をクリックして作成していく
するとチャネルの設定画面が出てくるので
下記の項目を埋めていく
初期状態では
Name, Descriptionが空欄で
Field 1にのみチェック欄へレ点が入っている
使うデータの種類に応じてFieldを増やしていく
例えば収集したいデータが温度・湿度なら
Field 2のチェックボックスへレ点を入れ
Field 1 の記入欄へ 「温度」と入力
Field 2 の記入欄へ「 湿度」と入力
などなど、と入力
ここではテストのため
Nameを「Hello Wolrd.」
Descriptionを「テスト用のチャネルです。」
Field 1は「Field 1」
としておく
また、ここでは
「Make Public」へもレ点
を入れることで作成したユーザ以外でもリンクを知っている人なら
見られる状態へしておく
ここまで終わったら
「Save Channel」
をクリック
するとチャネルが下記のように作成され
「Hello World.」が無事表示される
この時点で既にグラフの型は作成されており
先ほど設定したField 1の名前が縦軸へ
時間軸が横軸で設定されている
こちらも同じ
「Public View」をクリックすると
公開している人へはこんな感じで見えてますよ−、
という画面が出てくる
ここまででチャネルの作成と設定は終了!
API keyの確認
ここからやっとデータを送信するための準備に入っていく
タブの右から2つめの
「API Keys」
をクリックすると下記のような画面が出てくる
ここのWrite API KeyのKeyがデータを送る際に使うものとなるので
確認しておく
HTTPリクエスト作成&送信
ここでやっとこさデータを送っていく
やることとしては
さきほどAPI KeyをHTTPリクエストのヘッダーへ入れて
送りたいデータを送ってやるだけ
POSTでもGETでもデータを送信できる模様
ただGETの方が楽なのでGETリクエストでテスト
タブの「Data Import/Export」
をクリックするとAPI Requests欄のサンプルコード(赤線部分)
があるのでこれをコピーする
コピーしたコードがこちら
(*****部分が自分のAPIコードとなる)
このサンプルコードのfield1=0部分を1にする
そうしたら頭のGETを取り除きコピーをして
ブラウザのURL欄へ貼り付けしアクセスをすると
「1」
とだけのHPが表示されるはず
そうすればテストは成功
今回はブラウザでやったけども
GETリクエストは各言語で簡単に送れると思うので
APIを通して簡単にデータを送れる
グラフ化の確認
上記HTTPリクエストを送った結果がこちら
そりゃそうなんだけどもグラフとは1つでは点なのでグラフとは言えない感じ
更に送る
更に
更に更に
更に更に更に
こんな感じでグラフ化がどんどんされいく
グラフにカーソルを持っていくと
その点の情報も表示される
というような感じでデータをグラフ化してくれるので便利
またThingSpeakのExamplesのところに色々とサンプルがあるので
見ながら色々とできそう
ArduinoのExamplesとかもあったハズ
あとは
CPUの温度とかメモリ使用率とかを逐次送ってサーバ監視
とかにも使ってる人もいるみたい
実際に作成されたグラフが下記のリンクで公開中
(※テストしてたらグラフの形が気持ち悪くなったので一度データを消して
再度データを入れたので上記グラフとは時間・形は異なる)
データを確認する
送ったデータはThingSpeakのクラウド上に保管されているので
取り出したい時はデータを取り出せる
「Data Import/Export」
というタブの左下のExport
「Download」
というボタンを押すことで
チャネルのデータがCSVファイルで出力される
実際に引き出したデータがこちら
(※タイムゾーンがUTCの時間になっているので日本時間だと+9時間)
こんな感じでThingSpeakを使うことで簡単に
データの保管&グラフ化ができるので
Arduinoでのデータを入れたり
ESP8266からのデータを入れたりと
色々していきたいと思う
ということで
「データを簡単に保存&グラフ化できるThingSpeakが便利!」
のvar/logへの吐き出し終了!