[AWS IoT Core]M5StackからIoTCoreを利用してデータを収集してみる
はじめに
AWSの各種サービスを自分の手を動かして理解するために、ハンズオンを漁っていたところIoT Coreを見つけました。初めて触れるサービスあるじゃん!ということでやってみました!
ハンズオンはこちら
- IoT Core🔰
- Kinesis🔰
- Lambda
- API Gateway🔰
- DynamoDB
🔰:初めて触るサービス
また、職場のマイコン好きおじさんがM5StackというIoTデバイスを持っていたので、これ使えるんじゃないか?と思い、ハンズオンでは利用されていませんが、少しアレンジして取り組むことにしました!
ハンズオン直結の内容は公式に任せるとして、本記事では私が手間取ったM5Stackのセットアップを中心に紹介したいと思います。
AWS IoTとは
AWS IoT は、IoT デバイスを他のデバイスおよび AWS クラウドサービスに接続するクラウドサービスを提供します。AWS IoT は、IoT デバイスを AWS IoT ベースのソリューションに統合するのに役立つデバイスソフトウェアを提供します。デバイスが AWS IoT に接続できる場合、AWS IoT は それらデバイスをAWS が提供するクラウドサービスに接続できます。
公式より引用:https://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/what-is-aws-iot.html
IoTデバイスとはインターネットに接続して情報を収集したり制御したりする機器を指します。身近なものでは、ここ最近の家電は外出先からON/OFF出来ますよね?こういうモノのこともIoTとかIoTデバイスとか呼んでいます。IoTデバイスとAWSをコラボさせるサービス全般がAWS IoTであり、AWS IoT CoreはモノをAWSのサービスに容易に接続できるようにするサービスです。本記事では、IoT Core以外のサービスには触れておりませんので、詳しく知りたい方はAWS公式で確認してみてください!(私もワカラナイ。)
M5Stackとは
温湿度計やカメラ等を接続するインターフェースを持ち、様々なアプリケーションを開発できるデバイスです。たしかCovid-19流行当初にどこかの大学で講堂の換気を促す為の二酸化炭素濃度を測定するデバイスを作りました!なんて記事をネットニュースで見かけた気がします。
IoTCoreとの相性もよく、UIFlowを利用することで接続部分を容易に構築できます。UIFlowについては後述しますのでお待ち下さい!
いざハンズオン!!の前にM5Stackのセットアップ
まずはUIFlowを利用してM5Stackのプログラミングができるようにします。UIFlowはWEBブラウザベースで利用できるプログラミングツールです。ドラッグ&ドロップ中心でグラフィカルにプログラミングができます。AWS IoT Coreを含む、機能単位でブロック化されているため容易に利用できる、お試しにはもってこいのツールです。何点か躓いた点がありますので、注記のブロックを是非確認ください。
私はこちらの記事に倣ってセットアップを行いました。非常にわかりやすくまとめられているためオススメです。
ハンズオン本編
1. IoT Coreにモノ(デバイス)の登録する
M5Stackを利用する場合は仮想デバイスは利用しない為、3.1 AWS IoT Core の設定から進めました。
ハンズオンの手順に従って、証明書及びプライベートキーのダウンロードまで進めます。これらのファイルはM5Stackにアップロードします。M5Stackは名称が10文字以下のものしか受け付けられませんので、リネームしておいてください。
2. UIFlowでAWS IoT Coreとのインターフェースを作成する
ここからはPCとM5Stackを自宅のWiFiに接続した状態で行います。(証明書とキーをアップロードするため)
ツリーからIoTCloud、AWSを選択する。
これらのブロックを組み合わせることでIoTCoreを利用することができます。
3. M5StackとIoTCoreを接続確認する
以下のようにブロックを組み合わせます。AWSのブロックの他に、WiFiに接続するためのブロックを準備します。
上のブロックの設定項目
- Init things name : 任意
- host : IoT Coreのエンドポイント
- port : 8883固定
- keepalive : 任意
- keyFile :
1. IoT Coreにモノ(デバイス)の登録する
でダウンロードしたファイルを選択 - cerFile : KeyFile同様の操作で証明書を選択
左のブロックの設定項目
- Publish topic : 任意 (疎通確認で利用します。)
- msg : IoT Coreに渡すメッセージ
右のブロックの設定項目
- Aws subscribe : 任意 (疎通確認で利用します。)
テスト画面
マネジメントコンソールのIoTCoreのメニューからこちらの画面を表示します。
以下のように構築した、ボタンAを押した時、###
に対して$$$
というトピックを送信します。
Publish topic ### msg $$$
コンソールには受け取ったトピックが表示されます。このように疎通確認が行えます。
ここまで出来れば、ハンズオンに沿って進めることでブラウザにデータの表示まで体験することができます。
こんな感じで試してました!
最後にわたしがコケた部分をいくつか記載しておきます
参考リンク
Discussion