生活/便利アイテム

【IoT】電動ハニカムシェードをスマートスピーカー(Google Home, Alexa)で動かす方法

スポンサーリンク

こんにちは。chiroruです。
臨時代行でブログを執筆しています。

妻がインスタグラム(chiroru.myhome)で電動ハニカムシェードをIoT対応して音声操作(Google HomeやAlexa)で動かせるようにしたことを投稿したところ、多くの反響を頂いたので、その方法をまとめました。"OK Google! ハニカムを下げて(上げて)"と言うとハニカムシェードを自動で上げ下げをしてくれるようになります。(動画では結露防止のため隙間を開けて自動で止める設定にしています。)

赤外線リモコンで操作できる家電はNature Remoなどのデバイスで簡単にスマートスピーカーと連携することができますが、電波式のリモコンで動く電動ハニカムシェードはNature Remoでは連携できません。そんな電波式のリモコンで動く家電も、スマートスピーカーと連携して音声操作することができます。(※それなりに手間がかかり専門知識・技能も多少必要になります。)工学系のバックグラウンドがある方にとっては簡単かもしれませんが、専門ではない方でも根気よくやればできるように、できるだけ丁寧に説明したいと思います。電動ハニカムシェード以外の製品にも応用可能です。
※この記事だけゴリゴリの技術ブログになってますのでご注意下さい。

Nature Remoを使ったスマートホーム化はこちらの記事で紹介しています。
スマートホーム化・家電の音声操作の必須アイテム

まず初めに、こちらが電動ハニカムシェードのスマート化のシステム全体図です!

聞いたことがない単語がいっぱい出てきてやる気・興味を失った方、安心してください。自分も自作を始めた時にはほとんど聞いたことがない状態でした。一つずつ丁寧に説明していきます。先にお伝えしますが、この中で大変なのは"自作デバイス"の部分だけです。他の部分はスマホやパソコンを普通に操作できればとりあえずできます!順番に作り方や設定を説明していきます。

自作リモコン制御デバイス製作

では早速、コア部分の自作リモコン制御デバイスの作り方から説明していきます。

リモコン制御デバイスでやれること
google home(やアレクサ)からの指示を受けてリモコンのスイッチのON/OFFを外部からコントロールします。

リモコン制御デバイス構成・動作原理
主に制御用マイコン(arduino)とフォトカプラからなります。制御したいリモコンのタクトスイッチから配線を引っ張り出してきてフォトカプラを介してバイパス回路を作ります。そのフォトカプラのON/OFFをマイコンでコントロールすることで、リモコンのスイッチのON/OFFを制御するという動作原理です。その作り方を順番に説明します。

自作リモコン制御デバイスの作り方:ハードウェア編

一番手間がかかる部分ですが、ここさえできればあとは基本的にスマホとパソコンをポチポチしていくだけです。

リモコン制御デバイスに必要な部品をまとめました。
1~4は今回のデバイスで必要となる部品、5はケースのためお好みで、6~8はマイコンの動作確認のためにあった方がベターです。
回路として実装する前に6~8を使ってブレッドボード上で動作確認をしてから実装した方がミスなくできると思います。
また、説明上ハードウェア編を先に書いてますが実際はソフトウェア編を先に進めてブレッドボード上で動作確認をしてから回路実装をする方が良いと思います。

部品名個数購入先備考
1ESP-WROOM-02開発ボード1秋月電子通商必須 制御用マイコン(arduino)
2フォトカプラ TLP785(GBランク)4秋月電子通商必須 制御したいリモコンのボタン数だけ必要
3片面ガラスコンポジット・ユニバーサル基盤 Cタイプ (72×47mm)1秋月電子通商必須 マイコンと各種電子部品を接続
4L型ソケット 1×10(10P)1秋月電子通商必須 リモコン側との配線を中継
5プラスチックケース アイボリー TB-32-IV1秋月電子通商ただのケースのため、好みに合わせて
6ブレッドボード BB-8011秋月電子通商動作確認用に合った方がベターです
7ブレッドボード・ジャンパーワイヤ 14種類×10本1秋月電子通商動作確認用に合った方がベターです
8高輝度3mm白色LED LEBWL34A06AA005秋月電子通商動作確認用に合った方がベターです

ESP-WROOM-02とフォトカプラ、L型ソケットをユニバーサル基板上に接続する

上がはんだ付け完了後の写真です。自分も授業でやったことがある程度だったので汚い仕上がりですね。。。でも問題なく動作しているのでよしとしてます。
順番に説明していきます。

 ESP-WROOM-02をユニバーサル基盤にはんだ付けで接続

下の写真のようにESP-WROOM-02のUSB端子がユニバーサル基盤の一番下になるようにつけるのがおススメです。ESP-WROOM-02を基板に差し込んで、裏側をはんだづけで接着してください。ちなみに、はんだ付けの道具なんて家にないわって方はこちらがリーズナブルでおすすめです。(私もこれを使いました。)


ESP-WROOM-02の端子とフォトカプラを基板上で接続

下の写真の赤とかグレーの配線がそうです。ESP-WROOM-02の端子とフォトカプラの端子と基盤の裏ではんだ付けで結線していきます。


ESP-WROOM-02の端子部を上からよく見ると5,13とか言った数字やGNDという文字が書かれています。

どの端子を使うかに決まりはありませんが私は、5,12,16を使っています。(配線しやすいと思った番号を選んでください。)
フォトカプラの端子には一方がGND,もう一方が5,12,16のような数字の端子と結線するように接続してください。
その際フォトカプラをよく見ると一つの角に小さい〇があるので〇のある端子にESP-WROOM-02の数字がある端子、その隣の端子にESP-WROOM-02のGNDの端子と結線するように接続してください。

ちなみに図の左側の二つの端子間に電圧を与えるとその向かい側(右側)の端子間が通電するというのがフォトカプラの動作になります。左側の端子間に電圧を与える与えないをマイコン(ESP-WROOM-02)でコントロールすることで右側の端子間の通電ON/OFF(=リモコンのスイッチのON/OFF)を制御するわけですね。

フォトカプラとL字ピンソケットを接続する

ここまでの作業ができた方ならL字ソケットを接続する作業は楽勝だと思います。L字ソケットを基板にさして裏側をはんだで固定してください。
また、フォトカプラのマイコンと反対側の端子をそのままL字ソケットの各ピンにはんだでつないでください。

以上で、自作リモコン制御デバイス側のハード製作は完了です。ここまでで全体の6割くらいは完了です。

ハニカムシェードのリモコンから配線を引っ張り出す

コントロールしたリモコンのタクトスイッチ端子から配線を引っ張りだす必要があります。ハニカムシェードの場合は上から、"上げる"、"止める"、"下げる"、"選択"のタクトスイッチがついています。スイッチを押すことでスイッチの左右間の端子間を導通させることがタクトスイッチの機能です。タクトスイッチの左右の端子から配線を引っ張り出してフォトカプラを介してバイパス回路を作りマイコンでフォトカプラの導通を制御することで、外部からスイッチを押したときの動作を再現できることになります。

今回"選択"の動作を音声で操作したいシチュエーションがあまりなかったため、"選択"スイッチはコントロールしないこととし、"上げる"、"止める"、"下げる"のスイッチ端子に配線をはんだづけし引っ張り出しました。

ここで、一番上の"上げる”スイッチからは左右の両端しから配線を引っ張り出しているのに対して、"止める",”下げる”の端子は左側からしか引っ張っていません。これは、"上げる"スイッチの左側端子と"止める",”下げる”端子の右側が同電位(リモコンの回路内で導通している)であるため、わざわざ引っ張り出さなくても"上げる"スイッチの左側端子を分岐して使えばよいためです。私は"上げる"スイッチの左側端子を接続するピンソケットと"止める"、"下げる"スイッチの左側端子のペアとなるソケットの端子を基板上で接続してしまう(写真には写っていませんが基板の裏側で結線してます)ことで余計な配線を減らしました。なので合計4本の配線を引っ張ってきています。(フォトカプラも3つでOKですが、"選択"ボタンもコントロールしたくなる場合に備えて4つつけています。)

最後にリモコン制御デバイス側のフォトカプラに対応したピンソケットに差し込めば、リモコン制御デバイス製作のハードウェア編が完了です。
これで全体の7割くらいが完了です。

自作リモコン制御デバイスの作り方:ソフトウェア編

マイコン(ESP-WROOM-02)に意図通りの動作をさせるにはプログラムを書き込む必要があります。
ESP-WROOM-02はArduino IDEで組み込みプログラムを書き込み可能です。
ここではArduino IDEを使ってESP-WROOM-02にプログラムを書き込むまでを説明します。

Arduino IDEのインストールと初期設定

まず、Arduinoのwebページにアクセスし、手持ちのPCにArduino IDEをインストールします。
次にArduino IDEからESP-WROOM-02にプログラムを書き込み可能とするためESP-WROOM-02用のライブラリをインストールします。
このArduino IDEのインストールから必要なライブラリのインストール初期設定などはこちらのサイトが分かりやすいためここでは詳細は割愛します。
Indoor Corgi  ESP-WROOM-02搭載製品の設定とプログラム書き込み方法

リモコン制御用のプログラムの実装

次にArduino言語を用いて、リモコンを制御するためのプログラムを実装していきます。
以下が私が実際に実装し動かしているソースコードの全容です。
(こちらをコピペし、環境に合わせてwifiやピンNoの設置値を正しく設定すれば、とりあえず動くと思います。)
後ほど各プログラムの機能を説明します。

 shade_control.ino
#include <ESP8266WiFi.h> // for WIFI
#include <ESP8266WebServer.h>
const char *ssid = "**********"; // アクセスポイントの SSID
const char *password = "**********"; // アクセスポイントのパスワード
const IPAddress ip(***, ***, ***, ***);
const IPAddress gateway(***, ***,***, ***);
const IPAddress subnet(***,***,***,***);
WiFiServer server(8888);
// ボタン押下時間(ms)
#define PUSH_TIME (1000)
String header;
String LED_ONE_STATE = "off";
String LED_TWO_STATE = "off";
String LED_THREE_STATE = "off";
const int UP_PIN_NUMBER = 12;
const int DOWN_PIN_NUMBER = 5;
const int STOP_PIN_NUMBER = 16;
void setup() {
Serial.begin(115200);
pinMode(UP_PIN_NUMBER, OUTPUT);
pinMode(DOWN_PIN_NUMBER, OUTPUT);
pinMode(STOP_PIN_NUMBER, OUTPUT);
digitalWrite(UP_PIN_NUMBER, LOW);
digitalWrite(DOWN_PIN_NUMBER, LOW);
digitalWrite(STOP_PIN_NUMBER, LOW);
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.mode(WIFI_STA);
WiFi.config(ip, gateway, subnet);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print("Trying to connect to Wifi Network");
}
Serial.println("");
Serial.println("Successfully connected to WiFi network");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
server.begin();
}
void loop(){
WiFiClient client = server.available();
if (client) {
Serial.println("New Client is requesting web page");
String current_data_line = "";
while (client.connected()) {
if (client.available()) {
char new_byte = client.read();
Serial.write(new_byte);
header += new_byte;
if (new_byte == '\n') {
if (current_data_line.length() == 0) {
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.println("Connection: close");
client.println();
if (header.indexOf("Shade=UP") == 6) {
Serial.println("Shade UP");
Serial.println(header.indexOf("Shade=UP"));
Serial.println(header.indexOf("Shade=DOWN"));
Serial.println(header.indexOf("Shade=STOP"));
LED_ONE_STATE = "on";
digitalWrite(UP_PIN_NUMBER, HIGH);
delay(PUSH_TIME);
digitalWrite(UP_PIN_NUMBER, LOW);
delay(50);
digitalWrite(UP_PIN_NUMBER, HIGH);
delay(PUSH_TIME);
digitalWrite(UP_PIN_NUMBER, LOW);
delay(50);
}
if (header.indexOf("Shade=DOWN") == 6){
Serial.println("Shade DOWN");
Serial.println(header.indexOf("Shade=UP"));
Serial.println(header.indexOf("Shade=DOWN"));
Serial.println(header.indexOf("Shade=STOP"));
LED_TWO_STATE = "on";
digitalWrite(DOWN_PIN_NUMBER, HIGH);
delay(PUSH_TIME);
digitalWrite(DOWN_PIN_NUMBER, LOW);
delay(50);
digitalWrite(DOWN_PIN_NUMBER, HIGH);
delay(PUSH_TIME);
digitalWrite(DOWN_PIN_NUMBER, LOW);
//隙間をあけるために途中で止める
delay(26000);
digitalWrite(STOP_PIN_NUMBER, HIGH);
delay(PUSH_TIME);
digitalWrite(STOP_PIN_NUMBER, LOW);
delay(50);
digitalWrite(STOP_PIN_NUMBER, HIGH);
delay(PUSH_TIME);
digitalWrite(STOP_PIN_NUMBER, LOW);
delay(50);
}
if (header.indexOf("Shade=STOP") == 6){
Serial.println("Shade STOP");
Serial.println(header.indexOf("Shade=UP"));
Serial.println(header.indexOf("Shade=DOWN"));
Serial.println(header.indexOf("Shade=STOP"));
LED_TWO_STATE = "on";
digitalWrite(STOP_PIN_NUMBER, HIGH);
delay(PUSH_TIME);
digitalWrite(STOP_PIN_NUMBER, LOW);
delay(50);
digitalWrite(STOP_PIN_NUMBER, HIGH);
delay(PUSH_TIME);
digitalWrite(STOP_PIN_NUMBER, LOW);
delay(50);
}
client.println("<!DOCTYPE html><html>");
client.println("<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">");
client.println("<link rel=\"icon\" href=\"data:,\">");
client.println("<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}");
client.println(".button { background-color: #4CAF50; border: 2px solid #4CAF50;; color: white; padding: 15px 32px; text-align: center; text-decoration: none;       display: inline-block; font-size: 16px; margin: 4px 2px; cursor: pointer; }");
client.println("text-decoration: none; font-size: 30px; margin: 2px; cursor: pointer;}");
// Web Page Heading
client.println("</style></head>");
client.println("<body><center><h1>Shade Remote Control</h1></center>");
client.println("<form><center>");
client.println("<p>Shade Control</p>");
// If the PIN_NUMBER_22State is off, it displays the ON button
client.println("<center> <button class=\"button\" name=\"Shade\" value=\"UP\" type=\"submit\">UP</button>") ;
client.println("<button class=\"button\" name=\"Shade\" value=\"DOWN\" type=\"submit\">DOWN</button><br><br>");
client.println("<center> <button class=\"button\" name=\"Shade\" value=\"STOP\" type=\"submit\">STOP</button>") ;
client.println("<button class=\"button\" name=\"Shade\" value=\"SHIFT\" type=\"submit\">SHIFT</button><br><br>");
client.println("</center></form></body></html>");
client.println();
break;
} else {
current_data_line = "";
}
} else if (new_byte != '\r') {
current_data_line += new_byte;
}
}
}
// Clear the header variable
header = "";
// Close the connection
client.stop();
Serial.println("Client disconnected.");
Serial.println("");
}
}

プログラムでやっていることの説明

①wifiと接続,webサーバの立ち上げ

以下の部分で、接続するwifiのパラメータを設定をしています。
ご自宅の環境合わせて、wifiのSSID,パスワード、arduinoに割り振るIP等の値を入れて下さい。

 wifiパラメータ設定
const char *ssid = "**********"; // アクセスポイントの SSID
const char *password = "**********"; // アクセスポイントのパスワード
const IPAddress ip(***, ***, ***, ***);
const IPAddress gateway(***, ***,***, ***);
const IPAddress subnet(***,***,***,***);
WiFiServer server(8888);

wifiに接続する処理を実施している箇所は以下になります。

 wifiとの接続
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.mode(WIFI_STA);
WiFi.config(ip, gateway, subnet);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print("Trying to connect to Wifi Network");
}
Serial.println("");
Serial.println("Successfully connected to WiFi network");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
server.begin();
}
②HTTPリクエストの受信

①で立ち上げたwebサーバに対するHTTPリクエストを受信します。

 HTTPリクエストの受信
WiFiClient client = server.available();
if (client) {
Serial.println("New Client is requesting web page");
String current_data_line = "";
while (client.connected()) {
if (client.available()) {
char new_byte = client.read();
Serial.write(new_byte);
header += new_byte;
if (new_byte == '\n') {
if (current_data_line.length() == 0) {
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.println("Connection: close");
client.println();
③HTTPリクエストのパラメータに応じた制御

②で受信したHTTPリクエストにはパラメータと呼ばれるものも一緒に送付されます。そのパラメータを判別しそれに応じた応答を返します。これによりgoogle homeからの"上げて"なのか"下げて"なのかどういう指示があったかと判別し、それに応じた制御が可能になります。

 HTTPリクエストに応じた制御
if (header.indexOf("Shade=UP") == 6) {
Serial.println("Shade UP");
Serial.println(header.indexOf("Shade=UP"));
Serial.println(header.indexOf("Shade=DOWN"));
Serial.println(header.indexOf("Shade=STOP"));
LED_ONE_STATE = "on";
digitalWrite(UP_PIN_NUMBER, HIGH);
delay(PUSH_TIME);
digitalWrite(UP_PIN_NUMBER, LOW);
delay(50);
digitalWrite(UP_PIN_NUMBER, HIGH);
delay(PUSH_TIME);
digitalWrite(UP_PIN_NUMBER, LOW);
delay(50);
}
if (header.indexOf("Shade=DOWN") == 6){
Serial.println("Shade DOWN");
Serial.println(header.indexOf("Shade=UP"));
Serial.println(header.indexOf("Shade=DOWN"));
Serial.println(header.indexOf("Shade=STOP"));
LED_TWO_STATE = "on";
digitalWrite(DOWN_PIN_NUMBER, HIGH);
delay(PUSH_TIME);
digitalWrite(DOWN_PIN_NUMBER, LOW);
delay(50);
digitalWrite(DOWN_PIN_NUMBER, HIGH);
delay(PUSH_TIME);
digitalWrite(DOWN_PIN_NUMBER, LOW);
//隙間をあけるために途中で止める
delay(26000);
digitalWrite(STOP_PIN_NUMBER, HIGH);
delay(PUSH_TIME);
digitalWrite(STOP_PIN_NUMBER, LOW);
delay(50);
digitalWrite(STOP_PIN_NUMBER, HIGH);
delay(PUSH_TIME);
digitalWrite(STOP_PIN_NUMBER, LOW);
delay(50);
}
if (header.indexOf("Shade=STOP") == 6){
Serial.println("Shade STOP");
Serial.println(header.indexOf("Shade=UP"));
Serial.println(header.indexOf("Shade=DOWN"));
Serial.println(header.indexOf("Shade=STOP"));
LED_TWO_STATE = "on";
digitalWrite(STOP_PIN_NUMBER, HIGH);
delay(PUSH_TIME);
digitalWrite(STOP_PIN_NUMBER, LOW);
delay(50);
digitalWrite(STOP_PIN_NUMBER, HIGH);
delay(PUSH_TIME);
digitalWrite(STOP_PIN_NUMBER, LOW);
delay(50);
}

HTTPリクエストに"Shade"というパラメータも一緒に送るように設定しておき(Google HomeからHTTPリクエストをパラメータと一緒に送る方法はのち程説明します)、"Shade"の値が"UP"ならリモコンの"上げる"スイッチに対応する端子に通電、"Shade"の値が"DOWN"ならリモコンの"下げる"スイッチに対応する端子に通電するというような制御をしています。私の場合、"上げる"スイッチは12番ピン、"下げる"スイッチは5番ピン、"止める"スイッチは16番ピンに対応するように接続したので以下のようにピンナンバーを設定しています。

 ピンナンバーの設定
const int UP_PIN_NUMBER = 12;
const int DOWN_PIN_NUMBER = 5;
const int STOP_PIN_NUMBER = 16;

ソースコードの説明は以上です。
本プログラムを作成する上で以下のサイトを参考にしています。
ESP-WROOM-02を使って、HTTPリクエストに応じてLEDを制御する方法を丁寧に説明してくれています。英語ですが非常に分かりやすいです。
Microcontrollers Lab 

プログラムの書き込み

1.2.2で作成したプログラムをESP-WROOM-02に書き込みます。
PCとESP-WROOM-02をUSBで接続した状態で、Arduino IDEの画面の左上の右矢印アイコンを押してください。

書き込みが正常に完了すれば、自作リモコン制御デバイスの完成です。

ここまでくれば、全体の9割は完了。あと少しです!
アプリケーションを使ったgoogle homeとの連携のパートに入っていきます。

アプリケーションを使ったgoogle homeとの連携

ここではgoogle homeに"OK google! ハニカムを上げて!"とお願いしたときに、自作リモコン制御デバイスに指示(HTTPリクエスト)を送るまでの処理を説明していきます。
全体の流れは以下です。
①ngrokというアプリケーションを使って、ESP-WROOM-02に設定したwebサーバへ外部からアクセスできるようにする。
②IFTTTというアプリケーションを使って、google homeとwebhookというアプリケーションを連携させ、"OK google! ハニカムを上げて!"と言ったら特定のURLにHTTPリクエストを送信するように設定する。
これらによりgoogle homeに指示を出すと、自作リモコン制御デバイスにHTTPリクエストを送信しリモコンが自動で制御されるようになります。

ngrokによりwebサーバを公開

現状のままではESP-WROOM-02上に立ち上げたサーバは同じwifi環境内からしかアクセスができません。一方、後程説明するwebhookというアプリケーションは外部環境(自宅のwifi外のネットワーク)からHTTPリクエストを送信するため、ESP-WROOM-02上に立ち上げたサーバに外部からリクエストを送信できるようにする必要があります。そこでngrokというアプリケーションを使います。
使い方についてはこちらのサイト(Qiita ngrokの利用方法)が非常に分かりやすいため、ここでは詳細説明は割愛します。
ESP-WROOM-02上に立ち上げてwebサーバのIPに外部からアクセスできるように設定をしてください。(http://*******)という形でアクセスするURLが出力されます。
設定後、ESP-WROOM-02上に立ち上げたwebサーバに対してwifi接続していないスマホ等からブラウザを使って出力されたURLにアクセスできるか確認してください。
正しくHTTPリクエストが送受信されれば、ブラウザに以下の画面が表示されます。ちなみに、Google Homeを使った音声操作だけではなく、このブラウザ上でUPやDOWNを押してもハニカムシェードをコントロールすることができます。

一点注意があります
ngrokによりwebサーバを公開し続けるにはngrokを起動し続ける、つまりPCを常時起動しておく必要があります。私はRasberry pi(というIoTでよく使われる安い小型PC)を持っていたためそちらを使っていますが、持っていない方は常時起動しておけるPCを用意するか、難しい場合はやはりRasberry piがリーズナブルでおすすめです。

IFTTTを使ってgoogle homeとwebhookを連携

IFTTTというアプリケーションを使ってgoogle homeとWebhookを連携することで、google homeに特定のセリフを言うと特定のURLにHTTPリクエストをパラメータとともに送信することができるようになります。例えば、"OK google!ハニカムを上げて!"と言った場合に、2.1で公開したURLに"Shade=UP"というパラメータとともにHTTPリクエストを送信するように設定することで、1.2.2で実装したプログラムに応じてリモコンの"上げる"ボタンが自動で押され、ハニカムシェードが自動で上がるようになります。

まず、IFTTTをスマホにインストールしましょう。
Androidの方はこちら
iPhoneの方はこちら

アプリでの設定手順を説明します。

step
1
"Create"を選択

step
2
"If This"を選択

step
3
"Google Asisstant"を選択

step
4
音声操作のトリガーとするフレーズを入力

step
5
"Then That"を選択

step
6
Webhooksを選択

step
7
URL欄に2.1でngrokにより設定されたURLを入力


URL入力の際にパラメータも一緒に入力してください。
例えば"ハニカムを上げて"に対応するアクションを起こす場合、
http://***********/?Shade=UP
と入力することで、マイコンにShade=UPというパラメータが渡され、ハニカムシェードを上げるための制御を開始できます
その他の欄は下記画像と同じように設定してください。

 

同様に"ハニカムを下げて"というアクションをSTEP1~STEP7で設定すれば、上げる操作下げる操作両方を音声操作できるようになります。

 

終わりに

お疲れさまでした。
以上で、ハニカムシェードをスマートスピーカー(Google Home)で動かすためのすべての作業が終了です。"OK google!ハニカムを上げて!"というとハニカムシェードが上がるはずです。リモコンおよび自作デバイスはハニカムシェードへ電波が届く位置に設置する必要があるのでご注意ください。
電動ハニカムシェードを例に説明しましたが、今回説明した方法はいろんな家電に応用が可能なので、興味のある方はチャレンジしてみて下さい。

Instagramも参考にしてくださいね。

この投稿をInstagramで見る

 

ちろる(@chiroru.myhome)がシェアした投稿

スポンサーリンク

-生活/便利アイテム
-,