茱萸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

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

関連記事

【祝入学】WSLでC言語のお勉強を始める

WindowsでC言語をお勉強をしたい人におすすめの方法です。

AVR32を使う

Atmel製のマイコン「AVR32」を使ってみた感想です。

LPC11U35を汎用ARMデバッガとして使う

秋月で売っているLPC11U35を汎用ARMデバッガとして使いたいと思います。

【Ubuntu】【上級者向け】EFIシステムパーティションを作成する

「空っぽのSSD・HDD・USBメモリにUbuntuをインストールしたい!」といった人に向けて、空っぽのSSD・HDD・USBメモリにEFIシステムパーティションを作成する方法を説明します。

記事の先頭に目次を置く

Blogの記事の先頭に自動的に目次を生成するにはどうすれば良いか?