LoRaWANハンズオン - soracom/handson GitHub Wiki

Arduino で LoRaWAN 通信を可能にする LoRa Arduino 開発シールド AL-050Arduino UNO R3 、そして温度センサーを利用し、データ収集・蓄積サービス SORACOM Harvest でセンサーデータを可視化するハンズオンです

概要

※本ハンズオンは 30分~60分 程度を見込みます

全体構成と目次

全体像

準備するもの

  • 有効なSORACOMアカウント / 1つ
  • パソコン / 1台
    • USB-Aポートを持ち、 Arduino との接続時にOSからシリアルポートとして利用可能なこと
    • Arduino IDE (1.8.5 以上) が インストール済み であること
  • Arduino UNO R3 / 1つ
  • Arduino UNO R3 ⇔ パソコン接続用 USBケーブル / 1本
  • LoRa Arduino 開発シールド / 1式
  • 温度センサー LM61CIZ / 1つ
  • ブレッドボード / 1つ
  • ジャンパワイヤ / 3本

準備するもの一覧

受講における注意点

  1. 本ドキュメントで利用するサービスには一部有料のものを含んでおります (e.g. SORACOM Harvest, SORACOM Funnel)
    受講に伴い発生した費用は原則として受講者にご負担いただいておりますので、係る費用について確認・ご理解いただいた上での受講をお願いいたします
  2. 本ドキュメントで発生した不具合等につきましては弊社は一切責任を負いません

金額の目安

  • SORACOM Harvest: 5円/LoRaデバイス/日
    → 本ハンズオンで通常の利用であれば 2,000 回/日のリクエストに収まります
  • SORACOM Funnel: 600回のリクエスト → 約1円程度

【作業】ステップ 1: Hello Arduino !! (LEDをチカチカさせる 通称:Lチカ)

※これ以降 Arduino UNO R3 本体の事は Arduino と称します

※この段階では、まだ LoRa 開発シールドは使用しません。取り付けないでください

1. "blink" サンプルスケッチを読み込む

Arduino IDE から ファイル > スケッチ例 > 01.Basics > Blink を選んでください

ファイル > スケッチ例 > 01.Basics > Blink

すると、新しいウィンドウで Arduino 上のLEDをチカチカ点滅させる Blinkスケッチ が開きます

2. Arduino とパソコンを接続する

Arduino とパソコンを USB ケーブルで接続してください

3. コンパイル&Arduinoへの転送を行う

Blink スケッチ をコンパイル&マイコンボードへの書き込みを行います

  • コンパイルとArduinoへの書き込み

初めて Arduino を使う場合や、これまで使っていたのと違う機種の Arduino を使う場合は、書き込み時にエラーが発生します。 その場合は ツール > ボード から "Arduino/Genuino Uno" を選び、ツール > シリアルポート から "Arduino/Genuino Uno が接続されているポート" を選んでください。

4. Arduino 上のLEDを確認する

書込みが完了すると Arduino は自動的に書き込まれたスケッチ(プログラム)を起動します。 LED が1秒毎に点滅し始めれば成功です

LEDが点滅している様子

5. Arduino を停止する

Arduino を停止します。停止の方法は USB ケーブルを抜くことです

マイコン全般に言えることですが、電源OFFの際のシャットダウン処理などは、原則不要です。Raspberry Pi やノートPC等、汎用 OS が稼働するコンピュータとの大きな違いです

やってみよう; LEDを制御してみる

Blink スケッチ は LED を 1 秒 (=1,000 ミリ秒)ごとに点滅するようにコーディングされています
いろんな改造をしてみましょう

  1. LED の点滅周期を 500 ミリ秒毎に変えてみましょう
    • ヒント: delay 関数によって周期が変更できます
  2. 点灯は 2 秒、消灯は 1 秒と間隔を変えてみましょう
  3. モールス信号 "SOS" を表現してみましょう
    • ヒント: SOS => トントントン ツーツーツー トントントン
    • ヒント: トンは 150 ミリ秒、ツーは 300 ミリ秒、休止は 600 ミリ秒

トラブルシュート; コンパイル&転送時; "指定されたファイルがありません"

エラー画面

Arduino を接続しているシリアルポートがOSから認識できていません

  • Arduino を再接続をしてみてください
  • ツール > ボード から "Arduino/Genuino Uno" が選択されているか確認してください(選ばれていない場合は選んでください)
  • ツール > シリアルポート から "Arduino/Genuino Uno が接続されているポート" が選択されているか確認してください(選ばれていない場合は選んでください)

【作業】ステップ 2: 温度センサーで温度を計測する

温度センサー (LM61CIZ) を取り付け、温度を実際に計測してみましょう

※この段階では、まだ LoRa 開発シールドは使用しません。取り付けないでください

1. Arduino を停止する

Arduino を停止してください。電源を入れたまま配線を行うと感電の恐れがあります。

2. 温度センサーを取り付ける

Arduinoを停止した後、 1/Arduino 2/ブレッドボード 3/温度センサー (LM61CIZ) 4/ジャンパワイヤー それぞれを準備し、下記の通り接続してください

ブレッドボードと温度センサー (LM61CIZ) を実際につなげたところ 横から見た様子 Arduinoとの接続

接続図

ブレッドボードと温度センサー (LM61CIZ) を実際につなげたところ

注意点

  • 温度センサー (LM61CIZ) の取り付け向きに注意してください。平らになっている面がありますので、その面を活かして方向を確認してください
  • ジャンパワイヤーの色自体には意味がありません。お好きな色をお使いください
    (一般的には電源 (VCCとかVsとか書かれている) には赤を、GNDには黒を使います)
  • Arduino 上には複数 GND が存在します。どの GND に接続しても大丈夫です

3. Arduino とパソコンを接続する

Arduino とパソコンを USB ケーブルで接続してください

※この時点では、前の Blinkスケッチ が動作しているため LED が点滅します

注意点

  • この時点で温度センサー (LM61CIZ) が 「とても高熱になった」「焦げ臭い匂いがする」 場合は、USBケーブルを抜いて Arduino を停止し、再度接続を確認してください

4. スケッチを作成してマイコンボードに書き込む

ファイル > 新規ファイル を選択すると、新たなスケッチウィンドウが立ち上がります
骨組みコードが書かれていますが すべて削除したうえで 下記スケッチを張り付けて「マイコンボードに書き込む」をしてください

※スケッチの保存を聞かれた場合は handson_tmpr と保存しましょう(ファイル名は任意でかまいません)

#define SENSOR_PIN 0 // analog pin
#define PROBE_INTERVAL 5000 //msec

void setup() {
  Serial.begin(9600);
}

void loop() {
  int mV = analogRead(SENSOR_PIN);
  int dv  = map(mV, 0, 1023, 0, 5000);
  unsigned long tmpr = map(dv, 300, 1600, -30, 100); /* NOTE: Map by DataSheet */
  Serial.println(tmpr);
  delay(PROBE_INTERVAL);
}

スケッチ解説

  1. analogRead() でセンサーからの電圧を読み取る
  2. 読み取った電圧(0 ~ 1023) をセンサーの解像度(0 ~ 5000)にマッピング
  3. マッピングされた後の値を、センサー仕様に沿ってマッピング (300 が -30 ℃、1600 が 100 ℃ になるように)

5. シリアルモニタを開く

実行し始めると、先ほどまで点滅していたLEDは点灯状態となり、温度センサーでの計測を開始します
計測された温度は シリアルモニタ というところに表示されるので、それを確認します

ツール > シリアルモニタ を開くと、下記のように温度が表示されていることがわかります

シリアルモニタは Arduino 開発で最も一般的な入出力画面です

6. Arduino を停止する

シリアルモニタの様子が確認出来たら、シリアルモニタを閉じてから Arduino を停止します

トラブルシュート; Arduino を停止したら (USB ケーブルを抜いた)、パソコンの CPU が 100% になってしまう

"シリアルモニタ" のウィンドウを表示していると CPU 負荷がかかるようです

"シリアルモニタ" ウィンドウを閉じてください

【作業】ステップ 3: LoRaWANでデータ送信をしてSORACOM Harvestで可視化する

温度センサー (LM61CIZ) で計測した温度データを LoRaWAN を利用して SORACOM Harvest に送信し、可視化してみましょう

1. Arduino を停止する

Arduino を停止してください。電源を入れたまま配線を行うと感電の恐れがあります。

また、温度センサー (LM61CIZ) もすべて取り外してください。

2. LoRa開発シールドを取り付ける

2-1. Arduinoの上にLoRa開発シールドを取り付けます

LoRaシールドを取り付けた後の様子

注意点

  • LoRa開発シールドのピンは折れ曲がりやすいため、取り付け時および取り外しの際にはご注意ください(原則保証外です)

2-2. LoRaアンテナケーブルとアンテナを取り付けます

LoRaアンテナケーブルのコネクタ

LoRaアンテナ

注意点

  • LoRa アンテナケーブルのコネクタはとても小さいため、取り付けができていない場合もあります。不安がある場合はスタッフにご確認ください。またコネクタを破損しないよう、取り付け時および取り外しの際にはご注意ください(原則保証外です)

3. 温度センサーを取り付ける

LoRa 開発シールドの上に、先ほどと同じ様に温度センサー (LM61CIZ) を取り付けます

ブレッドボードと温度センサー (LM61CIZ) を実際につなげたところ 横から見た様子

LoRa開発シールドの上にセンサーを取り付けた様子

注意点

  • Arduino 上の表記と若干違うため、ピンの位置は再度確認するようにしてください。位置自体は全く同じです

この時点で、下記のようになっているはずですので、確認をしてください

全体

以上でハードウェアの準備は完了です。

4. SORACOM-LoRaWAN Arduino ライブラリをダウンロード、インストールする

LoRa 開発シールドを Arduino で利用するには、 SORACOM からリリースされているソフトウェアライブラリをスケッチに取り込む必要があります

4-1. ライブラリをダウンロードする

下記から最新版の ZIP ファイルをダウンロードしてください

SORACOM-LoRaWAN release ページ

※ "Source code (zip)" と表示されているリンクです

4-2. ライブラリをインストールする

Arduino IDE を起動してください。(すでに起動している場合は、次の手順に進んでください)

スケッチ > ライブラリをインクルード > .ZIP形式のライブラリをインストール... で、先ほどダウンロードした SORACOM-LoRaWAN-1.0.6.zip を選択してください
インクルード

5. Arduino とパソコンを接続する

Arduino とパソコンを USB ケーブルで接続してください

注意点

  • この時点で温度センサー (LM61CIZ) が 「とても高熱になった」「焦げ臭い匂いがする」 場合は、USBケーブルを抜いて Arduino を停止し、再度接続を確認してください

6. スケッチを作成してマイコンボードに書き込む

ファイル > 新規ファイル を選択すると、新たなスケッチウィンドウが立ち上がります
骨組みコードが書かれていますが すべて削除したうえで 下記スケッチを張り付けて「マイコンボードに書き込む」をしてください

※スケッチの保存を聞かれた場合は handson_tmpr_lorawan と保存しましょう(任意でかまいません)

#define SENSOR_PIN 0 //analog pin
#define PROBE_INTERVAL 5000 //msec

#include <lorawan_client.h>
LoRaWANClient lorawan;

void setup() {
  Serial.begin(9600);
  if(! lorawan.connect(true))
  {
    Serial.println(" failed to connect. Halt...");
    for(;;){};
  }
  Serial.println("\nConnected.\n");
}

void loop() {
  int mV = analogRead(SENSOR_PIN);
  int dv  = map(mV, 0, 1023, 0, 5000);
  unsigned long tmpr = map(dv, 300, 1600, -30, 100); /* NOTE: Map by DataSheet */
  Serial.println(tmpr);
  lorawan.sendData(tmpr);
  delay(PROBE_INTERVAL);
}

スケッチ解説

前回のスケッチからの差分になります

  1. setup() 内に lorawan.connect() から始まる LoRaWAN ゲートウェイ接続処理を追加
  2. loop() 内に localwan.sendData() によるデータ送信処理を追加

7. シリアルモニタを開く

書込みが完了すると Arduino 内のスケッチの実行が開始されます
シリアルモニタを見てみると、先ほど同様に温度が表示されるのと同時に LoRaWAN 通信をしている様子が確認できます

8. SORACOM Harvestの設定をする

8-1. LoRaデバイスの登録状況を確認する

ソラコムコンソールにログインし Menu > LoRa デバイス管理 をクリックします

ここにはLoRa 開発シールド購入後の登録が完了しているデバイスが表示されています

LoRaデバイス管理

表示されていない、対象のデバイスが無い場合は、まずLoRa 開発シールド購入後の登録を行ってください

8-2. LoRa グループを追加する

Menu > LoRa グループ をクリックすると、LoRaグループ一覧が表示されます。この画面で 追加 をクリックします

LoRaグループ画面

ダイアログで下記の通り設定した後、グループ作成 をクリックします

  • グループ名: lora_demo0

LoRaグループ画面

下記の通り、先ほど作成した lora_demo0 が一覧に表示されます

LoRaグループ画面

8-3. LoRa グループに SORACOM Harvest の設定を行う

LoRa グループ一覧の中から lora_demo0 をクリックします

LoRaグループ

SORACOM Air for LoRaWAN 設定 の通りになっていることを確認してください(なっていない場合は変更してください)

  • SORACOM LoRa Space を利用: 利用する (※通常は変更の必要がありません。設定の確認を行ってください)
  • LoRa ネットワークセットID: ------ (※通常は変更の必要がありません。設定の確認を行ってください)
  • バイナリパーサー設定: ON
  • フォーマット: tmpr_c:2:uint:16

同じページ内の SORACOM Harvest 設定 を下記の通りにした後 保存 をクリックしてください

  • ON

その際、下記のダイアログが出ますので OK をクリックしてください

LoRaグループ Harvest確認

※バイナリパーサーについてはAppendix: バイナリパーサーについてをご覧ください

8-4. LoRa デバイスを LoRa グループに所属させる

Menu > LoRaデバイス管理 をクリックして、LoRaデバイス一覧を表示します

先ほど作成した lora_demo0 LoRaグループに所属させたいLoRaデバイスのチェックボックスを選択した後、操作 > 所属グループ変更をクリックしてください

ダイアログにて下記のように設定した後 グループ変更 をクリックしてください

  • 新しい所属グループ: lora_demo0

グループへ所属する

9. SORACOM Harvest でデータの確認をする

LoRa デバイスを SORACOM Harvest が有効な LoRa グループに所属させた直後から、データの可視化が始まります

Menu > LoRa デバイス管理 をクリックし、データを表示させたい LoRa デバイスのチェックボックスを選択した後、操作 > データを確認 にてデータを確認することができます

9-1. 変化を確認してみる

温度センサー (LM61CIZ) を指でつまんでみると温度が変化します

SORACOM Harvestは標準では手動での表示更新であるため更新ボタンを押す、もしくは自動更新をONにしてください

10. Arduino を停止する

動作が確認出来たら Arduino を停止します

トラブルシュート; sendCmd: lorawan join otta の結果が "unseccess"

何回も unsuccess が表示される場合は LoRaWAN 通信に失敗しています(電波状況にもよりますが 0~2 回程度の失敗がありえます)

  • LoRaWAN ゲートウェイと通信できる距離・環境であるか確認してください
  • LoRa 開発シールドと LoRa アンテナの接続を確認してください

トラブルシュート; SORACOM Harvest にデータが表示されない

  • 「表示期間」が合ってないことがあります。調整してみてください

【作業】SORACOM Funnel でクラウドサービスを活用する

SORACOM FunnelSORACOM Funnel AWS IoT Adapter を利用して、LoRaデバイスからのデータをAWS IoT Coreへデータを送信してみます

※本ハンズオンは 60分~90分 程度を見込みます

対象者

  • LoRa Arduino 開発シールドを使用したハンズオンにて SORACOM Harvestでデータの可視化まで達成でき、同じものを用意できる
  • 有効なAWSアカウントを持っている
    • 本ハンズオンにおいては有料サービスを利用するため課金されることをご理解ください
    • AWSの基本的なサービスは利用可能である
      • Amazon EC2のインスタンス作成・停止などの操作が行える
      • Amazon S3のバケット作成・削除などの操作が行える
      • AWS IAMのロールやポリシーを理解し、作成・削除などの操作が行える

全体構成

1. SORACOM へ認証情報を保管する

1-1. SORACOM Webコンソール で 左上[Menu] > [セキュリティ]

soracom-menu soracom-menu-security

1-2. [認証情報ストア] > [認証情報を登録] で 認証情報入力画面を開きます

soracom-cred-store

1-3. 認証情報を登録する画面では下記の通り入力し、保存してください

  • 認証情報ID: awsiot-dataaccess
  • 概要: AWS IoT DataAccess
  • 種別: AWS 認証情報 (これを選択すると、下記IDを入力するテキストボックスが増えます)
  • AWS Access Key ID: ハンズオン運営から入手 (aws-accesskey-id)
  • AWS Secret Access Key ID: ハンズオン運営から入手 (aws-secret-accesskey-id)

自前のアカウントを使う場合には、本ページ末の Appendix: 自分の AWS アカウントを使う を参考にして IAM ユーザを作成し、アクセスキーIDとシークレットアクセスキーを用意します

soracom-cred-save

2. SORACOM Funnel 設定

2-1. SORACOM Webコンソール で 左上[Menu] > [LoRa グループ]

[追加] で LoRa グループを作成します (グループ名 lora_funnel もしくは任意でかまいません)

2-2. 先ほど作成した LoRa グループ をクリックします

2-3. SORACOM Air for LoRaWAN 設定が、下記の通りになっていることを確認してください

  • SORACOM LoRa Space を利用: 利用する (※通常は変更の必要がありません。設定の確認を行ってください)
  • LoRa ネットワークセットID: ------ (※通常は変更の必要がありません。設定の確認を行ってください)
  • バイナリパーサー設定: ON
  • フォーマット: tmpr_c:2:uint:16

2-3. SORACOM Harvest の設定では、下記の通りになっているか確認してください

SORACOM Harvest の設定は OFF にしてください

2-4. SORACOM Funnel の設定では、下記の通り入力し、保存してください

  • 転送先サービス: AWS IoT
  • 転送先URL: ハンズオン運営から入手 (endpoint-url)
  • 認証情報: awsiot-dataaccess (AWS IoT DataAccess)
  • 送信データ形式: JSON

自前のアカウントを使う場合には、転送先 URL は https://data.iot.ap-northeast-1.amazonaws.com/#{deviceId} のように指定してください

2-4. 左上[Menu] > [LoRa デバイス管理]

  • 対象の LoRa デバイスを選択 > [操作] > [所属グループ変更]
  • 先ほど作成した LoRa グループ に所属させる

3. Arduino とパソコンを接続する

Arduino とパソコンを USB ケーブルで接続してください

注意点

  • この時点で温度センサー (LM61CIZ) が 「とても高熱になった」「焦げ臭い匂いがする」 場合は、USBケーブルを抜いて Arduino を停止し、再度接続を確認してください

4. スケッチを作成してマイコンボードに書き込む

※ここで紹介するスケッチは 「LoRaWANでデータ送信をしてSORACOM Harvestで可視化する」で使用したスケッチと全く同一のものです。そのため、続けて行う場合は本手順はスキップできます

ファイル > 新規ファイル を選択すると、新たなスケッチウィンドウが立ち上がります
骨組みコードが書かれていますが すべて削除したうえで 下記スケッチを張り付けて「マイコンボードに書き込む」をしてください

※スケッチの保存を聞かれた場合は handson_tmpr_lorawan と保存しましょう(ファイル名は任意でかまいません。また、続けて行っている場合は上書きとなりますが、同一の内容ですので問題ありません)

#define SENSOR_PIN 0 //analog pin
#define PROBE_INTERVAL 5000 //msec

#include <lorawan_client.h>
LoRaWANClient lorawan;

void setup() {
  Serial.begin(9600);
  if(! lorawan.connect(true))
  {
    Serial.println(" failed to connect. Halt...");
    for(;;){};
  }
  Serial.println("\nConnected.\n");
}

void loop() {
  int mV = analogRead(SENSOR_PIN);
  int dv  = map(mV, 0, 1023, 0, 5000);
  unsigned long tmpr = map(dv, 300, 1600, -30, 100); /* NOTE: Map by DataSheet */
  Serial.println(tmpr);
  lorawan.sendData(tmpr);
  delay(PROBE_INTERVAL);
}

5. 確認

AWS IoT Core 上でのデータ着信は、運営側で行いますので、送信し始めたら運営に声をおかけください

正しく送信されていれば、運営側で表示している AWS IoT Core のデータモニターツールに表示されます

awsiot-monitor

自前の AWS アカウントを利用している場合には、本ページ末の Appendix: 自分の AWS アカウントを使う を参考にして データを確認してみましょう

6. Arduino を停止する

動作が確認出来たら Arduino を停止します

おわりに

おつかれさまでした
LoRaWAN ハンズオンは以上で終了です。最後に注意点の確認をお願いいたします

《知識》今後の費用について

SORACOM Air for LoRaWAN の費用はご利用料金 - LoRaデバイス ならびにご利用料金 - LoRaゲートウェイ をご覧ください

SORACOM Harvest

本ハンズオンで使用した SORACOM Harvest は、実際の通信の有無に限らず SORACOM Harvest が利用可能状態の LoRa デバイスの数に応じて日当たりのオプション料金が発生します
ハンズオンが終了したら必ず設定を確認し、不要な課金が発生しないようにしてください
費用については ご利用料金 - LoRaデバイス をご覧ください

以下、片付け方法です

1. LoRa グループに SORACOM Harvest の設定を行う

Menu > LoRa グループ をクリックすると、LoRa グループ一覧が表示されます
LoRa グループ一覧の中から lora_demo0 をクリックします

LoRaグループ

SORACOM Harvest 設定 を下記の通りにした後 保存 をクリックしてください
※ONの時に出た様なダイアログは出ません

  • OFF

LoRaグループ Harvest

オプション; LoRa グループを削除する

LoRa グループの SORACOM Harvest 設定が OFF になっていれば SORACOM Harvest の費用は発生しませんが、今後の不要な課金を避けるためにも削除をお勧めします

手順は以下の通り

  1. 削除対象の LoRa グループに所属しているLoRaデバイスをすべて解除する
  2. 削除対象の LoRa グループを表示し 高度な設定 から削除を実行する

SORACOM Funnel

本ハンズオンで使用した SORACOM Funnel は、発生したリクエストに応じた課金がされるサービスです
詳細は ご利用料金 - LoRaデバイス をご覧ください

クーポンの登録方法

クーポンコードの使い方をご覧ください

※その他クーポンに関する注意事項もご参照ください

【作業】LoRa デバイスを片付ける

LoRa デバイスの初期化

LoRa デバイスを初期化しておくことで、次回起動時に不用意な通信などを防ぐことができます

作業としては「空っぽのスケッチ」を書き込むことで、初期化できます

  1. Arduino IDE を起動する
  2. Arduino IDE の [ファイル] > [新規ファイル]
  3. Arduino を PC を接続する
  4. 新しく開いたウィンドウの マイコンボードに書き込むアイコン(マイコンボードに書き込む) をクリック
  5. 書き込みが完了すれば、初期化完了です

Appendix: Arduino IDE のインストールと起動方法

ダウンロードとインストール

Download the Arduino IDEから、OSにあったファイルをダウンロードし、インストールしてください

  • "Support the Arduino Software" のページで JUST DOWNLOAD を選べばダウンロードできます (もう一方のボタンは寄付のページに飛ばされますのでご注意)
  • Windowsの場合: Windows Installer をダウンロードしてください。また、インストールは管理者権限で行ってください
  • macOSの場合: インストール時に Java SE も同時にインストールを要求される場合があります。 Java SE もインストールしてください

起動方法

インストールが終われば Arduino IDEのアイコン がデスクトップやスタートメニューに現れるので、これで起動可能です

Appendix: LoRa Arduino 開発シールド (AL-050) の購入後の登録

LoRa 開発シールドの DevEUI (LoRaWAN におけるデバイス ID) はソラコムで管理※しており、ご利用者が直接管理する必要がありません
その代わりに、ご購入いただき LoRa 開発シールドがお手元に届きましたら 受け入れ をソラコムコンソールから行っていただく必要があります
※2018年3月現在

Menu > 発注 をクリックしてください。受け入れ可能な LoRa 開発シールドには 受け取り確認 が表示されているので、受け取り確認をクリックしてください

注文一覧

これで Menu > LoRa デバイス管理 に受け取り確認ができたデバイスが一覧に表示され、利用準備が整います

詳細はLoRaWAN ゲートウェイ/デバイス ハードウェアセットアップガイドをご覧ください

Appendix: バイナリパーサーについて

バイナリパーサーとは、ビット列で構成されたバイナリデータをルールに沿って JSON 化する、SORACOM 独自の機能です

バイナリ化することで 1回あたり約10バイト程度しか送信できない LoRaWAN や Sigfox の通信でも、多くの情報を詰め込むことができるようになりますが、バイナリデータはクラウド側では扱いに不便であることは否めません
本機能は、そのような LPWA デバイスとクラウドの橋渡しをする機能です

今回バイナリパーサー設定として、tmpr_c:2:uint:16 を指定していますが、これは以下のような意味となります。

  • 2 バイトめから、16 bit 分を取り、uint(±のない正の整数) として解釈し、それを "tmpr_c" というパラメータとする
    ※先頭1バイトは AL-050 の仕様により 0h00 が入るため2バイト目から取得しています

例えば複数のデータを混載して送りたい場合は

unsigned long payload = ( (unsigned long)temperature << 16 ) + (unsigned long)humidity;

としたうえで、バイナリパーサー設定を tmpr:0:uint:16 hmd::uint:16 と、複数のデータを一度に送ることができます。

またクラウド側では

{
  "tmpr": 25,
  "hum": 33
}

といった JSON で受け取ることができます

Appendix: 自分の AWS アカウントを使う

ここでは、参加者自身の AWS アカウントを用いてハンズオンを行う場合の準備について解説します。

AWS IAM ユーザを作成する

AWS IoT へデータを送信する事が出来るユーザを作成します。

  • こちらのリンクから、AWS IAM のコンソールを開きます

  • ユーザ名は、"AWSIoT"等、わかりやすい名前をつけ、APIキーが必要なので "プログラムによるアクセス" のチェックボックスを付け、次のステップへ進みます IAM01

  • 既存のポリシーを直接アタッチを選び、iotdata と検索窓に入れ、AWSIoTDataAccess にチェックボックスを入れ、次のステップに進みます IAM02

  • 確認画面で、ユーザの作成をクリックします

  • 完了画面では、アクセスキーIDと、シークレットアクセスキーをどこかに保存しておきます(CSVファイルをダウンロードしてもよい) IAM03

このアクセスキーIDとシークレットアクセスキーを使って、Funnel の設定を行ってください。

AWS IoT に送信されたデータを確認する

AWSIoT-1

  • データが受信されると、JSON形式でデータが表示されます。 AWSIoT-2

他のサービスと連携してみよう

AWS IoT の持つルールエンジンを使って、センサーデータを様々な AWS サービスへ連携することが出来ます。

連携可能なアクションの一覧は下記のようになっています。

AWSIoT-3

たとえば...

  1. S3 にセンサーデータを保存する
  2. 温度が一定以上の値だった場合に、SNS で通知を行う
  3. CloudWatch のカスタムメトリクスとしてグラフの描画や、アラート設定を行う

など、色々な組み合わせを試してみましょう。

⚠️ **GitHub.com Fallback** ⚠️