AWS IoT Core を使ってみる その2 ~mockmockでデバイスをモックする~

クラウド

今回やること

前回、AWS IoT Core 側のセキュリティ設定をしました。

今回は、実際に IoT Core に接続するための mockmock の設定を行います。
最終的に、mockmock 側から AWS IoT Core へモックメッセージを送るところまでやります。

現状、 mockmock で AWS に MQTT で接続することに関する情報がググってもあまり出てこなかったので、手探りでやる感じになります。(HTTP でのアクセス方法に関する情報はいくつかあったので、基本的にはそれと大きな違いはないと思いますが)

mockmock とは

IoT デバイスのモックをウェブブラウザ上で制御できるクラウドサービスです。
詳しくは mockmock 公式や関連サイトを見てもらったほうが早いと思いますが、大きな特徴としては以下です。

  • ラズパイとかの IoT デバイスが手元にない場合でも、クラウド側の動作をテストすることができる
  • 条件を満たせば無料で使える

参考サイト様


mockmock × AWS IoT Core × Lambda を試してみる - Qiita
AWS IoTを使ってみたかったちょっとたしなんでみたいと思ったのでを触ってみる。構成案手近に手軽なIoTのデバイスがなかったのでmockmockを使ってデバイス側…

mockmock に登録

とりあえずまずは mockmock に登録します。
といっても、登録方法は簡単というか直感的に進めれるので省略します。

一応情報として、 mockmock には無料枠があり、以下の条件で無料で利用できるみたいです。

  • 同時起動するモックの台数が1台のみ
  • 最大稼働時間は24時間

複数同時に起動したり、長時間可動したりする場合は有料サービスとなるみたいです。
今回はテスト的に動かすので、無料枠で全く問題ありません。

mockmock で AWS 接続用プロジェクト作成

はじめに

プロジェクト作成する前に、まず AWS IoT Core 側の情報が必要となるため、それらの準備作業をします。

前回、証明書等をダウンロードしたはずなのでそれを用意します。

また、mockmock が通信する AWS IoT Core のエンドポイント情報が必要になります。
以下の手順で、テスト接続用のエンドポイント情報を取得します。

「~として接続」を押すと、右側から開き戸みたいなウィンドウが現れて、エンドポイントが表示されるので、それをクリップボードやメモ帳にコピーしておきます。

プロジェクト作成

「プロジェクト作成」を選択します。

項目を適切に埋めていきます。

  • プロジェクト名:適当でいい
  • サーバータイプ:AWS IoT Core を選択
  • プロトコル:MQTTS(MQTTではない!)
  • 送信先ホスト:上記で取得した、AWS IoT Core のエンドポイント
  • 証明書ファイル:AWS IoT Core にて証明書作成時にダウンロードしたファイル(詳しくは前回参照)
  • 秘密鍵ファイル:AWS IoT Core にて証明書作成時にダウンロードしたファイル(詳しくは前回参照)
  • Root 証明書ファイル:詳細は下記補足参照

以上を埋めたら「登録」します。

補足:Root 証明書ファイルの取得方法

上記の「Root 証明書ファイル」については、以下の手順で取得します。

AWS 公式の X.509 証明書と AWS IoTへ行きます。

以下のように、 Amazon ルート CA をファイルとして保存(たぶんどれでもいいんだろうけど、今回は CA1 にしました)

mock グループ設定

モックを複数作成する場合、それらのモックをグルーピングするための設定だと思われます。
今回は無料枠ということで、モックは1つしか起動できないので、モックを複数作ることはないと思います。
なので、適当設定で良さそうです。

まず右側ペインの「mockグループ」の右側にある「+」を押します。
下記画面が出てくると思うので、以下のように設定しました。

  • mockグループ名:適当
  • 最大稼働時間:適当でいいですが、無料枠は 86399 までです。(下のキャプチャ画像はミスってます)
  • それ以外の項目:現状不要と思われるので何もしない

テンプレートの作成

テンプレートは、MQTT のペイロードに該当するものだと思われます。
今回はテストなので、適当に設定します。(テンプレート名は適当で良いです)

mock ステータスの作成

作成したプロジェクトにはエンドポイント情報などの接続情報しか割り当てられていないので、このプロジェクトに上記で作成したテンプレート(MQTTのペイロード情報)とトピック情報をバインドします。

モックはには状態という概念があり、状態ごとに送信するトピックを設定できるみたいです。もちろんトピックごとにデータテンプレート(ペイロード)を設定できます。
イメージとしては以下の感じでしょうか。

  • モックは状態ごとに送るメッセージを変えることができる
  • モックは何かしらのトリガーで状態遷移する
  • 状態遷移したときに、メッセージを送信する

とりあえず今回はイカのように設定しました。

  • 状態名:適当です
  • 初期状態のチェック:多分入れなくてもいいと思うけど、入れときました
  • Topic:適当でいいですが、AWS IoT Core 側でサブスクライブ登録するので、覚えておく必要がある
  • QoSとかRetainとか:それぞれデフォルトでよし
  • 最小送信間隔、最大送信間隔:とりあえず10秒にしておく
  • データテンプレート:先ほど作成したものを選択

mock 作成

いよいよ仕上げです。
上述で設定したモックを実体化?します。

MQTTクライアントID は、たぶん空白でいいです。空白にすると mockmock 側が良きに計らってくれるっぽいです。

AWS IoT Core への送信テスト

作成したモックが正しく動くかテストし、結果的に AWS IoT Core へメッセージが送れるかテストします。

AWS IoT Core でメッセージをサブスクライブする

まず、テスト用ですが AWS IoT Core 側でトピックのサブスクライブ登録処理を行います。
トピックは mockmock のプロジェクト作成時に使用したトピックを使用します。

mockmock でメッセージ送信

今度はまた mockmock 側に戻り、以下のように「送信」ボタンを押します。

すると、以下のような画面が表示され、「成否」欄が true になっていることを確認します。たぶんこれでメッセージが送信されたということです。

AWS IoT Cre で確認

AWS IoT Core 側に戻ります。
以下画面のようにメッセージが出ていたら、 mockmock から AWS IoT Core へメッセージが送れているということです!


今回はここまでです。
証明書とかいろいろ大変でしたが、思ったよりはすんなり通信ができました。

コメント

タイトルとURLをコピーしました