スマートコンセントを買ってみました。
せっかくなので、これもRaspberryPiから直接制御してみたい。
TP-Link スマートプラグ HS105
https://www.tp-link.com/jp/home-networking/smart-plug/hs105/
HS105の初期設定
スマホアプリ「Kasa Smart」から設定を行うようです。
TP-Linkのサイトに設定方法が詳しく記載されていました。
アプリ「Kasa」でミニ スマートWi-Fiプラグの初期設定をするには
https://www.tp-link.com/jp/support/faq/946/
今回はローカルでしか使わないつもりなのでクラウドアカウントの作成はスキップしましたが、アカウントを作成すれば外からスマホアプリで制御できるようです。
また、IPアドレスは、DHCP割当しか対応していないようです。私は、固定IPを割り当てたかったので、ルータのDHCP設定で対応しました。
tplink-smarthome-apiのインストール
Node.jsで操作できるライブラリ「tplink-smarthome-api」を使います。
Node.jsのインストールの後、npmコマンドで「tplink-smarthome-api」をインストールします。
sudo apt-get install nodejs npm sudo npm install -g tplink-smarthome-api
インストールできたら、APIを使って、HS105を検索してみます。
$ tplink-smarthome-api search Searching... startDiscovery({ discoveryInterval: 2000, discoveryTimeout: 10000, breakoutChildren: true }) HS105(JP) plug IOT.SMARTPLUGSWITCH 192.168.1.100 9999 ABC123456789 A123456789B123456789C123456789D123456789 hs105
IPアドレス(192.168.1.100)とポート番号(9999)が表示されます。
このIPアドレスとポート番号を引数にして、「tplink-smarthome-api」を使って、電源のON・OFFができます。
tplink-smarthome-apiの使い方
電源ON
tplink-smarthome-api -D send 192.168.1.100:9999 '{"system":{"set_relay_state":{"state":1}}}'
電源OFF
tplink-smarthome-api -D send 192.168.1.100:9999 '{"system":{"set_relay_state":{"state":0}}}'
情報取得
tplink-smarthome-api getInfo 192.168.1.100:9999
結果は、json形式のようです。relay_stateの値が"1"なら電源ON、"0"なら電源OFFですね。
Sending getInfo command to 192.168.1.100: via tcp... response: { sysInfo: { sw_ver: '1.0.6 Build 200331 Rel.171350', hw_ver: '2.0', model: 'HS105(JP)', . . relay_state: 0, . .
スマートプラグの検索
$ tplink-smarthome-api search
他にもいろいろできそうですが、今回はここまで。