はじめに
家のIoTデバイスを増やしていくと、操作の手数のバリエーションは増えていく。テレビをスマホから操作できる、照明をスマホから操作できる、ルーターリセットもスマホから・・・何かしらトリガーするためには毎度スマホを取り出してWebブラウザを開いて使う必要があり、便利なようで面倒で不便と感じることが多々あったので、死蔵していたM5Stack Core2を使ってUI付きのAPIクライアントを構えることにした。
つくったもの
APIリストから任意の登録済みのコマンドをトリガーできる
工夫点
- 触覚フィードバック
Core2は画面が小さく、ボタンも静電タッチとなるので、押したか押してないかが分かりにくい。コマンド実行が通った時には内蔵バイブレーションモーターで触覚フィードバックを返すようにして、応答を分かりやすくした。 - ステータス
エッジデバイスあるある、焼かれたソフトがどのビルドかわからなくなるので、Git CommitハッシュSHAを表示させた。UIFlowのAPIで色んな情報が拾えることが分かるので、意味もなく電池SOC%など表示させておいた。 - APIリスト
APIは今後抜き差しが発生するはずなので、apis.jsonで管理しやすくした。
構成
アプリ内部の構成
使用するデバイスはM5Stack Core2なのでUIFlow前提の設計になる。VSCode拡張機能のPlatformIOはうまく動作しなかったので、CLI版を使った。main.cppにモノリシックに書いていくと大変なことになったので、メインループだけメイン関数で書いて、部品ごとに分離してUIFlow APIを直接呼ばない構成にした。
おわりに
UIFlowとPlatformIOはどうしてもとっつきずらく、デバイスも買って少し遊んだきり死蔵してしまっていたが、コーディングエージェントのおかげで簡単に試せるようになった。実デバイスであろうと、コンソール出力で文字列を出させるようにすることで、実機テスト環境も構築できた。COM通信リセット->ビルド->テストの一連のプロセスをスクリプト化させた。今回のお試しでは、実機に直接APIリストを焼きこむ構成にしてしまったので、家庭内のAPI基盤からAPIリストを配信する仕組みにするなど、管理のメンテナンス性向上に取り組みたい。
