7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Sigfox Shield for ArduinoでOSSのIoTプラットフォーム「Thinger.io」を使ってみる

Posted at

Thinger.ioとは

Thinger.ioはスペインで開発されたOSSのIoTプラットフォームであり、IoT端末から送信されたデータを管理することができます。管理したデータはCSVファイルに書き出すこと、グラフとして表示することができます。今回はSigfoxのIoT端末である「Sigfox Shield for Arduino」を利用し温湿度を計測したグラフ表示します。
Thinger.io
Thingerio_グラフ.png
Thinger.ioでのグラフ表示

thingerio_csv_output.png
IoT端末からThinger.ioに送信したデータ(CSVに出力)

Sigfox Shield for Arduinoとは

Sigfox Shield for ArduinoはLPWA(Low Power Wide Area)の規格であるSigfoxの通信ができるArduino Unoに対応したシールドです。Sigfox Shield for Arduinoは温湿度センサ(BME280)と加速度センサ(MMA8451Q)が内蔵されています。またGROVEコネクタが2つ搭載されており、様々なGROVEセンサー(光度センサーなど)を利用することもできます。
Sigfox Shield for Arduino(株式会社スイッチサイエンス)

DSC_0049.JPG
Sigfox Shield for Arduino

Thinger.ioへの送信手順の概要

下記の手順にてThinger.ioで温湿度のグラフを表示します。主な流れとしましては次のようになります。

1.Sigfox Shield for Arduinoのプログラムを実行します。計測した温湿度データはSigfoxのデバイス管理をしているSigfox Backend Cloudに送信されます。

2.Sigfox Backend CloudからThinger.ioへ計測データを転送するためにThinger.ioでAccess Tokenを発行します。

3.Sigfox Backend CloudのCallback機能を利用して計測したデータをThinger.ioのサーバに転送します。

4.Thinger.ioにデータが転送されたことを確認、グラフの表示設定をします。

1.Sigfox Backend Cloudへの送信

Sigfox Shield for Arduinoの取り扱い説明書に記載されている設定方法にてSigfox Shield for Arduinoのデバイス登録、ArduinoのIDEのインストールライブラリのインストールを実施します。

本記事ではサンプルプログラムのsend-altitudeを読み込んでデータを送信します。

thingerio.png
send-altitudeの読み込み

注意事項としましてはSigfoxの通信は1日に最大140回のデータ送信しかできません。(参考:SIGFOXネットワークのご紹介)
サンプルプログラムでは10秒間に1回送信するように記載されていますのであっという間に140回を使い切ってしまいますので送信する時間間隔を変更します。例えば「delay(3600000);」(60分60秒1000ミリ秒=1時間)にすることで1時間に1回データ送信します。

ArduinoのIDEにてコンパイルと書き込みが成功するとSigfox Backend Cloudへデータが送信されます。
sigfox1.png
送信データの履歴(16進数のデータにて送信される)

2.Thinger.ioの登録、Access Tokenの発行

Thinger.ioは個人のサーバやAWSにインストールすることができますが、今回はThinger.ioが提供しているサーバを利用します。

はじめにThinger.ioにアクセスしユーザ登録します。登録ができましたらログインするとダッシュボードが表示されます。
sigfox2.png
Thinger.ioのダッシュボード

ダッシュボードに移動しましたら「Data Buckets」メニューから「Add Bucket」をクリックします。
sigfox3.png
Data Buckets

「Bucket id」「Bucket name」は分かりやすい名前、
「Bucket description」は作成するBucketの説明、
「Enabled」はON、
「Data Source」は「From Write Call」を選択し「Add Bucket」をクリックします。
sigfox4.png
Data Bucketの設定例

Data Bucketを作成しましたら「Access Tokens」メニューから「Add Token」をクリックします。
sigfox5.png
Access Tokens

「Token ID」はSigfox Backend Cloudに登録したデバイスID、
「Token Name」は分かりやすい名前、
「Enabled」はON、
「Token Permissions」の「Type」は「Bucket」、
「Token Permissions」の「Resource」はData Backetメニューで作成した名前を選択、
「Token Permissions」の「Action」は「WriteBucket」を選択し「Add Token」をクリックします。
sigfox6.png
Access Tokensの設定例

「Add Token」をクリックすると下部に「Access Token」が発行されます。Access Tokenは次のCallback機能で利用するのでコピーします。
sigfox7.png
Access Tokenの発行

3.Callback機能の設定

Sigfox Backend Cloudにログインし、「DEVICE」タブをクリックします。デバイスリストからThinger.ioのToken IDに登録したデバイスの「Device type」をクリックします。その後、「CALLBACKS」メニューから「New」をクリックします。
sigfox8.png
CALLBACKS

Callbackの種類から「Custom callback」をクリックします。
sigfox9.png
Custom callback

「Type」は「Data」「UPLINK」、
「Channel」は「URL」、
「Send duplicate」はチェックしない、
「Custom payload config」はソースコードのコメント文に記載されている「temp::int:8 humid::int:8 alt::int:8 modtemp::int:8」、
「URL pattern」は「https://api.thinger.io/v1/users/"thinger.ioのユーザーid"/buckets/"Data Bucketメニューで作成したBucket id"/data」、
「Send SNI」はチェックしない、
「Headers」の「header」は「Authorization」、
「Headers」の「value」は「Bearer "発行したAccess token"」、
「Content type」は「application/json」、
「Body」には転送するデータをJSON形式で入力します。

Bodyの入力例
{
 "device" : "{device}",
 "time" : {time},
 "temperature" : {customData#temp},
 "humidity" : {customData#humid},
 "altitude" : {customData#alt},
 "module temperature" : {customData#modtemp}
}

すべての項目を入力したら「OK」をクリックします。
sigfox10.png
Callbackの設定例

Sigfox Shield for Arduinoからデータを送信後、「DEVICE」のリストから対象の「Id」をクリックし「MESSAGES」メニューに移動します。データ送信の履歴が表示されている表の「Callbacks」の緑色の矢印のボタンをクリックし、正常にThinger.ioのサーバにデータが送信されたか確認します。
sigfox11.png
メッセージの確認

4.Thinger.ioでのデータの確認、グラフの作成

Thinger.ioを開き「Data Buckets」メニューから作成したBucket idをクリックします。Data Bucketの画面の「Bucket Explorer」の表が更新されていることを確認出来たらデータの送信が成功です。
sigfox12.png
デバイスの計測結果の表

また下部の「Bucket Data Export」では期間を指定してCSV,ARFF,JSON形式に出力することができます。
sigfox13.png
Bucket Data Export

次に「Dashbords」メニューから「Add Dashboards」をクリックします。
sigfox15.png
Dashboards

「Dashboard id」「Dashboard name」は分かりやすい名前、
「Dashboard description」は説明を入力し「Add Dashboard」をクリックします。
sigfox14.png
Dashboardsの入力例

作成したダッシュボードに移動し右側のスイッチをONにすると編集が可能になります。「Add Widget」をクリックしグラフを作成します。
sigfox16.png
登録したダッシュボード

「Wedget」タブではグラフのタイトルや種類を入力します。
「Title」はグラフのタイトル、
「Subtitle」はグラフのサブタイトル、
「background」は背景色、
「Type」はグラフの種類を入力します。
次のタブはグラフの種類によって設定する項目が変わります。
すべてのタブの設定が終わりましたら「Save」をクリックします。
sigfox17.png
sigfox18.png
sigfox19.png
Widgetの設定例

Widgetを設定しブラウザを更新すると自動的にグラフが作成されます。
sigfox20.png
自動的に作成されるグラフ

おわりに

Thinger.ioを利用することでSigfox Shield for Arduinoで計測したデータをグラフによって可視化すること、CSVに出力して計測したデータを分析することができます。Sigfox Shield for Arduinoでは温湿度と加速度センサが内蔵されているので、万葉箱として利用したり時間ごとの物体の傾きの計測として利用したりできます。さらにSigfox Shield for ArduinoにGROVEセンサーなど各種センサーを取り付けることで光度や水質を測定できる農業用のIoTデバイスにも活用できると思います。

参考文献

Thnger.io公式サイト
Thinger.io Documentation
Sigfox(京セラコミュニケーションシステム株式会社)
[Sigfox Shield for Arduino(UnaShield V2 / V2S* )取扱説明書]
(https://www.kccs.co.jp/sigfox/download/manual-sigfox-shield-for-arduino.pdf)
SIGFOXネットワークのご紹介
Sigfox Shield for Arduino(株式会社スイッチサイエンス)
unabiz-arduino
Sigfox Callback機能
Sigfox Callback - Custom Payload Config機能
Sigfoxデバイス管理 - デバイスタイプ管理
Sigfoxデバイス管理 - デバイス管理

7
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?