はじめに
今回は Atom Lite と IFTTT とスマートプラグを使い電源の一時停止を行いたいと思います。
今回の動作確認の動画になります。
給餌時に海水水槽の水流ポンプ停止
2019年11月から60cm × 30cm × 36cmのオーバーフロー水槽で海水水槽を始めました。
海水水槽では海水魚やサンゴを育てています。癒されますよね(●´ω`●)
海水水槽なので水流ポンプをつけていますが、給餌の時には水流ポンプとメインポンプを止めています。
そうすると食事投入後に暫くたってから水流ポンプとメインポンプを再始動しないといけないのですが、たまに忘れてしまいます。
スマートプラグとアレクサで電源制御
そこで以前はスマートプラグとアレクサを使い、給餌時に水流ポンプとメインポンプの再始動を行うようにしていました。
詳しくはこの記事に書いています。
【海水水槽】スマートアクアリウム(スマートプラグで一定時間電源制御)
アレクサが反応しないときがある
私の活舌が悪いせいか、何回か言い直さないとアレクサが正しく反応しない時がたまにあります。
なのでそれを改善するために、今回は水流ポンプとメインポンプの2台を、物理スイッチを押せば一時停止するようにしてみたいと思います。
AtomLiteとIFTTTとスマートプラグで電源の一時停止の設定方法
今回使用する Atom Lite とスマートプラグについて
- ATOM Lite - スイッチサイエンス
- TP-Link WiFiスマートプラグ 2個セット 遠隔操作 Echo シリーズ / Googleホーム / LINE Clova 対応 音声コントロール ハブ不要 3年保証 HS105P2
スマートプラグ設定
TP-Linkのスマートプラグを使うのでKasaアプリで2台同時にONとOFFが出来るシーンを追加します。
シーン画面で+ボタンを押下

カスタムを押下

メインポンプと水流ポンプをONにし、次へを押下

好きなアイコンを選択し、次へを押下

シーンの名前を入力し、保存を押下

シーン登録完了!

IFTTTの設定
Atom Liteから直接TP-Link KasaアプリのAPIを呼ぶことも可能そうでしたが、少し面倒そうなのでIFTTTを使いAPIを呼ぶように設定しました。
IFTTT アプリを起動し、GET MORE を押下

Create を押下

This を押下

Webhooks を押下

Receive a web request を押下

Event Name を入力し、 Create trigger を押下

Thatを押下

TP-Link Kasa を押下

下へスクロール

Activate scene を押下

作成したシーンを選択し、 Create action を押下

Receve ~ をONにし、Finish を押下

登録完了!

Atom Liteの設定
Atom Liteの初期設定が済んでいない場合は先に初期設定を行います。
ATOM Liteでできること 〜ATOM Liteの使い方
私はここを参考にして設定しました。
Atom Lite用の電源一時停止プログラムを作成
IFTTTで設定したエンドポイント「水流とポンプON」「水流とポンプOFF」にリクエストを投げるプログラムを作ります。
# include <M5Atom.h>
# include <WiFi.h>
# include <HTTPClient.h>
const char* ssid = "ssidxxxxxx";
const char* password = "passxxxxxx";
const char* wavepumpOn = "https://maker.ifttt.com/trigger/wavepump_on/with/key/keyxxxxxxxxxxxxxxx";
const char* wavepumpOff = "https://maker.ifttt.com/trigger/wavepump_off/with/key/keyxxxxxxxxxxxxxxx";
void httpRequest(const char* url) {
HTTPClient http;
http.begin(url);
http.GET();
Serial.println(http.getString());
http.end();
}
void setup() {
M5.begin(true, false, true);
}
void loop() {
if (WiFi.status() == WL_CONNECTED) {
if (M5.Btn.wasPressed()) {
httpRequest(wavepumpOff);
delay(5 * 60000); // Wait 5 minutes
httpRequest(wavepumpOn);
}
delay(50);
M5.update();
} else {
M5.dis.drawpix(0, 0x001000);
WiFi.begin(ssid, password);
int wifiReconnectCount = 0;
while (WiFi.status() != WL_CONNECTED) {
if (wifiReconnectCount >= 300) { ESP.restart(); }
wifiReconnectCount++;
delay(100);
}
Serial.println(WiFi.localIP());
M5.dis.drawpix(0, 0x100000);
}
}
※ wifiルータのssidとpasswordとエンドポイントは各自の環境に合わせて変更してください。
※ 上記プログラムでは、停止時間を仮に5分にしています。
一時停止プログラムをArduino IDEで書き込み
→ボタンを押下し、「ボードへの書き込みが完了しました。」と出れば終了
動作確認
動作確認は、WiFi環境のいい場所で試してみてください。
WiFiがつながるとAtom Liteのランプが緑色に点灯します。
ボタンを押下すると水流とメインポンプが停止し、IFTTTの通知が来ます。
一定時間停止後、水流とメインポンプが再開し、IFTTTの通知が来ます。
※ うまく動作しない場合は横についているボタンを押下し、リセットしてみてください。
【海水水槽】海水水槽IOT化(スマートプラグとAtom Liteで水流管理)
参考記事
まとめ
以前の記事と合わせるためスマートプラグはTP-Linkで記事を書きましたが、Kasaアプリ単体では一時停止の設定が出来ませんでした。
Smart Lifeアプリを使うスマートプラグの場合は自動化という設定ができ、アプリ内で「停止」→「5分待つ」→「再開」という設定もできたため、こちらを使用すれば、プログラムでのWaitや再開リクエストが必要無いのでリスクは減ると思います。
【Amazon Alexa認定】HYSIRY WiFi スマートプラグ Alexa/Google Home/IFTTT 対応 JP1
しばらくは記事の環境で、使い勝手を試してみたいと思います(●´ω`●)