[ポエム]電子工作がLチカで止まっている人のためのスマートホームのススメ

# 概要

(Arduino等を使用した)電子工作がLチカで止まっていた自分がどのようにして電子工作を進めてきたかについて
同じような人のために自分の考えをまとめるついでにポエムとして公開してみるテスト。

# 目的意識がない

自分はなんとなく面白そうと思ってAmazonでArduino UNO互換機といろんな電子部品がセットになってるキットを買いました。
電子工作といえばまず最初はLチカということでLチカをやりました。
Lチカ自体は概ねどこかのサイトや書籍に書かれている手順通りにブレッドボードに部品を刺し、
専用のIDEを入れて簡易なプログラミングをすれば実装するのは難しくないはずです。
しかし、Lチカを実装した率直な感想は、

__「LEDが点滅した・・・だから何？」__

でした。

# スマートホームについて

話は変わってスマートホームの話です。
ここでは対応の家電や対応の機器を使ってセンサから情報を収集したり、
スマホやNestなんかのスマートホームハブから家電の制御をすることを指すことにします。
最初は機器を探しては購入し、楽しくやっていましたが、いくつか問題があることに気づきます。

1. いろいろ思いつくとかゆいところに手が届かない、やりたいことを実現する機器が高かったりそもそも売っていないことが多くなる
1. 機器を作ったメーカーごとに専用のアプリをインストールする必要がある
1. クラウド経由で制御する機器の場合、サーバーやインフラの都合で動かないことがある
1. サービス終了で購入した機器が無駄になる可能性がある

残念ながら、3.と4.は単に今後そうなる可能性があるという話ではなく、もう実際に起こった話になります。

- 3.の事例 クラウド経由で動作するスマートホーム機器がインフラの障害で一時動かなくなった話。

https://biz-journal.jp/2020/11/post_193058.html

- 4.の事例 サービス終了で(クラウド経由で動作する機能が)いずれ使えなくなる話。

https://japanese.engadget.com/jp-2019-07-22-mouse-2022-6-30.html?guccounter=1&guce_referrer=aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS8&guce_referrer_sig=AQAAANNT57cECpwtIJoPtPeZdUJVozi27ZNzYpnRZ1UpmV1isgRqKEc56A31cFPwiW2nWdoaC8y6uIoq0BQ0QcvJMTaZXR4I0dUVNzGFMdk_lJQCY9zRjYI-V3u1wDyanSd1BUqlgaEQszP1iVNj888vJPQx1iRxue53j9s70a7D4mvA

https://www.mouse-jp.co.jp/contents/archive/products/smarthome.pdf

# オープンなスマートホームハブ

最近になってようやく「Matter」といった統一規格が作られれようとしていますが、
スマートホーム機器を購入する場合、専用のアプリを入れる必要があったりGoogle HomeやAlexa等に対応しているのか
確認する必要があります。

https://www.phileweb.com/news/mobile_pc/202105/13/2380.html

これでは専用のアプリがメーカーごとに増えてしまうし、統一しようとすると使える機器が限られてしまったりするので
どうにかできないかと思っていました。

そこで見つけたのが「Home Assistant」です。

https://www.home-assistant.io/

これは、Python製のオープンソーススマートホームハブで
パソコンやRaspberry PIなどのシングルボードコンピュータにインストールすると、
インストールしたPC経由でスマートホーム機器等の制御ができるソフトウェアです。

特徴としては対応する機器であれば簡単な設定で制御できるようになるし、
対応していない機器でもWeb API等HTTP経由で制御できるならなんとでもなる応用範囲の広さでしょうか。
HomeAssistant公式でどんな機器に対応しているのかは以下で確認できます。

https://www.home-assistant.io/integrations/

ちなみに、外部から接続するためのトンネルを開ける必要がありますが、Google HomeやAlexaと連携して、
音声で操作できるようにすることもできます。

# 電子工作して自分で作ろう

だんだんかゆいところに手が届かない部分に不満を感じていました。

具体的には自分がどの時間に部屋を出たり戻ってきたりしたかを記録に残してみたいと思いました、
しかし当時はそんな用途に使えるよさげな人感センサがありませんでした(今は2000円台でいくつかありますが)
Nature Remo3には人感センサがついていましたが一定時間内に一度でも通ったかどうかを判定する仕様のようで、
使い物になりませんでした。

そこで、ふと前に購入した電子工作キットを思い出しました。
その中に超音波距離センサ(HC-SR04)が入っていました。

https://akizukidenshi.com/catalog/g/gM-11009/

精度はそれほど必要ないので、これで距離を測れば通ったことがリアルタイムで検知できるのではと思いつきました。

超音波距離センサはキットに入ってるくらいですから電子工作ではよく使われる部品のようで、
ググれば配線の仕方やプログラムの仕方はいくらでも見つかりました。

# M5StackというかM5Atom Liteとの出会い

超音波距離センサを使った簡易な人感センサは出来上がりましたが、
これを前述のHome Assistantで制御したいと考えました。
HomeAssistantではいつOn/Offになったのかを記録を取ってくれる機能があったことと、
将来的には人感センサを基に家電を制御したいとも思っていたからです。

ArduinoとPCをUSBケーブルで接続すれば実現できなくはないのですが、
Wifiなんかで通信できれば長いUSBケーブルを用意する必要がなくなるので
ArduinoでWifi通信する方法はないかと考えました。
(結局電源ケーブルは必要というオチがつきましたが…)

そこでググっていた時に見つけたのがM5Stackというものでした。

https://m5stack.com/

誤解を恐れずにざっくり説明すると
Arduinoっぽく開発できる(互換ではない)上にWifiやBluetoothにも対応してしかも安価なESP32というマイコンがあり、
ESP32をケースに収めGPIOや外部機器用のポートと何かしらの(製品によって違う)入出力装置をつけたのがM5Stackです。

先程の用途では液晶ディスプレイとかはいらないので、
LED1個・ボタン1個だけのM5Atom Liteがよさそうということになりました。
入出力装置が最低限なので筐体が小さい上に安価です。

https://www.switch-science.com/catalog/6262/

M5Atom Lite内でWebサーバーが建てられるので、Home Assistantに定期的(30秒)にアクセスしてもらい、
その時に感知していれば1、していなければ0といった値を収めたJSONを返すサーバーを作りました。

ちなみに今はHome Assistantだけで細かいロジックを作るのは面倒そうなので、
Node-Redと連携して複雑な処理はNode-Redを経由して処理していたりします。

# 自分で作るメリット

スマートホームの便利さを理解していれば、
これを自分の状況や実態に応じた形に制作・カスタマイズできるのならば
さらに便利になることは間違いないと思います。

これが電子工作で実現可能ならば停滞していた電子工作を進める大きなモチベーションになるはずです。
センサモジュールの選定から配線方法、制御方法は基本的にすべてネットで調べることになるので検索力も身につきます。