chakokuのブログ(rev4)

テック・コミック・DTM・・・ごくまれにチャリ

AWS IoT ボタンを買った

かつてはダッシュボタン?とよばれていたAWS IoT ボタンを買った(正式名は、AWS IoT Enterprise Button)。なぜ買ったか?つるっとした IoTボタンを押してみたかったから。
ESP32でもMQTT喋れるのでAWS IoTボタンでなくてもいいのだけど、、ESP32はバラック(ブレッドボードとジャンパー)で組んでるのでケーブルとかむき出しで、押ボタンSWも角張っていて手が痛い。綺麗にパッケージされたつるっとした工業製品に憧れ、手触りよさそうな高品質プロダクトの押しボタンスイッチを押してみたかった。
f:id:chakoku:20191214125609p:plain
使ってみた結論から言うと、、デザインはシンプルでいいけど、手触りがいいかというと、ボタンの裏に粘着シートがあったり製品は角ばっていたりで手触り感はよくないです。全然つるっとしていない。
f:id:chakoku:20191214125625p:plain
手触りいまいちなのですでに飽きはじめたのだが、、AWS IoTのサービス内でこのボタンが見えないことが気になりだした。AWS IoTにthingsとして登録もできないようだ(自分の理解の範囲では)。AWSにはAWS IoTと呼ばれる汎用IoTデバイス向けのサービス体系があるけど、どうもAWS IoTボタンは、AWS IoTには入れてもらえず、AWS IoT 1-Clickというサービス内で使う設計になっているようだ。
AWS IoTの接続ログにはMQTT通信として出てくるので実装上はAWS IoTを使っているらしい。AWS IoT Enterprise Buttonは、デバイスに登録すべき証明書の設定とかややこしい手順をぜんぶすっ飛ばして簡単に使えるように設計され、AWS IoT 1-Clickというサービス体系に隔離されているような印象。古いAWSブログには、AWS IoTにAWS IoTボタンを登録する手順も紹介されているが、その手順が今のEnterprise Buttonで有効なのかどうかは不明(やはり、それは古い世代のButtonのようだ。現在販売されているEnterprise Buttonでは任意の証明書を入れられないので多分不可能)。AWS IoTボタンで仕事するわけではないので、これ以上は調べる気もなし。。

AWS IoT 1-Clickというサービス体系では、AWS IoTボタンのクリックにより、メール配信か、SMS(Short Message Service)による通知か、Lambda関数の呼び出しか?のどれかと連携するように選択できる。Lambdaを呼び出せば、関数経由でAWSの各種サービスと連携できる、、という仕掛けのようである。AWS IoT 1-Clickの管理画面には、押された回数等がグラフ化される仕組みもあって、AWS IoT に来ずともAWS IoT 1-Clickの世界で閉じて使えるよということなんでしょう。個人的には、AWS IoT 1-Clickでデバイス登録すればAWS IoTのThingsに登録したボタンが出現して欲しい気がするけど。。まぁそういう設計ではないようで。。

マニュアルには以下と書かれている
AWS IoT 1-Click は、特定のアクションを実行する AWS Lambda 関数をシンプルなデバイスで簡単にトリガーできるようにするサービスです」
だから、、AWS IoTボタンを AWS IoT 1-Clickに登録するということは、Lambda関数への接続を簡単にすることであって、AWS IoTで使えるようにするというわけではないと。。ただ、、AWS IoTで接続ログを見るとAWS IoTボタンの接続が記録されており、 AWS IoT Coreを通過しているということは見せている。。

ちょっと調べた限りでは、AWS IoTボタンは大人しく、AWS IoT 1-Click配下で使いなさないということのようだ。。


ご参考URL
公式ドキュメント
https://docs.aws.amazon.com/iot-1-click/index.html

以下の記事にはButtonをAWS IoTの管理画面で登録する手順が紹介されている。2年前の記事だけど
Introducing the AWS IoT Button Enterprise Program | AWS News Blog

FAQより
AWS IoT Button Enterprise Program は提供を終了しました」
引用元:よくある質問 - AWS IoT 1-Click | AWS

追記
現在販売されている、AWS IoT Buttonと、以下のサイトで説明されているAWS IoTボタン(プログラミング可能なDash Button)は別アーキテクチャではないかという結論になった(自分の中で)。
https://aws.amazon.com/jp/iotbutton/

というのも、、上記サイトでは、AWS IoT Core証明書を使えと書かれているけど、現在販売中のAWS IoT Button(製品のプリントはIoT Wnterprise)では証明書の登録も不要になっているから。AWS IoTから見えるデバイスとしてAWS Buttonを使いたければ、古い世代のダッシュボタンでないとだめなのではと思われる。

まとめると、、AWS IoT Enterprise Buttonは、AWS IoT 1-Clickサービスに接続するだけのデバイスである。汎用的なIoTデバイスを接続できるAWS IoTサービスには接続できない(自分の理解の範囲)。AWS IoT 1-ClickサービスではLambdaが使えるようになっているので、AWSの各種サービスと接続したければLambdaの関数で実装しなさいということだろう。

手触りいまいちで、自由度なくガッチリ特定のサービスに組み込まれたボタンなので、届いて半日で飽きてきたのだが、、2500円も出して買ったIoTボタンなので、、何かに使わないともったいない。普段はKindle無料マンガをひたすら読んでいて*1、人生の時間の大半をマンガで費やしていると思っており、一日どれぐらいの時間をマンガに消費しているのか、IoTボタンでマンガタイムの開始と終了を測ってみるとか。。]

■追記
作ってみたいもの・・・IoT Buttonを一度押すー>AlexaかGoogleHomeが「まんが読み始めました」と発話する。もう一度押すー>「マンガ読み終わりました。お疲れ様(ここは皮肉)」と発話する。一日の浪費時間が集計されて、週の終わりにメール等で報告される。

GoogleHomeに喋らせる方法(google-home-notifier)
Google Home開発入門 / google-home-notifier解説 - Qiita

Alexaに喋らせるには、reminder APIを叩いてイベントを登録して、数秒後にリマンドしてもらう実装が楽そうである。

よく考えると、普段全く使っていないAIスピーカを常設するとは考えられないので、、IoT Buttonを押したら「マンガタイム開始/終了」といったメッセージをLINEにPUSHで送ることにした。

あるいは、、ESP32+音声合成LSI音声合成LSI ATP3012F6-PU)で喋らせるか。。

*1:今は別件で謹慎中