ただいまって言ったら照明からパソコンがつく話

## 概略図

[![Image from Gyazo](https://i.gyazo.com/08b42482339ec6ce6d163a615db88a58.png)](https://gyazo.com/08b42482339ec6ce6d163a615db88a58)

## 説明

### ただいま

「ただいま」とは、家に帰ったときに言う挨拶である。
なお、筆者は一人暮らしなので一人で喋っている。

### google home

google home とは、Googleが発売しているスマートスピーカーである。音声を拾って、その音声の内容に従って「なにか」を起こすことができる。

つまり「合言葉」に対応して「なにか」をしてくれるデバイスである。

[google home mini](https://store.google.com/jp/product/google_home_mini)

- 例
  - 音楽を鳴らす
  - 照明をつける
  - アラームを設定する

なお、照明などを付ける場合は、スマートデバイスと呼ばれる類の対応した電化製品を買っておく必要がある。

筆者は、google home miniを所有している。

### ルーチン

ルーチンとは、通常「日常の仕事などで、型どおりの決まり切ったもの」のことである。英語では _routine_ と書く。

ここでは、Google Homeが１つの合言葉に対して複数の「なにか」をしてくれる機能を指す。

今回、「ただいま」という合言葉に対して２つの「なにか」を設定した。

- ただいま
  - hueと呼ばれるデバイスの照明をつける
  - パソコンをつける

ただし、こと単純でないので、さらに掘り下げる。

### hueで照明をつける

hueとは、Philipsという企業が発売するスマートデバイスである。

[philips hue](https://www2.meethue.com/ja-jp)

見た目はただの電球であるが、１つの電球で様々な色や明度の明かりを点灯させることができる。

hueは、google homeに対応したスマートデバイスである。google homeのアプリから設定をすることで、「合言葉」に対応して照明をつけることが可能である。

通常、「明かりをつけて」などの言葉に対応している。

[![Image from Gyazo](https://i.gyazo.com/470962a56c2a18f9546c11cc36fe2133.png)](https://gyazo.com/470962a56c2a18f9546c11cc36fe2133)

なので、ルーチンで「ただいま」というと「明かりをつけて」という「あいことば」が実行されたことと同じことにする。

[![Image from Gyazo](https://i.gyazo.com/a93518eceae9114c0b401efdb965b81b.png)](https://gyazo.com/a93518eceae9114c0b401efdb965b81b)

これで、「ただいま」というと、自動的に照明がつく仕組みができあがった。

一番ベーシックなgoogle homeの使い方である。

### IFTTT>Web hook>ラズベリーパイ>Wake on lanで自動的にパソコンをつける

先に図で記載する。

[![Image from Gyazo](https://i.gyazo.com/ae9b050fe41de0d939eb9f0896a8eb0a.png)](https://gyazo.com/ae9b050fe41de0d939eb9f0896a8eb0a)

#### IFTTT

IFTTTとは、「IF This Then That」を略した様々なサービスを連携させるためのサービスである。

[IFTTT](https://ifttt.com/discover)

- 例
  - Gmailでメール受信するとツイートを行う
  - 画像を含んだツイートをするとインスタグラムに同じ内容を投稿する
  - Google Homeに呼びかけると、google カレンダーで新しい予定を立てる

などである。

ここでは、IFTTTを利用してGoogleHomeにキーワードを話しかけると、Webhookを投げる仕組み（レシピ）を作っている。

#### Webhook

Webhookとは「POSTリクエスト」のことを示している。つまり、HTTPを使用したちょっとした通信である。

ここでは狭義として、「IFTTTを利用したWebRequestの送信」および「beebotteというサービスを利用したPOST通信の受領」を示している。

#### Beebotte

[Beebotte](https://beebotte.com/) とは、REST APIやMQTTをサポートして、リアルタイムにメッセージを通知するためのサービスである。

仕組みとしては、なにか所定のWebRequestを受け取ったときにBeebotteからメッセージを通知してくれる。家庭内の機器ではそのメッセージを受け続ければいい。

メリットは、家庭内の機器を外部に晒すことなく、家庭内の機器に通信を飛ばすことが可能になることである。

具体的な説明は、他の記事に投げさせていただく。

[Beebotte のメッセージを Node\-RED で受ける \- Qiita](https://qiita.com/HeRo/items/9978bedf353fc790a5b5)

#### ラズベリーパイ

> Raspberry Pi（ラズベリー パイ）は、ARMプロセッサを搭載したシングルボードコンピューター。

Wikipediaより

[Teach, Learn, and Make with Raspberry Pi – Raspberry Pi](https://www.raspberrypi.org/)

言わずとしれた小型コンピュータである。数千円という非常に安価で手に入れられることができ、しかも常時起動していても大した電力を消費しない。

まさに自宅に常につけているならば、非常に適したコンピュータである。

ここでは、ラズベリーパイ上でNode-Redというソフトを使う。

Node-RED上では、Beebotteでメッセージを受けると、何らかのコマンドを出すということをしている。下の画像のとおり、そのつながりをグラフィックで設定できるので非常にカスタマイズしやすいソフトウェアだ。

さて、ラズベリーパイから送る何らかのコマンドが「Wake on Lan」である。

[![Image from Gyazo](https://i.gyazo.com/e589b6d21280a02b21aa62e63a41cfd5.png)](https://gyazo.com/e589b6d21280a02b21aa62e63a41cfd5)

#### Wake on Lan

> Wake-on-LAN（ウェイク・オン・ラン、略称WoLあるいはWOL）は、コンピュータネットワーク（主にLAN）に繋がっているコンピュータの電源を遠隔で投入する技術あるいはその行為を指す。

つまり、LAN上で信号を投げ、受け手のコンピュータはその信号を受けたときに電源を起動するということである。

具体的には、ラズベリーパイがWoLの信号（パケット）を投げて、自宅のコンピュータがそれを受けて起動する。

#### まとめ

さて、つまりしたかったことは以下のとおり。

「先に示したフロー図の説明はつまり、IFTTTを利用してなんやかんや面倒なことをして、Wake on Lanを投げる」

はっきり言って複雑だし、手軽とは言えない。ただ、一度Beebotteのサービスを登録したり、ラズベリーパイにNode-REDの設定を実装してしまうと、自由かつ手軽に家庭内のIoT機器に通信を行うことができる。

一日でこれらを実装できたので、仕組みこそ理解さえすれば非常に手軽な仕組みだ。

逆に、その仕組みを理解するまでが大変だ、とも言える。家の外からワンボイスで遠隔で家庭内にいろんなことをする、というのは決して容易でないということもよく理解できた。

## 最後に：スマートホームの可能性

[スマートホームの普及を阻む壁を突破するには：佐野正弘のITトレンドウォッチ \- Engadget 日本版](https://japanese.engadget.com/2019/05/25/it/)というような記事があった。

日本でGoogle Homeを利用している家庭は、どういうことに使用しているのだろうか？

- 例えば、子供に「アンパンマンをYou Tubeで見せて」などと言うと、テレビで自動的にアンパンマンが流れるらしい。
- 例えば、祖母は「音楽を聞きたい」と言って、Spotifyから音楽が流れる仕組みを作っている。

どちらもGoogle Homeのデフォルト機能で可能である。こと単純な使い方としては、普及していると言っていいだろう。特に、子供や老人など通常パソコンやスマートフォンを使わないような人には、割と掴みどころが容易いようだ。

一方、今回筆者が行っているようなことは特殊で、相当面倒なことをしている。

hueは設定が非常に単純だ。しかし、hue自体を一式揃えようとすると２万円以上かかるほど相当なコストが必要である。

[Amazon \| Philips Hue\(ヒュー\)スターターセットv3 \| E26スマートLEDライト3個\+ブリッジ1個 \| 【Amazon Echo、Google Home、Apple HomeKit、LINEで音声コントロール \| フィリップスライティング\(Philips Lighting\) \| Philips\(フィリップス\) 通販](https://amzn.to/2XxtWX1)

IFTTTとラズベリーパイを連携させてパソコンを付ける方については、様々なサービスやラズベリーパイ内の設定を含めて、WebAPIとWake on Lanを構築するだけの前提知識が必要である。それだけの知識を有している人は、特殊とまでは言わずとも、決して多くはない。そして、実際に実践する人は、相当稀だろう。

つまり、

- 「スマートホーム化」とは
  - 単純なことをする
    - 敷居が低い
    - できることは限られる
  - たくさんのことをしようとすると
    - コストが多分にかかる
    - 知識をたくさん要する
    - 面倒くさい

のである。

このあたりを普及させるためには、

- スマートデバイスの低コスト化
- 設定を直感的にする
  - RPAのようにGUI上に表示させて設定するような設定ができるようにする
- 設定の容易性を高める
  - スマートデバイスの連携にAPIや他サービスなどを連携させずユーザーが直感的にできるようにする
- スマートホームの設定を専門とする仕事を作る

などということが必要になると思う。

特に最後のように「スマートホーム」というパッケージで売るほうが、消費者に取ってはいいと思う。お金さえ出せば、専門的な知識も必要ないし、いろいろなことが自由にできる。ただ、人件費も含めれば１０万以上は固いし、規模によっては１００万だって言っておかしくない。それこそ最初から家の販売の中に組み込む、というのがいいのだろう。

一方、自分で構築するというならば、スマートデバイスの低コスト化は必須だ。

そして、設定をもっと直感的にできればいいだろう。今回のワンボイスでWake On Lanを行う方は「CUI」とサービスの組み合わせと言っていい。決して容易じゃない。

Node-REDのようなソフトウェアをSaaS化して、GUI的に設定できるように慣れば非常に楽になるだろう（最もセキュリティの問題がつきまとうので容易でない）。

いずれは「音声で音声コマンドを設計する」ということができるようになれば、非常に直感的だろう。いわば「声によるプログラミング」だ。現状のスマートスピーカーはその基礎だし、決して不可能じゃないはずだ。ただ、そこまでいくには、自然言語の理解と構造への変換という発明が必要だ。相当の時間が必要になるだろう。

スマートホームという商品は、まだ普及しないだろう。しかし、今現在の技術ですでに小説のようなことは実現できるということは今回ある程度証明できた、と考える。