4
0

More than 3 years have passed since last update.

AtomLiteとIFTTTとスマートプラグで電源の一時停止(スマートアクアリウム)

Last updated at Posted at 2020-08-11

はじめに

今回は Atom Lite と IFTTT とスマートプラグを使い電源の一時停止を行いたいと思います。

今回の動作確認の動画になります。
AtomLite.jpg

給餌時に海水水槽の水流ポンプ停止

2019年11月から60cm × 30cm × 36cmのオーバーフロー水槽で海水水槽を始めました。
海水水槽では海水魚やサンゴを育てています。癒されますよね(●´ω`●)

海水水槽なので水流ポンプをつけていますが、給餌の時には水流ポンプとメインポンプを止めています。
そうすると食事投入後に暫くたってから水流ポンプとメインポンプを再始動しないといけないのですが、たまに忘れてしまいます。

スマートプラグとアレクサで電源制御

そこで以前はスマートプラグとアレクサを使い、給餌時に水流ポンプとメインポンプの再始動を行うようにしていました。

アレクサ.jpg

詳しくはこの記事に書いています。
【海水水槽】スマートアクアリウム(スマートプラグで一定時間電源制御)

アレクサが反応しないときがある

私の活舌が悪いせいか、何回か言い直さないとアレクサが正しく反応しない時がたまにあります。
なのでそれを改善するために、今回は水流ポンプとメインポンプの2台を、物理スイッチを押せば一時停止するようにしてみたいと思います。

AtomLiteとIFTTTとスマートプラグで電源の一時停止の設定方法

今回使用する Atom Lite とスマートプラグについて

スマートプラグ設定

TP-Linkのスマートプラグを使うのでKasaアプリで2台同時にONとOFFが出来るシーンを追加します。

シーン画面で+ボタンを押下

IMG_0994.png

カスタムを押下

IMG_0995.png

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

IMG_0997.png

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

IMG_0999.png

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

IMG_1001.png

シーン登録完了!

IMG_1002.png

IFTTTの設定

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

IFTTT アプリを起動し、GET MORE を押下

IMG_1006.png

Create を押下

IMG_1007.png

This を押下

IMG_1008.png

Webhooks を押下

IMG_1009.png

Receive a web request を押下

IMG_1010.png

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

IMG_1011.png

Thatを押下

IMG_1012.png

TP-Link Kasa を押下

IMG_1013.png

下へスクロール

IMG_1014.png

Activate scene を押下

IMG_1015.png

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

IMG_1018.png

Receve ~ をONにし、Finish を押下

IMG_1020.png

登録完了!

IMG_1021.png

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で書き込み

→ボタンを押下し、「ボードへの書き込みが完了しました。」と出れば終了
2020-08-11 (3).png

動作確認

動作確認は、WiFi環境のいい場所で試してみてください。
WiFiがつながるとAtom Liteのランプが緑色に点灯します。

ボタンを押下すると水流とメインポンプが停止し、IFTTTの通知が来ます。
一定時間停止後、水流とメインポンプが再開し、IFTTTの通知が来ます。

※ うまく動作しない場合は横についているボタンを押下し、リセットしてみてください。

【海水水槽】海水水槽IOT化(スマートプラグとAtom Liteで水流管理)
AtomLite.jpg

参考記事

まとめ

以前の記事と合わせるためスマートプラグはTP-Linkで記事を書きましたが、Kasaアプリ単体では一時停止の設定が出来ませんでした。

Smart Lifeアプリを使うスマートプラグの場合は自動化という設定ができ、アプリ内で「停止」→「5分待つ」→「再開」という設定もできたため、こちらを使用すれば、プログラムでのWaitや再開リクエストが必要無いのでリスクは減ると思います。
【Amazon Alexa認定】HYSIRY WiFi スマートプラグ Alexa/Google Home/IFTTT 対応 JP1

しばらくは記事の環境で、使い勝手を試してみたいと思います(●´ω`●)

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0