INTEGRATION CASE

実装例

Wio LTEとAWSを連携させ、IoTサービスを開発する


概要

このハンズオン記事では、デバイスとして Grove IoT スターターキット for SORACOM を用いて、SORACOM Beam を介した AWS IoT Core との双方向通信を実現します。

architecture_diagram_all.png

ボード裏面のスロットに装着した SORACOM Air SIM が行うキャリア閉域網のセルラー通信で、デバイスが安全にクラウドサービスへと繋がります。そこに AWS IoT Core のサービスが組み合わさることで、デバイスで更なるアクションが起こせるようになります。例えばブザーを鳴らしたり、SMS やメールで通知させたり、DynamoDB にデータを格納したり……と、アーキテクチャの広がりが体感できる構成となっています。
このハンズオンで、デバイス側とクラウド側それぞれの仕組みをサクッと理解して、ぜひご自分でもお好みの IoT システムを作ってみてくださいね!

WioLTE.png

謝辞

当記事は SORACOM 社の許可の下、SORACOM 公式 Git Hub ページ掲載の「Wio LTE ハンズオン記事」を参考および引用させていただきました。ありがとうございます。

Wio LTE ハンズオン記事:
https://github.com/soracom/handson/wiki/Wio-LTE-%E3%83%8F%E3%83%B3%E3%82%BA%E3%82%AA%E3%83%B3

必要に応じて、こちらで説明されるハンズオン手順項目へのリンクを載せます。適宜確認しつつ進めてください。

ハンズオンを行う前にご確認ください

実施における注意点(費用の発生について)

当ハンズオンは有料サービスを利用します。下記利用料金説明をあらかじめご確認ください。発生した料金は受講者負担となりますので、ご理解の上で実施ください。

SORACOMサービス各種

AWSサービス各種

接続・メッセージング・ルールエンジンの利用それぞれに料金がかかります

  • 接続: 0.120 USD / 接続時間 100 万分 (無料枠: 接続時間 2,250,000 分

  • メッセージング: 1.50 USD / 10 億件 (無料枠: メッセージ 500,000 件

  • ルールエンジン: (トリガールールと実行アクションそれぞれに料金がかかります)0.225 USD / 100 万件 (無料枠: トリガールール・実行アクション 各 250,000 件

  • Amazon SNS(東京リージョンの場合)

  • email / email-JSON: 2 ドル / 100,000 件 (無料枠: email / email-JSON: 1,000件

  • SMS: 100 件まで無料(それ以上は申請が必要です)

  • DynamoDB

開発環境の準備

SORACOM 社による下記リンク先記事をご参照ください。

macOS 編

Windows 編

補足: Virtual COM Port ドライバのインストール手順について

上記リンク先に詳細な手順と動画による解説がありますので、インストールの際にご参照ください。

SORACOMアカウント作成

SORACOM アカウントの作成の手順に沿って作成してください。
有効なクレジットカードとメールアドレスが必要です。

SIM の登録

以下の手順に沿って登録してください。

  • 購入したSIMカードを用意する

SIMcard.png

  • メニュー左上の [SIM 登録] をクリックする

SIM_Resist_v0.png

下図を参考に、下記の3つの作業を行ってください。

  • SIMカードの裏面に記載されているIMSIとパスコードを入力する

  • [技術基準適合証明等について確認しました] にチェックを入れる

  • [登録] をクリックする

SIM_Resist_v1.png

  • [終了して元の画面に戻る] をクリックする

SIM_Resist_v2.png

  • 登録したSIMを選択(チェックボックスをクリック)し、[使用開始] をクリックする

SIM_Resist_v3.png

用意するもの

  • パソコン

  • Wi-Fi 接続可能

  • USB Type-A ポート搭載(電力供給が 1A 以上であること)

  • OS: mac OS(10.11 El Capitan 以上) もしくはWindows(7 以上)

  • ブラウザ: Google Chrome

  • PC に対する管理者権限を持っている(必要なソフトウェアインストールのため)

  • ブラウザでのアクセス制限(HTTP プロキシ等)がかかっていない(必要なソフトウェアインストールのため)

  • 有効な AWS アカウント(東京リージョンを使用)

  • 有効な SORACOM アカウント

  • SORACOM アカウントに登録済みの SORACOM Air SIM(nano サイズ)

  • (ステップ 5 を行う場合)IFTTT アカウント

  • (ステップ 5 を行う場合)Gmail アカウント

  • (ステップ 5 を行う場合)LINE アカウント

  • Wio LTE(本体、アンテナ 2本、 電源兼シリアルコンソール用 microUSB ケーブル)/ 1式

  • Grove 超音波距離センサ

  • Grove ブザー

  • Grove コネクタケーブル / 2本

ハンズオン本編

手順

ハンズオンは大きく5つのステップに分けて進めます(トラブルシュートは対応する各説明の最後にあります)。

  • ステップ 1: LED 点灯

  • ステップ 2: 超音波距離センサと対象物との距離を SORACOM Harvest で可視化

  • ステップ 3: ステップ 2 で取得したデータを SORACOM Beam で MQTT 通信し AWS IoT Core に転送

  • ステップ 4: AWS IoT Core のルールエンジンを使って双方向通信

  • ステップ 5: AWS IoT Core のルールエンジンを使って AWS ・ AWS 外のサービスと連携

【作業】ステップ 1: LED 点灯

architecture_diagram_step1.png

まずは、 Wio LTE 内蔵の LED と Arduino IDE のスケッチ例を利用して、LED を光らせてみます。これを通じて、“ボードへのスケッチ書き込み → プログラムの動作確認”という、今回のハンズオンで繰り返し行う基本操作の流れを確認します。

1-0. Wio LTE の電源を OFF にする

Wio LTE の microUSB ケーブルを抜き、電源を OFF にしてください。
いきなり抜いて OK です。また、すでに OFF になっている場合は次に進んでください

1-1. スケッチを用意する

1-1-1. Arduino IDE を起動する

開発環境の準備でインストールしておいた Arduino IDE を起動してください。

  • Windows の場合:スタートメニュー等から Arduino を選択する

  • macOS の場合:アプリケーションフォルダ等の中から Arduino を選択する

1-1-2. Arduino IDE メニューの[ツール] > [ボード: “Arduino/Genuino Uno”] > [Wio Tracker LTE]

1-2.png

Wio LTE をボードとして選択します。

1-1-3. Arduino IDE メニューの[ファイル] > [スケッチ例] > [Wio LTE for Arduino] > [basic] > [LedSetRGB]

Lチカするプログラムが書かれたスケッチ例を開きます。

1-3.png

[LedSetRGB]をクリックすると、新しいスケッチのウィンドウが立ち上がります。展開の途中でクリックすると立ち上がりませんので、ご注意ください。

1-1-4. Wio LTE と PC を接続して DFU モードにする

DFU モードに切り替える方法や現在のモードを確認する方法が分からない場合は、「開発環境の準備」引用ページ内項目「【作業】 Wio LTE の“通常モード”と“DFU モード”」をご確認ください。

1-1-5. 新しく開いたウィンドウの[マイコンボードに書き込む](→)をクリックする

1-1-5.png

1-1-6. Wio LTE にスケッチが書き込めていることを確認する

下図のように Download が始まった後、

1-6.png

File downloaded successfully

と表示されていれば成功です。

1-6-2.png

1-2. 確認

WioLTE に流し込んだプログラムを実行させるために、WioLTE の RST ボタンを押して、“DFU モード”から“通常モード”に戻します。LED がカラフルに点灯していれば成功です。

Lchika.gif

1-3. Wio LTE の動作を止める

Wio LTE の電源を OFF(= microUSB ケーブルを抜く)にしてください。

トラブルシュート: [マイコンボードに書き込む]を実行するとポートのエラーが表示された場合

  • 原因: ポートを適切に指定できていない
  • 解決法: [ツール] > [シリアルポート] > [/dev/cu.usbmodem xxxxx]をクリックするを再度行ってください

トラブルシュート: [マイコンボードに書き込む]を実行するとコンパイルのエラーが表示された場合

具体的には、以下のようなエラー文が表示された場合:

exit status 1
ボードArduino/Genuino Unoに対するコンパイル時にエラーが発生しました。
  • 原因: “ボード” が “Wio Tracker LTE” になっていません

  • 解決法: メニューの [ツール] > [ボード: xxxxx] から Wio Tracker LTE を選択してください

トラブルシュート: [マイコンボードに書き込む]を実行すると「DFU可能なUSBデバイスがない」と出た場合

具体的には、以下のようなエラー文が表示された場合:

No DFU capable USB device available
  • 原因: Wio LTE が通常モードの状態で書き込もうとした

  • 解決法: Wio LTE を DFU モードにしてから、再度[マイコンボードに書き込む]を実行してください

トラブルシュート: [マイコンボードに書き込む]を実行するとJavaのエラー文が出た場合

具体的には、以下のようなエラー文が表示された場合:

java.io.IOException: jssc.SerialPortException: ....
... (省略) ...
... 4 more もしくは ... 6 more
  • 原因: おもに Windows でシリアルモニタ―を表示した後に発生します。シリアルポートの解放に失敗しています

  • 解決法: Arduino IDE を終了し、再度立ち上げてください。また Arduino IDE のシリアルモニターは使わずに TeraTerm を使うことで回避しやすくなります

トラブルシュート: [マイコンボードに書き込む]を実行すると「ライブラリがロードされていない」と出た場合

具体的には、以下のようなエラー文が表示された場合:

dyld: Library not loaded: /opt/local/lib/libusb-1.0.0.dylib
Referenced from: /Users/user1/Library/Arduino15/packages/Seeeduino/tools/stm32_dfu_upload_tool/1.0.0/macosx/dfu-util/dfu-util
Reason: image not found
/Users/user1/Library/Arduino15/packages/Seeeduino/tools/stm32_dfu_upload_tool/1.0.0/macosx/dfu_upload: line 5: 15851 Abort trap: 6 $(dirname $0)/dfu-util/dfu-util -d $2 -a $1 -D $3 -s $4 -R
DFU end

【作業】ステップ 2: 超音波距離センサと対象物との距離を SORACOM Harvest で可視化

SORACOM Beam での双方向通信を行う前に、まずは超音波距離センサのデータを SORACOM Harvest で可視化してみましょう。

image.png

2-0. Wio LTE の電源を OFF にする

Wio LTE の microUSB ケーブルを抜き、電源を OFF にしてください。
いきなり抜いて OK です。また、すでに OFF になっている場合は次に進んでください。

2-1. Wio LTE に SIM を取り付ける

Wio LTE に SIM(nanoサイズ)を取り付けます。
SIMを正しい場所に、正しい向きで差し込まないとデータが送信されないので注意してください

image.png

SIM を取り出す場合は、上図でも書かれている通り、ツマミを引っ張りすぎないようご注意ください。金具が外れる恐れがあります。

2-2. Wio LTE にアンテナと超音波距離センサを取り付ける

アンテナは必ず2本取り付けてください。また超音波距離センサは、Wio LTE の D38 に取り付けてください。
今後センサを取り付ける場合は、ボードにある表記を確認した後、行ってください。
2-2wiolte.png

取り付けると以下の図のようになります↓
2-2wiolte.png

2-3. SORACOM Harvest の設定をする

2-3-1. SORACOM Webコンソール の 左上[Menu] > [SIM グループ]

image.png

image.png

2-3-2. [追加] で SIM グループを作成する

image.png

image.png
グループ名は任意のものでかまいません。この手順書ではwioHandsonGroupとします

2-3-3. 作成した[SIM グループ]をクリックし、 SORACOM Harvest の設定を[ON]にして[保存]

image.png

image.png

2-3-4. 左上[Menu] > [SIM 管理]

image.png

image.png

  • Wio LTE に取り付けている SIM を選択 > [操作] > [所属グループ変更]

image.png

  • ステップ 2-3-2.で作成した SIM グループ に所属させます

2-3-4-42.png

image.png
Wio LTE に取り付けている SIM の[グループ]が、先ほど作った SIM グループ名になっていることを確認します。

2-4. スケッチを作成する

2-4-1. Arduino IDE を起動する

2-4-2. メニューの [ツール] で [ボード: “Wio Tracker LTE”] と表示されていることを確認する

なっていない場合、一覧から “Wio Tracker LTE” を選んでください。

2-4-3. Arduino IDE の [ファイル] > [新規ファイル]

2-4-4. スケッチにコードを貼り付ける

立ち上がったファイルのスケッチを全て消し、以下のコードを貼り付けてください。

#include <WioLTEforArduino.h>
// https://github.com/Seeed-Studio/Grove_Ultrasonic_Ranger
#include <Ultrasonic.h>
#include <stdio.h>

#define INTERVAL (1000)
#define RECEIVE_TIMEOUT (10000)

#define ULTRASONIC_PIN (WIOLTE_D38)
Ultrasonic UltrasonicRanger(ULTRASONIC_PIN);

WioLTE Wio;

// 初期化処理
// 起動時に一度だけ実行される
void setup() {
  delay(200);

  SerialUSB.println("");
  SerialUSB.println("--- START ---------------------------------------------------");

  SerialUSB.println("### I/O Initialize.");
  Wio.Init();

  SerialUSB.println("### Power supply ON.");
  Wio.PowerSupplyLTE(true);
  delay(500);

  SerialUSB.println("### Turn on or reset.");
  if (!Wio.TurnOnOrReset()) {
    SerialUSB.println("### ERROR! ###");
    return;
  }

  // soracomへの接続確認
  SerialUSB.println("### Connecting to \"soracom.io\".");
  if (!Wio.Activate("soracom.io", "sora", "sora")) {
    SerialUSB.println("### ERROR! ###");
    return;
  }

SerialUSB.println("### Setup completed.");
}

// 無限ループ
void loop() {
  char data[100];
  // 距離を算出するように
  long distance;
  distance = UltrasonicRanger.MeasureInCentimeters();

  SerialUSB.println("### Open.");
  // harvestとの接続確認を行う
  int connectId;
  connectId = Wio.SocketOpen("harvest.soracom.io", 8514, WIOLTE_UDP);

  // harvestに適切に接続できない場合
  if (connectId < 0) {
    SerialUSB.println("### ERROR! ###");
    goto err;
  }

  SerialUSB.println("### Send.");
  // 表示をdistanceに変更
  sprintf(data, "{\"distance\":%ld}", distance);
  SerialUSB.print("Send:");
  SerialUSB.print(data);
  SerialUSB.println("");

  // 距離データをharvestに送信
  if (!Wio.SocketSend(connectId, data)) {
    SerialUSB.println("### ERROR! ###");
  goto err_close;
  }

  SerialUSB.println("### Receive.");

  // harvestのレスポンスコードを受信
  int length;
  length = Wio.SocketReceive(connectId, data, sizeof (data), RECEIVE_TIMEOUT);
  if (length < 0) {
    SerialUSB.println("### ERROR! ###"); goto err_close; 
  }
  if (length == 0) {
    SerialUSB.println("### RECEIVE TIMEOUT! ###");
    goto err_close;
  }
  SerialUSB.print("Receive:");
  SerialUSB.print(data);
  SerialUSB.println(""); 

err_close:
 SerialUSB.println("### Close.");
 if (!Wio.SocketClose(connectId)) {
   SerialUSB.println("### ERROR! ###");
   goto err;
 }

err:
 delay(INTERVAL); 
} 

2-4-5. ライブラリのダウンロード

ライブラリを Seeed 社の GitHub リポジトリからダウンロードします↓

2-4-6. Arduino IDE の[スケッチ] > [ライブラリをインクルード] > [.ZIP 形式のライブラリをインストール… ]

ステップ 2-4-5. でダウンロードした zip ファイルをインストールしてください。

image.png

image.png

2-4-7. Wio LTE と PC を接続して DFU モードにする

2-4-8. 新しく開いたウィンドウの[マイコンボードに書き込む](→)をクリックする

新規作成したスケッチを書き込む際、保存するかどうかを聞かれるので[キャンセル]を選択してください
1-1-5.png

2-4-9. 書き込みが完了したら、Wio LTE を通常モードにする(RST ボタンを押せば通常モードになります)

通常モードで起動次第、SORACOM Harvest へデータを送信し始めます(電源投入から送信開始までは 20 ~ 25 秒程度かかります)。

2-5. 各コンソール上でデータの取得を確認

データを取得できているのか、まずはシリアルコンソール上で確認します。
Tera Term を使用したシリアルコンソールや Arduino IDE シリアルコンソールの操作方法がわからない場合は、それぞれ下記補足内容をご確認ください

Tera Term を使用したシリアルコンソールの表示方法(Windows をご使用の方)

[ファイル] > [新しい接続]

teraterm使い方1.png

[シリアル] > [STMicroelectronics Virtual COM Port] > [OK]

image.png

データが表示される

teraterm使い方3.png

Arduino IDE を使用したシリアルコンソール表示方法(Mac OS をご使用の方)

[ツール] > [シリアルポート] > [/dev/cu.usbmodem xxxxx]

  • [/dev/cu.usbmodem xxxxx]の”xxxxx”には環境によって異なる数字が入ります

  • [/dev/cu.usbmodem xxxxx]は Wio LTE が PC と繋がっており、かつ通常モードの状態でないと表示されません

image.png

右上の[シリアルモニタ]をクリックする

image.png

センサからデータが取得できている場合、以下の図のように、距離センサの取得した値が出力されます(されない場合は、章末のトラブルシュートをお試しください)。センサの前で手の平の位置を前後させて、距離の数値が変化することを確認してください。

2f42fa17-fa71-5963-1572-18ff4e3ff43c.png

補足: シリアルモニタについて

シリアルモニタは、一度 SORACOM サービスとの接続に成功すると、その後接続が切れてしまっていても、Wio LTE から取得したデータが表示され続けます。接続不良が疑われる場合は、Wio LTE を再起動し、シリアルモニタも開き直してください

SORACOM Harvest で確認

次に、データの取得を SORACOM コンソール上で確認します。

  • SORACOM コンソールに移動し、対象の SIM にチェックを入れ、[操作] > [データを確認]

58b62e05-0978-9ad0-995d-ab1d0d0bb91e.png

自分の SIM の IMSI が選択されているかを確認後、[自動更新]を ON にしてください。距離(distance)の値が表示されるようになります。

checking-harvest-data.png

2-6. Wio LTE の動作を止める

  • Wio LTE を DFU モードに切り替え、 [ファイル] > [新規ファイル] から空のスケッチを作成し Wio LTE に書き込んでください(SORACOM Harvest の設定を OFF にした後、Harvest に書き込みに行かないようにする為です)

  • Wio LTE の電源を OFF(= microUSB ケーブルを抜く)にしてください

2-7. ステップ 2-3-3. で ON にした SORACOM Harvest の設定を OFF にする

次のステップでは SORACOM Beam サービスを使いますので、Harvest を切ります。

2-7-1. SORACOM Webコンソール の 左上[Menu] > [SIM グループ]

image.png

image.png

2-7-2. ステップ 2-3-2. で作成した SIM グループをクリックし、SORACOM Harvest の設定を[OFF]にして[保存]

image.png

SIM_グループ詳細_-_SORACOM_ユーザーコンソール.png

トラブルシュート: Wio LTE を通常モードで動かして 1 分経ってもデータが表示されない場合

具体的には、以下の画像のような状態で長時間待機している場合:
具体的には、以下の画像のような状態で長時間待機している場合.png

  • 原因: 電波状況などによりセルラー通信に失敗している

  • 解決法: RST ボタンを押して Wio LTE を再起動してください。もしくは電波状況の良い場所に移動してください

トラブルシュート: Tera Term でシリアルコンソールを表示できない場合

再度Windows 編を確認頂き、手順に間違いがないことを確認してください。
それでも、シリアルコンソールを表示できない場合は、Tera Termをアンインストールし、再度インストールしてください。
もし、上記の方法でもシリアルコンソールを表示できない場合は、Tera Term の代わりに PuTTY の使用を検討してください。

トラブルシュート: それ以外の場合

SORACOM のログを確認してください。例えば以下のようなエラーが出ている場合は、Harvest の設定が OFF になっていないかを確認してください。

2642b8ab-78a9-2a39-e47b-0f9fea400511.png

2642b8ab-78a9-2a39-e47b-0f9fea400511.png

【作業】ステップ 3: ステップ 2 で取得したデータを SORACOM Beam で MQTT 通信し AWS IoT Core に転送

architecture_diagram_step3.png

MQTT という軽量プロトコルを利用してデータを AWS IoT Core に送信します。MQTT では、トピックパブリッシュサブスクライブという概念が重要になります。トピックとは、データを受け渡すための論理的なチャンネルのことです。送信側と受信側で同じトピックを選択することで、データの受け渡しを行うことができます。パブリッシュとはデータを送信すること、サブスクライブはデータを受信することです。

3-1. Wio LTE にブザーを取り付ける

Wio LTE から microUSB ケーブルを抜いたことを確認した後、ブザーを Wio LTE の D20 に取り付けてください。

image.png

3-2. AWS IoT Core の Policy を作成する

3-2-1. AWS コンソールから IoT Core を開く

この後の操作(Amazon SNS サービスを使用する場合)に関係するため、東京リージョンを選択してください。右上のメニューから選択できます。
本手順は、AWS Console の英語画面で説明しています。AWS Console はデフォルトで日本語画面になりますので、画面左下の言語選択を[English]に変更してください。

3-2-2. サイドバーから[Secure] > [Policies] > [Create a policy](もしくは[Create])

image.png

3-2-3.以下の通り入力し、[Create]をクリックして Policy の作成を完了させる

項目 入力内容
Name wioHandsonPolicy
Action iot:*
Resource ARN *
Effect Allow

3-2-3.png
ポリシー名は任意のものでかまいません。この手順書ではwioHandsonPolicyとします
Resource ARN にあらかじめ入っている文字列は消し、*を上書きしてください。

補足: Policy について

Policy の設定を行うことで、どの操作を許可するのか、どのリソースへのアクセスを許可するのかを設定できます。
Action の指定項目は以下のようなものがあります。今回は簡略化のため、Action の項目に全ての操作を許可する iot: *を選択しています。

image.png

また、Resource ARN の設定をすることで、どのデバイスのアクセスを許可するのか、どのトピックへのアクセスを許可するのかなどを設定できます。今回は簡略化のため全てのリソースへのアクセスを許可する*を選択しています。

3-3. AWS IoT Core の Thing を作成する

3-3-1. AWS コンソールから IoT Core を開く

3-3-2. サイドバーの[Things] > [Register a thing](もしくは[Create])で Thing を登録する

image.png

3-3-3. [Create a single thing]をクリックする

image.png

3-3-4. [Name]だけを埋め、[Next]をクリックする

img
Thing 名は任意のものでかまいません。この手順書ではwioHandsonThingとします

3-3-5. [Create certificate]をクリックする

証明書作成の手順は Google Chrome ブラウザを使用して行ってください

image.png

3-3-6. 証明書をダウンロードする

ここで発行される[A certificate for this thing]と[A private key]を、[Download]をクリックして保存します。

保存し終わったら、[Activate]をクリックし、[Attach a policy]をクリックします。

3-3-6-1-2.png

3-3-7. ステップ 3-2-3.で作成したポリシーをアタッチし、[Register Thing]をクリックする

img

3-3-8. カスタムエンドポイントを確認する

サイドバーから[Settings]をクリックし、表示されるエンドポイントを控えておきます。
※今回は Amazon の証明書ではなく VERISIGN の証明書を使用する為、カスタムエンドポイントから -ats を抜いてください。
(例: hogehoge-ats.iot.ap-northeast-1.amazonaws.comhogehoge.iot.ap-northeast-1.amazonaws.com

image.png

3-4. SORACOM Beam 設定

3-4-1. SORACOM Web コンソール で 左上[Menu] > [SIM グループ]

image.png

image.png

3-4-2. ステップ 2-3-2. で作成した SIM グループをクリックし、 SORACOM Beam の設定を開く

image.png

3-4-3. SORACOM Beam の[+]のプルダウン一覧の中から MQTT エントリポイント を選択する

image.png

3-4-4. SORACOM Beam の設定内容を入力し、保存する

下表に続くスクリーンショットでの説明を参考にしながら、各項目内容を入力してください。

項目 入力内容
設定名: wioHandsonMQTT
種別: Other MQTT Broker
プロトコル: MQTTS
ホスト名: 先ほど控えたAWS IoT Core のカスタムエンドポイント
ポート番号: 8883
ユーザ名: 空欄
パスワード: 空欄
証明書: ON
認証情報: +をクリックして新しく作成
IMSI 付与: ON

設定名は任意のものでかまいません。この手順書ではwioHandsonMQTTとします
プロトコルはMQTTSを選択してください(MQTTではないので注意)。

image.png

  • [+]をクリックして認証情報を追加する

img

  • 認証情報 ID と概要を入力する

認証情報 ID 名は任意のものでかまいません。この手順書ではwioHandsonCertとします

  • 「種別」に[X.509 証明書]を選択する

  • AWS IoT Core で保存した秘密鍵と証明書をテキストエディタで開き、コピーして貼り付ける

このとき、
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
などを省かず、各ファイル内の内容の全てを貼り付けるよう注意してください

  • 以下のCA証明書をコピーして貼り付ける
-----BEGIN CERTIFICATE-----
MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCB
yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQL
ExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJp
U2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxW
ZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0
aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCByjEL
MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZW
ZXJpU2lnbiBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2ln
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJp
U2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9y
aXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvJAgIKXo1
nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKzj/i5Vbex
t0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIz
SdhDY2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQG
BO+QueQA5N06tRn/Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+
rCpSx4/VBEnkjWNHiDxpg8v+R70rfk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/
NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8E
BAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEwHzAH
BgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy
aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKv
MzEzMA0GCSqGSIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzE
p6B4Eq1iDkVwZMXnl2YtmAl+X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y
5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKEKQsTb47bDN0lAtukixlE0kF6BWlK
WE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiCKm0oHw0LxOXnGiYZ
4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vEZV8N
hnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq
-----END CERTIFICATE-----
  • 項目を全て埋めたら、[登録]をクリックする

3-4-4-3-2.png

  • IMSI の項目をクリックして[ON]にし、[保存]をクリックする

3-4-4-4.png

3-5. PubSubClient ライブラリのインストール

MQTT 通信を行うにあたり PubSubClient というライブラリを利用します。

3-5-1. Arduino IDE を起動する

3-5-2. Arduino IDE の [スケッチ] > [ライブラリをインクルード] > [ライブラリを管理…]

一覧の中から PubSubClient を選択しインストールをクリックします。
mqtt pubsub で検索すると見つけやすいです

3-6. スケッチを作成する

3-6-1. Arduino IDE を起動する

3-6-2. メニューの [ツール] で [ボード: “Wio Tracker LTE”] と表示されていることを確認する

なっていない場合、一覧から “Wio Tracker LTE” を選んでください。

3-6-3. Arduino IDE の [ファイル] > [新規ファイル]

3-6-4. 立ち上がったファイルのスケッチを全て消し、以下のソースコードを上書きする

#include <WioLTEforArduino.h>
#include <WioLTEClient.h>
// https://github.com/knolleary/pubsubclient
#include <PubSubClient.h>
#include <stdio.h>
#include <Ultrasonic.h>

#define BUZZER_PIN  (WIOLTE_D20)
#define ULTRASONIC_PIN  (WIOLTE_D38)

#define APN               "soracom.io"
#define USERNAME          "sora"
#define PASSWORD          "sora"

#define MQTT_SERVER_HOST  "beam.soracom.io"
#define MQTT_SERVER_PORT  (1883)

#define ID                "WioHandson"
#define OUT_TOPIC         "WioHandsonTopic/pub"
#define IN_TOPIC          "WioHandsonTopic/sub"

#define INTERVAL          (5000)
#define BUZZER_ON_TIME  (100)
#define BUZZER_OFF_TIME (300)

WioLTE Wio;
WioLTEClient WioClient(&Wio);
PubSubClient MqttClient;
Ultrasonic UltrasonicRanger(ULTRASONIC_PIN);

void callback(char* topic, byte* payload, unsigned int length) {
  // ブザーを3回鳴らす
  for(int i=0; i<3; i++){
    digitalWrite(BUZZER_PIN, HIGH);
    delay(BUZZER_ON_TIME);
    digitalWrite(BUZZER_PIN, LOW);
    delay(BUZZER_OFF_TIME);
  }

  // 受信データの表示処理
  SerialUSB.print("Subscribe:");
  for (int i = 0; i < length; i++) SerialUSB.print((char)payload[i]);
  SerialUSB.println("");
}

// 初期化処理
// 起動時に一度だけ実行される
void setup() {
  delay(200);

  SerialUSB.println("");
  SerialUSB.println("--- START ---------------------------------------------------");

  SerialUSB.println("### I/O Initialize.");
  Wio.Init();

  SerialUSB.println("### Power supply ON.");
  Wio.PowerSupplyLTE(true);

  // D38ピンのみデフォルトで電源が供給される
  // それ以外のピンを使用する場合はソフトウェア側から電源供給の設定を行う必要がある
  // ブザー用にD20ピンを使うので、電源を供給する設定を追加する
  Wio.PowerSupplyGrove(true);

  // ブザー用のピンを設定
  pinMode(BUZZER_PIN, OUTPUT);
  delay(500);

  SerialUSB.println("### Turn on or reset.");
  if (!Wio.TurnOnOrReset()) {
    SerialUSB.println("### ERROR! ###");
    return;
  }

  // soracomへの接続設定と接続確認
  SerialUSB.println("### Connecting to \""APN"\".");
  if (!Wio.Activate(APN, USERNAME, PASSWORD)) {
    SerialUSB.println("### ERROR! ###");
    return;
  }

  // MQTT接続設定と接続確認
  SerialUSB.println("### Connecting to MQTT server \""MQTT_SERVER_HOST"\"");
  MqttClient.setServer(MQTT_SERVER_HOST, MQTT_SERVER_PORT);
  MqttClient.setCallback(callback);
  MqttClient.setClient(WioClient);
  if (!MqttClient.connect(ID)) {
    SerialUSB.println("### ERROR! ###");
    return;
  }
  MqttClient.subscribe(IN_TOPIC);

  SerialUSB.println("### Setup completed.");
}

// 無限ループ
void loop() {
  char data[100];
  // 距離を取得
  long distance;
  distance = UltrasonicRanger.MeasureInCentimeters();
  // 距離を表示
  sprintf(data, "{\"distance\":%lu}", distance);
  SerialUSB.print("Publish:");
  SerialUSB.print(data);
  SerialUSB.println("");
  // データを送信
  MqttClient.publish(OUT_TOPIC, data);

  unsigned long next = millis();
  while (millis() < next + INTERVAL)
  {
    MqttClient.loop();
  }
} 

3-6-5. Wio LTE を PC に接続して DFU モードにする

DFUモードにした際にブザーが鳴る場合は、ブザーを外してください。

3-6-6. ウィンドウの[マイコンボードに書き込む](→)をクリックする

image.png

3-6-7. 書き込みが完了したら、Wio LTE を 通常モードにする(RST ボタンを押せば通常モードになります)

ステップ 3-6-5. でブザーを取り外している場合は、一度電源を抜き、ブザーをD20に取り付けてからWio LTEの電源を入れてください(電源ケーブルを挿す)。 通常モードで起動次第 SORACOM Beam へデータを送信し始めます(電源投入から送信開始までは 15 ~ 20 秒程度かかります)。

3-7. AWS IoT Core がデータを受け取れているか確認する

3-7-1. AWS IoT Core に戻り、[Test]をクリックする

AWSIoTTestを選択 (1).png

3-7-2. サブスクライブしてみる

すべてのトピックをサブスクライブするために、ワイルドカードの意味を持つ#を入力します。入力した後、[Subscribe to topic]をクリックします。

image.png

3-7-3. 正しくデータが送られてきていると、緑枠内のようにデータが自動で表示される

きちんと表示されていれば成功です。

image.png

3-8. [Test]で Wio LTE に対してパブリッシュする

言い換えると、Wio LTE に AWS IoT Core からのメッセージをサブスクライブさせます。ここで簡易的に双方向通信を行うことができます。

  • ステップ 3-7-3. の画面上の [Publish]項目にWioHandsonTopic/subと入力し、[Publish to topic]をクリックする(その際、ステップ 3-7-2. で入力した要素は消す

  • ブザーが鳴れば成功です

image.png

トラブルシュート: Beam の接続でエラーが表示される場合

image.png

  • 原因: Beam の設定が間違っている

  • 解決法: クライアント証明書、クライアント秘密鍵、CA 証明書が適切な場所にコピーされているかなど、設定を再度見直してください。また、AWS IoT Core の設定で、Thing に証明書がアタッチされているか、証明書が ACTIVE になっているか、証明書にポリシーがアタッチされているかなど、あわせて確認してください

AWS IoT Core で Thing・証明書・ポリシーを確認する

  • AWS IoT Core のコンソールで [Manage] > [Things] > [ステップ 3-3. で作成した Thing]

troubleshoot_beam1.png

  • 左メニューの [Security]をクリックし、Certificate が Thing にアタッチできていることを確認する

Certificate が見当たらない場合は、[Create certificate] をクリックし、ステップ 3-3-6. に従って証明書をダウンロードしてください

troubleshoot_beam2.png

* Thing にアタッチされている Certificate をクリックする

troubleshoot_beam2-1.png

  • 証明書が ACTIVE(=有効)になっているか確認する

troubleshoot_beam3.png

  • 上図のように INACTIVEになっている場合、画面右上の[Actions] > [Activate]で ACTIVE にする

troubleshoot_beam4.png

  • 左メニューの[Policies]をクリックし、証明書にポリシーがアタッチされていることを確認する

troubleshoot_beam5.png

ポリシーが見当たらない場合、下図のように、画面右上の[Actions] > [Attach policy]でポリシーをアタッチしてくださいアタッチするポリシーが見つからない場合は、ステップ 3-2. に従ってポリシーを作成し、再度上記操作を行ってください

troubleshoot_beam6.png

補足: Subscription topic を#と指定する理由

#を指定すると、すべてのトピックをサブスクライブするようになります。今回は簡略化のためこの指定をしましたが、AWS IoT Core の環境で他のデバイスからもパブリッシュしている場合は、送信したデータが混在して表示されてしまいます。デバイスが2つ以上である場合は、[Subscribe topic] で適切なトピック設定を行なうことで、選択したトピックからのデータのみを表示させる事が可能です。
また今回は SORACOM Beam の設定で IMSI を付与していますので、WioHandsonTopic/pub/というトピックにデータがパブリッシュされています。IMSI とは、デバイス(モノ、正確には SIM)の識別番号のことです。IMSI を付与することで、データの発信源を識別できるようになります。あるデバイスがパブリッシュした情報だけを表示したい場合は、[Subscribe topic]にWioHandsonTopic/pub/を指定しましょう

  • 例えば、DynamoDB に格納する際、ID 属性にデバイスごとの IMSI を格納することができます

subscription-tip.png

  • IMSI を付与しない場合は、topic の最後に IMSI が付与されません

image.png

IMSI 付与なしの設定でサブスクライブする場合は、Topic をWioHandsonTopic/pubに変更してください。

【作業】ステップ 4: AWS IoT Core のルールエンジンを使って双方向通信

architecture_diagram_step4.png

AWS IoT Core のルールエンジンを使えば、Lambda を使用せずに AWS 内のマネージドサービスを使用する事ができます。ルールエンジンでは、「データの状況が〇〇の時に」「〇〇というアクションを行う」という一連のプログラムが AWS コンソール上で指定できます。
今回は、「距離センサが取得したデータ値が 10 cm 未満の時に」、ステップ 4 では「アクションとして[トピックにリパブリッシュ]、ステップ 5 では[Amazon SNS を利用してデータを送信]の2つを行う」ルールエンジンを設定します。
まずはルールエンジンにあるリパブリッシュの機能を利用して、AWS IoT Core 側から Wio LTE にリパブリッシュし、ブザーを鳴らしてみます。これによって、簡易的ではありますが、AWS IoT Core 側からエッジデバイスに命令を送ることが可能になります。

4-1. Act からルールを追加する

4-1-1. 左のメニューから[Act]を選択する

AWSIoT_Actを選択.png

4-1-2. 次に[Create a rule](もしくは[Create])をクリックしてルールを作成する

Actを選択した時、今までRuleを作ったことがない場合こう表示される.png

4-1-3. 以下の通り入力していく

超音波距離センサに手を近づけ、センサとの距離を 10 cm 未満にしてください。

項目 入力内容        
Name wioHandsonRule
Description 距離センサのデータ値が一定以下の時に実行される操作
Rule query statement SELECT topic(3) as ID, parse_time("yyy-MM-dd HH:mm:ss",timestamp(),"Asia/Tokyo") as timestamp, distance FROM 'WioHandsonTopic/pub/#' WHERE distance < 10

ルール名は任意のものでかまいません。この手順書ではwioHandsonRuleとします
上記の内容を入力した後、[Add action]をクリックします。

4-1-3-new.png

4-2. ルールエンジンでリパブリッシュし、ブザーを鳴らす

4-2-1. [Republish message to an AWS IoT topic]を選択する

4-2-1.png

configure-action.png

4-2-2. Topic 名WioHandsonTopic/subを入力し、[Create a new role]をクリックする

image.png

4-2-3. [IAM role name]を入力する

image.png

ロール名は任意のものでかまいません。この手順書ではwioHandsonRepubとします

4-2-4. 先ほど作成したロールを選択し、[Add action]をクリックする

image.png

4-2-5. 作成した Action が反映されている事を確認し、[Create rule]をクリックする

4-2-5.png

4-2-6. ブザーを鳴らす 超音波距離センサに手を近づけてください。 ブザーが3回鳴れば成功です。

トラブルシュート: ブザーが鳴らない場合 * 3-7. の手順をもう一度行ってください

  • 3-7-3. で確認したデータ値が 10 未満であることを確認してください

  • 次に、3-8. の手順をもう一度行ってください この作業でブザーが鳴った場合は、AWS IoT Core 側のルールの設定(ステップ 4-1-3. や 4-2-2. あたり)が間違っている可能性があります。手順書と照らし合わせて、打ち間違い等がないか確認してください。

【作業】ステップ 5: AWS IoT Core のルールエンジンを使ってAWS・AWS外のサービスと連携

architecture_diagram_step5.png

以下は時間に余裕のある方用のハンズオンです。ルールエンジンにある Amazon SNS と DynamoDB のアクションを利用して、

  • 距離データが 10 cm 未満の時に SMS を送信する

  • 距離データが 10 cm 未満の時に Email を送信する

  • IFTTT を利用して Email に届いた内容を LINE に通知する * 距離データを DynamoDB に格納する

の4つの動作を実装します。

5-1. ルールエンジンで Amazon SNS を使って SMS 経由でスマホに通知を送る

5-1-1. [Act] > [wioHandsonRule]でルールに戻り、[Add action] > [Send a message as an SNS push notification] > [Configure Action]

5-1-1.png

configure-action.png

5-1-2. 手順に沿って以下の内容を入力していく

項目 入力内容        
SNS Target wioHandson
Message format RAW
IAM role name wioHandsonSNS
  • [Create]をクリックし、現れたボックスにwioHandsonと入力する

5-1-2.png

5-1-2-2.png

SNS パブリッシュの対象となる SNS トピックを作成します。
SNS トピック名は任意のもので構いませんが、10 文字以下になるようにしてください。ルール画面から作成したSNSトピック名は、デフォルトとして、10 文字以下にする必要がある“トピック表示名”(メッセージの送信者として表示される名前)にもそのまま転用されるためです。

  • SNS target 欄に先ほど作成したトピック名が表示されていることを確認する

  • Message format でRAWを選択する

  • [Create a new role]をクリックして IAM Role を作成する

  • [IAM role name]のプルダウンで、作成したロール名を選択する

ロール名は任意のものでかまいません。この手順書ではwioHandsonSNSとします

  • [Add action]をクリックする 

5-1-2-3.png

5-1-3. 新規タブで開いたAWS コンソールから SNS を開き、左メニューの[Topics]をクリックする

5-1-3.png

5-1-3-2.png

5-1-4. ステップ 5-1-2.で入力したトピックの ARN をクリックする

5-1-4.png

5-1-5. [Create subscription]をクリックする

image.png

5-1-6. [Protocol]のドロップダウンから[SMS]を選択し、[Endpoint]に自分の電話番号を入力して[Create subscription]をクリックする

国際電話番号表記にしてください。
例:090-xxxx-xxxx → 8190xxxxxxxx

5-1-6.png

5-1-7. 指定した電話番号に SMS が送られてくるかを確認する

SMS で距離データが 10 cm 未満の場合のみ受信できることが確認できたら成功です。

5-1-7.png

Amazon SNSサービスでは、SMS 送信の基本上限額が 1 ドルまでとなっています。また SMS 送信は海外リージョンを使用すると国際 SMS となり、すぐに 1 ドルに達してしまうため、国内のリージョンを使うようにしましょう。また、サポートに問い合わせることで上限緩和申請が可能です。

5-2. ルールエンジンで Amazon SNS を使って Gmail に通知を送る

次は、Gmail にメールが届くよう設定します。

5-2-1. Amazon SNS の画面に戻り、[Create Subscription]をクリックする

5-2-1.png

5-2-2. [Protocol]のプルダウンから[Email]を選択し、[Endpoint]に使用しても良い Gmail アドレスを入力する

この後の他サービスとの連携に関わってくるので、必ず Gmail のメールアドレスにしてください

5-2-2.png

5-2-3. 入力したメールアドレスに確認のメールが届くので、[Confirm subscription]をクリックしてサブスクライブを許可する

5-2-3.png

許可に成功すると以下のような画面に遷移します。
5-2-3-2.png

5-2-4. データがメールで受信される

距離データが 10 cm 未満になると、登録した Email アドレス宛に届きます。
5-2-4.png

5-3. IFTTT を使って外部サービスと連携する

IFTTT を使って距離データを LINE に転送してみます。
下記リンクからIFTTTのサイトを開き、ログインしてください。

5-3-1. 画面上部メニューの[Search]で「LINE Gmail」を検索し、 [Gmail にメールが届いたら LINE に転送]という Applet をクリックする

5-3-1.png

5-3-2.[Turn on]をクリックし、Gmail と LINE へのアクセスを[OK]で許可する

5-3-2.png

5-3-2-2.png

5-3-3. ログイン画面が出てくるので LINE アカウントにログインする

IFTTT上でLINEアカウントにログイン.png

5-3-4. 連携を確認されるので[同意して連携する]をクリックする

IFTTTがLINEにアクセスすることを許可し連携.png

5-3-5. Google アカウントへの連携も確認されるので、規約を読んだ上で[許可]をクリックする

5-3-5.png

5-3-6. IFTTT [Configure]の Target で LINE 通知先を選択 > [Save]

AppletでLINE通知先を設定、グループも選択可.png

トラブルシュート: LINE が届かない場合

MyApplets で Applet が ON になっているかを確認します。

image.png

トラブルシュート: 外部サービスとの連携がうまくいかない場合

  • 原因: SORACOM との接続が切れている

シリアルコンソールでエラーなく距離データ値が表示されていても、SORACOM との接続が切れている可能性があります(参考: 補足: シリアルモニタについて)。SORACOM との接続が途中で切れていてもシリアルコンソール上でエラーは表示されません

  • 解決法: Wio LTE を再起動(リセットボタンを押す)してください

5-4. ルールエンジンで DynamoDB にデータを格納する

5-4-1. 新しくルールを作成し、[Add action]をクリックする

以下の通り入力し、ルールを作成します。

項目 入力内容        
Name wioHandsonRuleForDB
Description 距離センサのデータ値をDBに入れる
Rule query statement SELECT topic(3) as ID, parse_time("yyyy-MM-dd HH:mm:ss", timestamp(), "Asia/Tokyo") as timestamp, distance FROM 'WioHandsonTopic/pub/#'

5-4-1-new.png

5-4-2. Action に[Split message into multiple columns of a database table (DynamoDBv2)]を選択し追加する

5-4-2.png

configure-action.png

5-4-3. [Create a new resource]をクリックし、DynamoDB に遷移する

image.png

5-4-4. DynamoDB に遷移した後、[Dashboard] > [Create table]

img

5-4-5. 以下の通り入力する

sort key は[add sort key]にチェックを入れると入力欄が出現します。

項目 入力内容        
Table name wioHandsonDDBTable
Partition Key IDString
Add sort key timestampString

テーブル名は任意のものでかまいません。この手順書ではwioHandsonDDBTableとします
5-4-5.png

5-4-6. ルール作成画面に戻り、先ほど作った DDB テーブル名を反映させ、[Create a new role]をクリックして新しくロールを作成する

5-4-6.png

ロール名は任意のものでかまいません。この手順書ではwioHandsonDDBとします

5-4-7. ロールを作成し反映させた後に[Add action]をクリックし、[Create rule]でルール作成を完了させる

5-4-7.png

5-4-7-2.png

5-4-8. DynamoDB のテーブルを表示し、データが格納されていることを確認する(少し時間がかかる場合があります)

更新アイコンをクリックしないと更新が反映されないので気をつけてください。

5-4-8.png

補足: ルールエンジンで起きているエラーを確認する方法

ルールエンジンを使って AWS の他のサービスと連携する際に、エラーが発生することもあります。エラーを確認するために、今回はエラーを S3 に保存するように設定します。

  • Error Action 項目内の[Add action]をクリックする

ddb-tip-error.png.png

  • [Store messages in an Amazon S3 bucket]をクリックする

5-4-8-2.png

configure-action.png

  • [Create a new resource] > [Configure Action]

image.png

  • [Create bucket]をクリックする

image.png

  • [Bucket name]にバケット名を入力する

バケット名は世界に一つのものとなりますので、既に存在するバケットと重複する名前はつけられません。<YYYYMMDD>-<your name>-wio-handson-errorなど、一意になるようなバケット名にしてください。手順書内ではwio-handson-errorとします

image.png

  • 何も変更せずに[Next]をクリックする

ddb-tip-error-3.png

  • 何も変更せずに[Next]をクリックする

image.png

  • [Create bucket]をクリックする

image.png

  • 必要な設定項目を記入する

  • [Create a new resource]の左の更新ボタンをクリックする

  • S3 bucket で作成したバケット名を選択する

  • Key に${timestamp()}を入力する

  • [Create a new role]をクリックする

  • ロールを作成する(今回はwioHandsonS3

  • 作成したロールを選択する(今回はwioHandsonS3

  • [Add action]をクリックする

image.png

  • 以下の画像のようになっていればOK

ddb-tip-error-7.png

  • エラーが S3 に格納される

今回はタイムスタンプでファイルが作成されるように設定しています。
以下の画像では「ロールの権限がないため DynamoDB に書き込めない」というエラーが記録されています。

ddb-tip-error-result.png

5-5. DynamoDB のデータを「IoT.kyoto VIS」で可視化(任意)

当社の可視化ツール「IoT.kyoto VIS」を使えば、簡単に DynamoDB のデータを可視化できます。

5-5-1. 下記リンクをクリックし、[新規登録]をクリックする

image.png

5-5-2. 認証情報を登録する

image.png
利用規約をご確認の上で、ご利用ください

5-5-3. 「dynamoDB 接続エラー」と出るので[OK]をクリックした後、画面上部メニューの[ユーザー設定]をクリックする

設定方法の詳細については、こちらをご確認ください

image.png

5-5-4. 下図のようにAWS アクセス設定と DynamoDB テーブル設定を入力する

5-5-4-2.png

5-5-5. グラフが描画される

image.png

詳しい使用方法については、こちらをご確認ください。

最後に: 後片付け

意図しない課金を防ぐため、今回使用した SORACOM サービス・ AWS サービスでもう使用しないものは削除しましょう。またグループやロールなど、使わなくなった権限は迷子になりがちですので、今のうちに一緒に消してしまいましょう。
ステップ 5 では、複数のサービスを連携させるためにサービス間のアクセスを許可しました。セキュリティの観点から、今後利用することがないサービスのアクセス権は削除しておきましょう。

Wio LTE の片付け

下記リンク先から、SORACOM 社の Wio LTE ハンズオン記事内項目をご参照ください。

削除項目一覧: SORACOM 関連

削除項目一覧: AWS 関連

  • AWS IoT Core(以下で説明する手順に従って削除)

    • wioHandsonThing(ステップ 3 で使用)【[Manage] > [Things]に移動して削除)】

    • wioHandsonPolicy(ステップ 3 で使用)【[Secure] > [Policies]に移動して削除)】

    • wioHandsonCert(ステップ 3 で使用)【[Secure] > [Certificates]に移動して削除】

    • wioHandsonRule(ステップ 45 で使用)【[Act]に移動して削除】

    • wioHandsonRuleForDB(ステップ 45 で使用)【[Act]に移動して削除】

IoT Core 内で作成した Thing や Policy や Certificate は、削除の順番を間違えると、 Certificate が迷子になる可能性があります。なので、以下の手順に沿って削除してください。

  • [Secure] > [Certificates] > [XXXX]をクリックする

XXXX は Certificate の番号なので環境によって異なります

image.png

  • [Policies]をクリックし、[wioHandsonPolicy]が存在するか確認する

image.png

  • [Things]をクリックし、[wioHandsonThing]が存在するか確認する

image.png

  • [Actions] > [Delete]をクリックする

image.png

  • [Manage] > [Things] > [・・・] > [Delete]をクリックする

image.png

  • [Secure] > [Policies] > [・・・] > [Delete]をクリックする

image.png

  • AWS DynamoDB
    • wioHandsonDDBTable(ステップ 5 で使用)【テーブルを削除】
  • Amazon SNS
    • wioHandsonのサブスクリプション(ステップ 5 で使用)【[Topic]>[Subscriptions]に移動して削除】

    • wioHandson(トピック:ステップ 5 で使用)【[Topic]に移動して削除】

サブスクリプションが迷子にならないよう、トピックより先にサブスクリプションから消しましょう

  • [Topics] > [今回作成したトピック]をクリックする

delete-subscription.png

delete-topic.png

  • 下図のように[Deleted]と表示されれば OK(しばらくすると表示が消えるので注意)

deleted-subscription.png

  • IAM Role
    • wioHandsonRepub(IoT Coreから Republish するための権限)

    • wioHandsonSNS(IoT Core から Amazon SNS にアクセスするための権限)

    • wioHandsonDDB(IoT Core のルールで作成した DynamoDB にアクセスするための権限)

    • wioHandsonS3(IoT Core のルールで作成した S3 バケットにアクセスするための権限)

LINE と IFTTT との連携を解除する

IFTTT 側で連携を解除する

  • サービスを検索する

image.png

  • [Setting]をクリックする

image.png

  • [Disconnect LINE]をクリックする

image.png

LINE 側で連携を解除する

  • LINE Notifyにアクセスして、ログインする

image.png

  • [マイページ] > [連携中のサービス] > [解除]で連携を解除する

image.png

Gmail と IFTTT との連携を解除する

IFTTT 側で連携を解除する

  • LINE の場合と同じ手順で Gmail のサービスを検索して、連携を解除する

image.png

Gmail 側で連携を解除する

  • [Google アカウント] > [ログインとセキュリティ] > [アカウントにアクセスできるアプリ] > [アプリを管理]

image.png

  • IFTTT のアクセス権を削除する

image.png