ACコンセントの制御方法をいろいろと

2021/12/17に公開

ACコンセントのオンオフをプログラムから制御できると家電を動作させたり、
機材の検証など、いろいろと役に立つことがあります。
いくつか制御方法について記載します。

紹介する方法

  • [1]IFTTTを経由して、スマートプラグを制御
  • [2]PythonコードでスマートプラグTapo P105を制御
  • [3]リレーモジュールを使って、連動タップを制御

↓といった感じです。(個人の感想)

方法 手軽さ コスト 応答 インターネット 備考
[1] 必要 -
[2] 必要 -
[3] 不要 ネットワークが不要なのが大きい

[1]IFTTTを経由して、スマートプラグを制御

IFTTT対応のスマートプラグを購入することで、IFTTTのサービスをつなげることができます。

  • IFTTT対応のスマートプラグ例
    • Meross スマートプラグ

https://www.amazon.co.jp/WIFIスマートプラグ-スマートコンセント-直差しコンセント-音声コントロール-日本語の説明書付き(1個入り)/dp/B07BK1GG2Q/ref=sr_1_2_sspa?keywords=merrosスマートプラグ&qid=1639717636&smid=A7JGAOVGD08KN&sprefix=merro%2Caps%2C166&sr=8-2-spons&psc=1&spLa=ZW5jcnlwdGVkUXVhbGlmaWVyPUExMUJFUTY3N1FYU1YxJmVuY3J5cHRlZElkPUEwMTM4ODU1MlFEMFFUS09YVDU4RyZlbmNyeXB0ZWRBZElkPUEzOU5aVTNNVzI5SVIyJndpZGdldE5hbWU9c3BfYXRmJmFjdGlvbj1jbGlja1JlZGlyZWN0JmRvTm90TG9nQ2xpY2s9dHJ1ZQ==

  • IFTTTの使い方
    • 以前投稿した下記の記事(ライト制御)に記載してありますので、そちらを参照ください

https://zenn.dev/kotaproj/articles/1cd389cf1b7cac#ライト制御

  • Merossスマートプラグを使用する場合、IFTTT-action(Turn on, Turn off)を指定して制御できます。
    • Image from Gyazo

[2]PythonコードでスマートプラグTapo P105を制御

Tapo P105を使った方法です。

https://www.amazon.co.jp/直差しコンセント-音声コントロール-サーキュレーター-Tapo-P105/dp/B08L518WBM/ref=sr_1_10?keywords=tp-link&qid=1639718816&sprefix=tp%2Caps%2C183&sr=8-10&th=1

本製品は、IFTTT対応していません。

ラズベリーパイから、制御する例で記載します。

事前準備

Tapo P105製品を使用する場合、スマートフォンアプリのTapoに登録する必要があります。
その際、アカウント(メールアドレスとパスワード)を登録するのですが、
制御時このアカウント情報が必要となります。

ラズベリーパイからの制御

環境の構築

必要なモジュールをインストールします。

$ python3 -m venv env
$ source env/bin/activate
(env) $ pip install requests
(env) $ pip install pycryptodome
(env) $ pip install pkcs7

また、必要なソースコードをレポジトリから取得します。

https://github.com/2729-gumi/TapoP100.git

(env) $ git clone https://github.com/2729-gumi/TapoP100.git
(env) $ mv TapoP100/PyP100 .

制御用のコード

同レポジトリに公開されているコードが以下となります。
IPアドレス、メールアドレス、パスワードはご自身の環境に合わせて修正してください。
下記のコードでオンオフが制御できます。

from PyP100 import PyP100

p105 = PyP100.P100("192.168.X.X", "email@gmail.com", "Password123") # Creating a P105 plug object

p105.handshake() # Creates the cookies required for further methods 
p105.login() # Sends credentials to the plug and creates AES Key and IV for further methods
p105.getMacAddress() # Get MacAddress and Set terminalUUID

p105.turnOn() # Sends the turn on request
p105.turnOff() # Sends the turn off request
p105.getDeviceInfo() # Returns dict with all the device info

[3]リレーモジュールを使って、連動タップを制御

サンワサプライの連動タップを使用することで、ACのオンオフを制御することができます。

製品のホームページは以下となります。

https://www.sanwa.co.jp/product/syohin.asp?code=TAP-RE10SPUN

ラズベリーパイから、制御する例で記載します。

🔧機材一覧

no 部品名 個数 備考
1 ラズベリーパイ 1 今回は4Bで確認
2 リレーモジュール 1 Amazon
3 USBケーブル 0.4m TK-USB1 1 Amazon
4 連動タップ 1 AmazonサンワサプライTAP-RE10SPUN
5 ジャンパー線 適量 -

接続図

Image from Gyazo

ピンの接続

ラズパイ側 - リレーモジュール

Pin リレーモジュール USBケーブル 備考
5V DC+, COM -
GND DC- GND(黒) -
BCM21 IN 緑ケーブル
- NO 5V(赤) -
- - USBコネクタ 電動タップと接続

環境の構築

apt

pigpioライブラリは、Raspberry PiのGPIOを制御するためのライブラリです。
以下のコマンドは、はじめてインストールする場合のみ必要です。

$ sudo apt install pigpio
$ sudo service pigpiod start
$ sudo systemctl enable pigpiod.service

pip

Pythonに関するモジュールをインストールします。

$ python3 -m venv env
$ source env/bin/activate
(env) $ pip install pigpio
(env) $ pip install gpiozero

コード

ACを3秒オンした後に、オフします。

pump.py
from gpiozero import LED
from gpiozero.pins.pigpio import PiGPIOFactory
from time import sleep

# relay switchのピン
PIN_RELAY_SWITCH = 21

def main():
    # ピン設定
    factory = PiGPIOFactory()
    p = LED(PIN_RELAY_SWITCH, pin_factory=factory)

    # ACの制御
    print("relay on - AC:ON")
    p.on()
    sleep(3.0)
    print("relay off - AC:OFF")
    p.off()
    sleep(1.0)

if __name__ == "__main__":
    main()

実行手順

(env) $ python pump.py
relay on - AC:ON
relay off - AC:OFF

連動タップがオンオフされます。

さいごに

趣味や業務で、オンオフをしたいことが結構遭遇します。
単純な操作を自動化することにもつながり、どの方法も重宝しています。

ラズベリーパイの使い方を↓にまとめてありますので、興味があれば見てください。

https://zenn.dev/kotaproj/books/raspberrypi-tips

GitHubで編集を提案

Discussion