GoogleHomeMini × ESP32 で照明ON

この記事は過去に運用していたブログから移行したものです

はじまり
お世話になっているものづくり学縁つばめ、杉山さんより
施設の改造&アップデートの報酬として
最近ホットなGoogleHomeMiniをいただいた。
 
調べると、IFTTT経由でマイコンを制御していた例がいくつか出てきたので、
自分のおうちハックに使ってみたいと思う。
最初は簡単どころで部屋の照明ON,OFFをしてみる。
 
システムを作る
今回はmgo-tec電子工作さんの
Google Home Mini を使って、声で ESP32 の LED を光らせてみた
という記事を参考にアレンジしながらやっていく。
 
流れは以下のような感じ。
 
GoogleHomeMiniにコマンドを入力
GoogleAssistantサーバー
IFTTTサーバーで処理
WebHookサーバー
Blynkサーバー
ESP32
 
だいたい元の通りなのだけれど、今回は照明のON,OFFだけなので
IFTTTアップレットを2つにし、片方にを送る機能
もう片方に255を送る機能だけを持つように変更した。
 
アップレット増やせば、2とか3とかも送れる。
声で「100」とか入力して送るのはまさに元のソース。
あとはそのBlynkバーチャルピンの値をESP32が判断すればいろんなことに使えるだろう。
 
元のブログが素晴らしすぎて、あまりメモしておくことがない。
 
ハード構成を考える
この家は築40年程度の米屋で、2階が居住スペースになっている。
ぼくの部屋はもともと3部屋だったところを
2部屋にリフォームしてできた部屋。
 
つり下げ式の蛍光灯(ペンダントライト)がひとつで、
部屋の入り口と、ベットの陰の二箇所にスイッチがある。
3路スイッチで切り替えながら照明のON,OFFをしているイメージ。
 
最初は100Vリレーを考えた。マイコンから簡単に制御でき、そう高価な部品でもない。
でも、今あるスイッチを生かすためには”3路にする必要=2つリレーが必要”
それに、もしマイコンが壊れれば、リレー2つともOFF状態になって、
もう一つのスイッチでも部屋の明かりがつけられなくなる。
その時用の仕組みや保護回路入れたりなんだりしていると、
GoogleHomeの掴みにしては複雑かな、とも思えてきた。
 
ということで、原始的にSG90サーボで今のスイッチを押させることにした。
ここが決まればあとは早い。マイコンは今手持ちののあるESP32で決定。
ネットワークの接続確認用LEDと、サーボ動作時に点灯するLED。その保護抵抗。
その辺にあったもの。
 
 <ちょっと一覧>
・LED保護抵抗 赤紫茶金 270Ω ×2 http://akizukidenshi.com/catalog/g/gR-16271/
作る

作る。スイッチの押し具合を測って
角度を何度にするか決めて、
サーボに5Vピン、GND、
PWM用にIO12を接続。
IO27に保護抵抗を入れて白色LED。IO25に同じく保護抵抗を入れてピンクLED。
ハードは以上。
とりあえずだが、こんな感じの待機状態になった。
ネットワークに接続されていることを示すピンクのLEDが付いている。
 
コードは、こちら。

弱点
このプログラムには弱点があります。
 
照明が消えてる時「消して」で付きます。逆もまたあります。
部屋の明かりが3路のため、面倒なことになっていて対処しきれていません。
改良しなくてはです。