部屋の電気を電源ではなく赤外線でコントロールしたい。
1.家の外からコントローする。→スマホを使う。
2.室内で音声でコントロールする。→グーグルホームミニを使う。¥3000(ヤフオクで)
今回は安くて小さいNodeMCU(Amica)ボードを使用する。¥500
赤外線LED¥450

AmicaIR

1のためには家のバッファローのルータでNodeMCUのローカルアドレス192.168.11.22を固定した上で、グローバルアドレスのポート50022に変換されるようにする。そうするとスマホからhttp://****.xyz:50022とやるとNodeMCUを外からコントロールできる。

2のためにはIFFTT(イフト)サービスを使う。¥0
ひとつめはトリガーはグーグルアシスタント「電気をつけて」、アクションはウェブリクエストでhttp://****.xyz:50022/on
もうひとつはトリガーが「電気を消して」、アクションがhttp://****.xyz:50022/off

/////////////////////////////////////////// スケッチ例 ////////////////////////////////////////////
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <RremoteESP8266.h>
#include <Rsend.h>

ESP8266WebServer server(80);
IRsend irsend(4);//LEDの長い方+を4番(表記はD2)ピンに、短い方-はGNDに。

void handleRoot() {
server.send(200, "text/html", "<h1><A HREF='/on'>LIGHT ON</A> | <A HREF='/off'>LIGHT OFF</A></h1>");
}

void setup() {

irsend.begin();

WiFi.mode(WIFI_STA);
WiFi.begin("106F3F3C****", "mh1nr5jpc****");

while (WiFi.status() != WL_CONNECTED) {
delay(500);
}

server.on("/", handleRoot);

server.on("/on", []() {
irsend.sendNEC(0x41B6659A, 32);//onにする赤外線コマンド送信
server.send(200, "text/html", "<h1>LIGHT ON | <A HREF='/off'>LIGHT OFF</A></h1>");
});

server.on("/off", []() {
irsend.sendNEC(0x41B67D82, 32);//offにする赤外線コマンド送信
server.send(200, "text/html", "<h1><A HREF='/on'>LIGHT ON</A> | LIGHT OFF</h1>");
});

server.begin();
}

void loop() {
server.handleClient();
delay(10);
}
///////////////////////////////////////////////////////////////////////////////////////////

<注意点>
赤外線のライブラリはIRremoteESP8266-2.5.5.zipをダウンロードしてインストールする。
赤外線のコマンドはスケッチ例のIRrecvDemoを使って前もってコマンダーから調べておく。
このためには赤外線レシーバーが必要。(¥0 既出)
NodeMCUの電源は100均で売ってるスマホ充電用の立方体の白いやつとスマホ充電用のケーブル。¥100x2
居間と寝室が離れていたのでもう一つ作って、寝室のエアコンの横に貼り付けて動かしています。2個目は¥1000でできました。