AWS IoTのMQTT Publishを簡単に試せる仕組みが欲しかったのですが、Electronにも触れてみたかったので、作ってみたお話です。SDKやコマンドラインツールでもいいのですが、より汎用的で敷居を下げたかったことが背景としてあります。
AWS IoTにMQTT Publishするための準備
AWS IoTにMQTT Publishするためには、
- モノの作成
- モノの証明書の作成
- ポリシーの作成と紐つけ
- モノと証明書との紐つけ
といった設定をした後に、コマンドやSDKで
- AWSリージョン
- MQTT Topic
- CA証明書(root CA)
- 証明書(certificate)
- 秘密鍵(private key)
- クライアントID
※太字は必須項目
を指定して、メッセージをPublishすることになります。
今回は前者の設定が出来て、後者をさっとテストしたい、試したいといった時に、より簡単に実行できる環境・ツールを準備しようという試みです。
AWS IoT MQTT Publisher
ElectronアプリのソースはGitHubで公開させて頂いていますので、こちらでは概要に留めたいと思います。
※まだ全てパッケージングできていないので、必要に応じて各自パッケージング頂ければと思います。
完成イメージ
まずはアプリの画面です。
先ほど挙げた指定項目を入力・選択して、送りたいメッセージをkey-value形式で入力してPublishボタンを押せばAWS IoTに接続・Publishするようになっています。
メッセージ内容
key-value形式で入力されたメッセージは、シンプルなJSON形式で送信されます。なお、時間(time)を自動で付加するようになっています。
{
"time": "2016-02-12T09:12:55+09:00",
"temperature": "16",
"humidity": "80"
}
パッケージの構成
今回利用したライブラリは「aws-iot-device-sdk」を中心に次のようなものになります。
Node.jsのライブラリ
- aws-iot-device-sdk(AWS IoTの公式JS-SDK)
- moment(時間操作)
クライアントJavaScriptのライブラリ
- jQuery(DOM操作)
- Bootstrap(デザインフレームワーク)
- SweetAlert(アラート表示)
- Spin.js(スピナー表示)
まとめ・所感
今回これを作った最大の動機は、冒頭にも少し触れましたが、AWS IoTへのMQTT Publishを「より汎用的で、敷居をさげて」試せるようにすることでした。PCからUIで実行できるので、ちょっと試したいという時や、切り分けの時に役立てそうです。
IoTは技術的にも幅広い知識を要する事業分野で、なかでも現場・ハードの部分はまだまだみんなが簡単に扱えるとは言い難い部分があると思いますが、IoTのデバイス接続も扱いやすくなってきていることを体感頂ければと思います。
Electronでのアプリ作成については、どのくらい時間を要するかと思っていましたが、始めて約5時間くらいでここまで来れました。Qiitaにも沢山記事が出てきていますし、普段kintoneのカスタマイズでクライアントサイドのJavaScriptは比較的よく触っているので、あまりつまずくポイントはありませんでした。やってて楽しかったですし、また何か作ると思います。
【補足】Developer Summit 2016 「kintoneで実践するIoTハンズオン」
IoTを現場で実践する場合もそうですが、ハンズオン・勉強会でIoTを扱う際にトラブルになりやすいのもこの部分です。
ということで、2016年2月18、19日開催のデブサで予定されているkintoneとAWS IoT/Lambdaの連携ハンズオンのタイミングで準備してみました。今回作成したツールもテストやハードトラブル時に利用したいと思っています。
kintoneは勿論のこと、AWS IoTやLambdaでIoTやりたいという方は是非お申込み頂ければと思います!