iwathiの/var/log

生活と仕事の効率化が趣味。

データを簡単に保存&グラフ化できるThingSpeakが便利!

data

家で収集したデータってどうしてますか?

もしくは

そのデータをグラフ化したい時ってどうしてますか?

 

データ集めるIoTは良いけど集めて終わり・・・

って意味ないですよね

 

 

簡単に見える化できるといいなー

データ集めたら勝手にグラフ化してくれないかなー

 

 

というズボラなあなたのための

ThingSpeakを使ったデータ収集&グラフ化する話、です

 

 

 

 

ThingSpeakとは?

f:id:iwathi3:20170211195537p:plain

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への登録

 

IoT Analytics - ThingSpeak 

 上記リンクをクリックすると下記画像の様な画面が表示されるので

「Get Started For Free」をクリック

f:id:iwathi3:20170211195537p:plain

 

クリックするとログインするかアカウントを作成するか

が聞かれますので左下の

「Create Account」をクリック

(※この際に登録したいアカウント名とパスワードを入力する必要は無し

結局次の画面で全てを入力することを求められる)

 

f:id:iwathi3:20170211192509p:plain

 

 

下記画面の項目を埋めて登録するしていく

必要な情報としては

  • メールアドレス
  • 希望のユーザー名
  • パスワード
  • 名前
  • 名前(英字)

全ての項目を埋めたら

「Continue」をクリック

f:id:iwathi3:20170211192521p:plain

 

すると下記のように

登録したメールアドレスへ確認のメールを送りましたので

アドレスのリンクをクリックして確認お願いしまーす、と表示が出る

この画面はそのままにしてメールの確認を行う

 

f:id:iwathi3:20170211200244p:plain

 

届いているメールを確認して

「Verify your email」

をクリック

 

f:id:iwathi3:20170211192601p:plain

すると下記の様に確認できましたー、と出る

 

f:id:iwathi3:20170211192609p:plain

 

そしたら先ほど開いたままの画面に戻り

「Continue」をクリックする

 

f:id:iwathi3:20170211200244p:plain

 

すると登録完了しましたよー

と出るので

「OK」

をクリック

 

f:id:iwathi3:20170211200818p:plain

 

利用規約が出てくるのでちゃんとよく読み

「Agree to Terms」

をクリック

f:id:iwathi3:20170211192633p:plain

 

 

としたところで登録は完了!

 

 

channelの作成

続いてはChannelの作成を行っていく

Channelとはグループ分けみたいなものと考えてもらえればいいと思う

例えば

リビングのデータを入れる目的であれば「リビング」

とか

畑のデータを入れる目的だったら「畑」

とか

とかとかそんな感じで

 

 

先ほどの登録を最後までやると下記の様な画面が出てくるので

「New Channel」

をクリックして作成していく

f:id:iwathi3:20170211192700p:plain

するとチャネルの設定画面が出てくるので

下記の項目を埋めていく

 

初期状態では

Name, Descriptionが空欄で

Field 1にのみチェック欄へレ点が入っている

使うデータの種類に応じてFieldを増やしていく

 

例えば収集したいデータが温度・湿度なら

Field 2のチェックボックスへレ点を入れ

Field 1 の記入欄へ 「温度」と入力

Field 2 の記入欄へ「 湿度」と入力

 

などなど、と入力

f:id:iwathi3:20170211192711p:plain

 

ここではテストのため

Nameを「Hello Wolrd.」

Descriptionを「テスト用のチャネルです。」

Field 1は「Field 1」

としておく

f:id:iwathi3:20170211192724p:plain

 

 

また、ここでは

「Make Public」へもレ点

を入れることで作成したユーザ以外でもリンクを知っている人なら

見られる状態へしておく

 

ここまで終わったら

「Save Channel」

をクリック

 

f:id:iwathi3:20170211192753p:plain

 

するとチャネルが下記のように作成され

Hello World.」が無事表示される

 

この時点で既にグラフの型は作成されており

先ほど設定したField 1の名前が縦軸へ

時間軸が横軸で設定されている

f:id:iwathi3:20170211192820p:plain

 

こちらも同じ

「Public View」をクリックすると

公開している人へはこんな感じで見えてますよ−、

という画面が出てくる

f:id:iwathi3:20170211192838p:plain

 

ここまででチャネルの作成と設定は終了!

 

API keyの確認

ここからやっとデータを送信するための準備に入っていく

タブの右から2つめの

API Keys」

をクリックすると下記のような画面が出てくる

 

ここのWrite API KeyのKeyがデータを送る際に使うものとなるので

確認しておく

 

f:id:iwathi3:20170211194042p:plain

 

HTTPリクエスト作成&送信

ここでやっとこさデータを送っていく

 

やることとしては

さきほどAPI KeyをHTTPリクエストのヘッダーへ入れて

送りたいデータを送ってやるだけ

 

POSTでもGETでもデータを送信できる模様

ただGETの方が楽なのでGETリクエストでテスト

 

タブの「Data Import/Export」

をクリックするとAPI Requests欄のサンプルコード(赤線部分)

があるのでこれをコピーする

f:id:iwathi3:20170211210204p:plain

 

コピーしたコードがこちら

GET https://api.thingspeak.com/update?api_key=*********&field1=0

(*****部分が自分のAPIコードとなる)

 

 

このサンプルコードのfield1=0部分を1にする

GET https://api.thingspeak.com/update?api_key=*********&field1=1

 

 

そうしたら頭のGETを取り除きコピーをして

ブラウザのURL欄へ貼り付けしアクセスをすると

「1」

とだけのHPが表示されるはず

そうすればテストは成功

 

今回はブラウザでやったけども

GETリクエストは各言語で簡単に送れると思うので

APIを通して簡単にデータを送れる

 

グラフ化の確認

 上記HTTPリクエストを送った結果がこちら

そりゃそうなんだけどもグラフとは1つでは点なのでグラフとは言えない感じ

f:id:iwathi3:20170211194147p:plain

更に送る

GET https://api.thingspeak.com/update?api_key=*********&field1=2

 

f:id:iwathi3:20170211194155p:plain

更に

GET https://api.thingspeak.com/update?api_key=*********&field1=3

f:id:iwathi3:20170211194202p:plain

更に更に

GET https://api.thingspeak.com/update?api_key=*********&field1=4

f:id:iwathi3:20170211194210p:plain

更に更に更に

GET https://api.thingspeak.com/update?api_key=*********&field1=5

こんな感じでグラフ化がどんどんされいく

f:id:iwathi3:20170211194217p:plain

 

グラフにカーソルを持っていくと

その点の情報も表示される

f:id:iwathi3:20170211194223p:plain

 

 

 

というような感じでデータをグラフ化してくれるので便利

 

またThingSpeakのExamplesのところに色々とサンプルがあるので

見ながら色々とできそう

ArduinoのExamplesとかもあったハズ

 

あとは

CPUの温度とかメモリ使用率とかを逐次送ってサーバ監視

とかにも使ってる人もいるみたい

 

 

 

実際に作成されたグラフが下記のリンクで公開中

(※テストしてたらグラフの形が気持ち悪くなったので一度データを消して

再度データを入れたので上記グラフとは時間・形は異なる)

 

データを確認する

送ったデータはThingSpeakのクラウド上に保管されているので

取り出したい時はデータを取り出せる

 

「Data Import/Export」

というタブの左下のExport

「Download」

というボタンを押すことで

チャネルのデータがCSVファイルで出力される

f:id:iwathi3:20170211195207p:plain

 

 

実際に引き出したデータがこちら

(※タイムゾーンUTCの時間になっているので日本時間だと+9時間)

f:id:iwathi3:20170211195324p:plain

 

こんな感じでThingSpeakを使うことで簡単に

データの保管&グラフ化ができるので

 

Arduinoでのデータを入れたり

ESP8266からのデータを入れたりと

色々していきたいと思う

 

 

 

 

ということで

「データを簡単に保存&グラフ化できるThingSpeakが便利!」

のvar/logへの吐き出し終了!