【海水水槽】スマートアクアリウム(Atom Lite とスマートプラグで一定時間電源制御)
はじめに
今回は Atom Lite とスマートプラグを使い電源の一時停止を行いたいと思います。
今回の動作確認の動画になります。
※ この動画ではテストのため10秒間だけ一時停止しています。
使用したAtom Liteとスマートプラグ(TP-Link HS105)
TP-Link WiFiスマートプラグ 2個セット 遠隔操作 Echo シリーズ / Googleホーム / LINE Clova 対応 音声コントロール ハブ不要 3年保証 HS105P2
- 発売日: 2018/08/09
- メディア: Personal Computers
給餌時に水流ポンプ停止
海水水槽なので水流ポンプをつけていますが、給餌の時には水流ポンプとメインポンプを止めています。 そうすると食事投入後に暫くたってから水流ポンプとメインポンプを再始動しないといけないのですが、たまに忘れてしまいます。
スマートプラグとアレクサで電源制御
そこで以前はスマートプラグとアレクサを使い、給餌時に水流ポンプとメインポンプの再始動を行うようにしていました。
詳しくは前回の記事に書いています。
【海水水槽】スマートアクアリウム(スマートプラグで一定時間電源制御)
アレクサが反応しないときがある
私の活舌が悪いせいか、何回か言い直さないとアレクサが正しく反応しない時がたまにあります。
なのでそれを改善するために、今回は水流ポンプとメインポンプの2台を、物理スイッチを押せば一時停止するようにしてみたいと思います。
スマートプラグ設定
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
- 発売日: 2019/07/13
- メディア: Tools & Hardware
【海水水槽】スマートアクアリウム(スマートプラグで一定時間電源制御)
海水水槽
2019年11月から60cm × 30cm × 36cmのオーバーフロー水槽で海水水槽を始めました。 海水水槽では海水魚やサンゴを育てています。癒されますよね(●´ω`●)
給餌時に水流ポンプ停止
海水水槽なので水流ポンプをつけていますが、給餌の時には水流ポンプを止めています。 そうすると食事投入後に暫くたってから水流ポンプを再始動しないといけないのですが、たまに忘れてしまいます。
水流ポンプ停止後に自動で再始動できないか?
電源を停止した後一定時間後に再始動できる商品を探してみたのですが、24時間中の決まった時間にON・OFF出来る商品は多かったのですが、一定時間だけ止めるという商品は見当たりませんでした。探し方が悪いだけな気もしますが(´・ω・`)
スマートプラグを使えば一定時間停止できないか?
tp-linkのHS105というスマートプラグを持っていたので、それで何とかできないかと探してみたところ、いくつか方法を見つけました。
TP-Link WiFiスマートプラグ 2個セット 遠隔操作 Echo シリーズ / Googleホーム / LINE Clova 対応 音声コントロール ハブ不要 3年保証 HS105P2
- 発売日: 2018/08/09
- メディア: Personal Computers
【対策案1】スマートプラグのアプリのタイマー使用
スマートプラグ用のKasaアプリの中にタイマー機能があり、5分後に電源ONなどの指定が出来ます。
なので
- 電源OFFにする。
- 5分後タイマーを指定する。
と操作すると電源ONするのを忘れたりはしないようになりますね。
※ スマートプラグさえあれば出来ますが、毎回タイマーを設定するのが少し面倒でした。
【対策案2】スマートプラグ+アレクサ使用
アレクサには定型アクションというのがあり、簡単なプログラムを組めます。
私が持ってるのはアレクサ Echo Show 5になります。
Echo Show 5 (エコーショー5) スマートディスプレイ with Alexa、チャコール
- 発売日: 2019/06/26
- メディア: エレクトロニクス
定型アクション登録
アレクサアプリを開き左上のメニューを開きます。
定型アクションを選択します。
右上の+を選択します。
実行アクションを入力します
「ご飯だよ」と入力しました。
※ 最初は「ごはんだよ」とすべて平仮名で入力したのですが、反応してくれませんでした。
アクションを追加
+ボタンを押下し、
- 水流ポンプ 電源:オフ
- 5分待機する
- 水流ポンプ 電源:オン
という設定をします。
定型アクション実行
「アレクサ、ご飯だよ」
で水流が止まれば成功です!!
※ スマートプラグとアレクサを持っているのなら、この方法が簡単でいい気がします。GoogleHomeでは5分待機という操作は見つかりませんでした。
【海水水槽】海水水槽IOT化(スマートプラグとアレクサで水流管理)
まとめ
これで給餌時に水流ポンプの再始動を忘れることはなくなりました(●´ω`●)
水流ポンプ以外でも、いろいろ流用が出来そうですよね!!