茱萸note

電子工作の備忘録と旅行の記録

Arduino ESP8266 IoT スマートプラグ マイコン 電子工作

ESP8266 で Tp-Link のスマートプラグ『Tapo P105』を直接操作する

投稿日:

Tp-Link のスマートプラグ『Tapo P105』をアプリや IFTTT といった外部サービスを用いずに、ESP8266 から直接操作してみます。


目次


以前、Tp-Link のスマートプラグ『Tapo P105』を外部のクラウドサービスに接続せずに RaspberryPi で直接操作する方法を説明しました。

今回は、ESP8266 を使って、スマートプラグ『Tapo P105』を操作してみたいと思います。

スマートフォンの『Tapo』アプリで『Tapo P105』のセットアップが済んでいるという前提で話を進めます。

RSA 1024bit 秘密鍵・公開鍵を作成

RSA 1024bit 秘密鍵・公開鍵のペアを作成します。どちらも PEM 形式で保存します。

以下は、OpenSSL コマンドで生成する場合のコマンド例です。Windows だとインストールされていないので、インストールするか、WSL で生成するかしてください。

openssl genrsa -out private.pem 1024
openssl rsa -in private.pem -outform PEM -pubout -out public.pem

ESP8266 のプログラム

ボードのバージョンと設定

ESP8266 Board のバージョンは『2.7.4』で確認しています。

参考に、Board の設定は以下のように設定しています。多分『SSL Support : All SSL ciphers (most compatible)』以外の設定項目は重要で無い気がします。

必要なライブラリをインストール・修正

Base64 by Arturo Guadalupi を使いました。ライブラリマネージャからインストールしてください。

また、ESP8266 では既存の Base64 ライブラリと競合するので少々手を加える必要があります。

ライブラリをインストールすると、 Arduino フォルダ内の libraries フォルダに、Base64 というフォルダができます。その中の src フォルダには、Base64.cppBase64.h という2つのファイルがあると思います。

ここに、 agdl_Base64.h というファイルを追加します。

そして、agdl_Base64.h に次のように記述をしてください。

#include "Base64.h"

Arduino スケッチ

以下に Arduino スケッチをアップロードしています。

このスケッチをダウンロードしたら、何箇所か情報を入力する必要があります。

まず、WiFi の SSID とパスワードを書き入れてください。

// WiFi config
const char WIFI_SSID[] = "XXXXXXXXXXXXX";
const char WIFI_PASS[] = "xxxxxxxxxxxxx";

次に、事前に生成しておいた 1024bit RSA 秘密鍵・公開鍵の中身を書き入れます。

const char rsa_private_key[] = R"EOF(
-----BEGIN RSA PRIVATE KEY-----
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-----END RSA PRIVATE KEY-----
)EOF";

const char rsa_public_key[] = R"EOF(
-----BEGIN PUBLIC KEY-----
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXX
-----END PUBLIC KEY-----
)EOF";

最後に、Tp-Link アカウントのメールアドレス・パスワードと、『Tapo P105』の IPアドレス・MACアドレスを書き入れます。

MACアドレスは、XX-XX-XX-XX-XX-XX というように - で繋いで入れてください。

// Tapo P105 config
const char tapo_p105_email[] = "xxxxxxxxxxxxxxxx@yyyyy.zzz";
const char tapo_p105_password[] = "xxxxxxxxxxxxx";
const char tapo_p105_ip_address[] = "192.168.x.x";
const char tapo_p105_mac_address[] = "XX-XX-XX-XX-XX-XX";


以上のスケッチを ESP8266 に書き込んで実行すれば、恐らく期待通りに P105 が ON/OFF するようになると思います。

以前、ESP8266 を AWS IoT・Alexa Smart Home Skill と連携させる方法を解説しましたが、それと組み合わせれば、Tp-Link クラウドを用いずともスマートプラグ『Tapo P105』を Alexa で操作できるようになります。

-電子工作
-, , , , ,


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

ESP8266 で RSA PKCS#1 V1.5 暗号の復号

ESP8266 で RSA 暗号化の方式の一つである RSA PKCS#1 V1.5 、別名 RSAES-PKCS1-v1_5 の暗号を復号する方法です。

WindowsでSerialポートを使う

C++/CLI又はC#を使い、Windows上でSerialポートの制御をしてみます。

【Emacs万歳!】WSLでEmacsを使う

WSLでEmacsを使うことを強要されている人々に向けて書きます。GUI版Emacsを動かす方法も説明します。

Alexa で ESP8266 を制御する ―― プログラムの解説編【Alexa×Arduino その3】

Alexa で ESP8266 を制御するプログラムの解説です。

Raspberry Pi をスマートリモコン化! Alexa で部屋の照明を操作する【Alexa×Raspberry Pi その2】

Raspberry Pi に赤外線LED・赤外線受光モジュールを付けて、Raspberry Pi を学習リモコン・スマートリモコン化します。そして、Raspberry Pi を AWS IoT 連携させて Alexa で部屋の照明を操作します。