irMagician + Node-RED + Amazon Echo (互換機) - 設定編

# 概要
## 対象者
1. 日本語が数ある自然言語で一番得意な方
2. Amazon Echoやその互換機で既存の家電品(赤外線)の制御を行いたい方
3. スマスピの背後にあるIoTデジタルマーケティングの世界を覗いてみたい方(応用編)

## この記事でこんなことが出来ます…
1. Amazon Echo (とその互換機)で、赤外線リモコン対応のシーリングライトとエアコンの音声制御
2. LAN内ではWebからの制御
3. 自宅外から、Amazon Echo経由で上記のリモート制御
4. Node-REDを応用したIoTデジタルマーケティングの基礎的な考え方の習得(応用編で解説)

# はじめに
　AIの活用例として、最近ではスマートスピーカー(以下、スマスピ)が大流行です。中でもAmazon echo, Google Homeは双璧と呼んでも良いと思います。スマスピの応用例として家電品の制御がありますが、対応している機種が少ないのが現状です。そこで既存製品を制御する事になるのですが、既存の家電品(レガシーデバイス)の制御には赤外線リモコンが使われていてその対応が必要になります。

# 目的
　レガシーデバイスを少ない手間でAmazon Echoに対応させる方法についてまとめます。また、純正Amazon Echoの入手難に鑑み、互換機での動作テストも行います。

# 使用機器とサービス
1. 使用機器
 1. Linux が動作するコンピュータ(USB, Networkが使えるもの = Linux Box)<br>
　ちょっと「？」な表題ですが、ラズパイかqiitaの読者なら、自作のLinuxサーバなどもお持ちではないでしょうか？そういうものをここでは指します。使っていないラズパイを再生・活用するチャンスです。
<br><br>

 2. [Gufy Genie](https://www.amazon.co.jp/Alexa%E6%90%AD%E8%BC%89%E3%82%B9%E3%83%9E%E3%83%BC%E3%83%88%E3%82%B9%E3%83%94%E3%83%BC%E3%82%AB%E3%83%BC-Music%E3%81%AB%E3%82%88%E3%82%8B%E9%9F%B3%E6%A5%BD%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%A0%E5%86%8D%E7%94%9F-%E3%82%B9%E3%83%9E%E3%83%BC%E3%83%88%E3%83%9B%E3%83%BC%E3%83%A0%E6%93%8D%E4%BD%9C-AirPlay%E5%AF%BE%E5%BF%9C-T1240511/dp/B07845QBH7) (Amazon Echo 互換機)<br>
　Amazon Echoの導入に関しては現在(@2018/Feb/4)では、招待制になっておりAmazonへ招待依頼をしてからの返事によって購入可能かどうかになります。つまり、買いたい時に買えるものでは無いと言う事になります。そこで今回はその互換機として[Gufy Genie](https://www.amazon.co.jp/Alexa%E6%90%AD%E8%BC%89%E3%82%B9%E3%83%9E%E3%83%BC%E3%83%88%E3%82%B9%E3%83%94%E3%83%BC%E3%82%AB%E3%83%BC-Music%E3%81%AB%E3%82%88%E3%82%8B%E9%9F%B3%E6%A5%BD%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%A0%E5%86%8D%E7%94%9F-%E3%82%B9%E3%83%9E%E3%83%BC%E3%83%88%E3%83%9B%E3%83%BC%E3%83%A0%E6%93%8D%E4%BD%9C-AirPlay%E5%AF%BE%E5%BF%9C-T1240511/dp/B07845QBH7)を使います。
<br><br>
 
2. 使用サービス
 1. Node-RED<br>
　Node-REDに関しては[こちら](https://nodered.jp/)を参照してください。
<br><br>

 2. [Node-RED Alexa Home Skill Bridge](https://alexa-node-red.bm.hardill.me.uk/)<br>
　Node-REDとAmazon Echoの音声認識をブリッジするためのノードです。

# 実験方法
　ここでは今回の実験方法をいくつかのステップに分けて説明します。

## 機材のセットアップ
(1). Amazon Echo or 互換機
　普通にセットアップして使えるようにしてください。疎通確認は天気予報、ニュースなどができればいいでしょう。
<br>

(2). irMagician
　irMagicianをLinux-Boxに接続してください。irMagicianが接続されたことでttyACM0が見れる状態を確認します。

```
ooo@teamheaven:~$ ls /dev/ttyACM0
/dev/ttyACM0
```
<br>

(3). 赤外線リモコンのデータの収集
　現在、利用されているシーリングライトのリモコンやエアコンのリモコンからそれぞれ、On/Off のデータを取得します。取得方法については、[こちら](http://www.omiya-giken.com/?page_id=889)を参照して下さい。
<br>

(4). irMagician 制御スクリプト
　まず、自分なりのスクリプトや赤外線リモコンデータの格納フォルダを決めます。これがブレていると、思わぬ動作不良の原因になります。筆者の場合、以下のディレクトリ構成にしました。

```
ooo@teamheaven:~$ tree ./irMagician.runtime/
./irMagician.runtime/
├── irCommands
│   ├── airconOff.sh
│   ├── airconOn.sh
│   ├── lightOff.sh
│   └── lightOn.sh
├── irData
│   ├── airconOff.json
│   ├── airconOn.json
│   ├── lightOff.json
│   └── lightOn.json
└── irmcli
    ├── irmcli.py
    ├── nohup.out
    └── README.md
```
<br>

(5). 制御スクリプトの動作確認
　このステップは比較的重要です。最終的に全てのコマンドはここに落ちてきて実際の動作に結びつくからです。以下にスクリプト例を記載します。全てのスクリプトは事前に動作確認を行って下さい。

```
#!/bin/sh
/home/ooo/irMagician.runtime/irmcli/irmcli.py -p -f /home/ooo/irMagician.runtime/irData/airconOn.json
```

<br>
## Node-REDのセットアップ
### Node-REDのインストール
 1. 動作確認<br>
　インストール後、簡単なフローを作成して動作確認してください。
![180204-0005.png](https://qiita-image-store.s3.amazonaws.com/0/156757/e5fc65dd-115a-4ef1-dff0-735e0b5dc75b.png)

<br>

### Amazon Echo bridgeのセットアップ
 1. Account の作成<br>
　[Node-RED Alexa Home Skill Bridge](https://alexa-node-red.bm.hardill.me.uk/)で、accountを作成してサービスを登録します。

![180204-0006.png](https://qiita-image-store.s3.amazonaws.com/0/156757/be07c638-e670-8716-cdba-ae225fb3013f.png)
<br>

### Flowの作成
1. 下図の通り、フローを作成します。
![180204-0003.png](https://qiita-image-store.s3.amazonaws.com/0/156757/cf4afb34-1fcb-dc2a-2c12-8309b6e27748.png)
<br>

2. デバイスの設定を行います
![180204-0007.png](https://qiita-image-store.s3.amazonaws.com/0/156757/073bb5b6-55b8-163c-3a3f-cc37109e0e16.png)
<br>

3. Shell Scriptの設定
　最終的にはirMagicianのポートを起動するシェルスクリプトが起動します。
![180204-0008.png](https://qiita-image-store.s3.amazonaws.com/0/156757/77e239a4-d07c-2ecf-6674-943b8eb37d4d.png)

### Flowのデプロイ
　通常のNode-REDのFlowとしてデプロイし、起動します。


### DashBoardの確認
　DashBoardのNodeも配置してあるので、LAN内であればスマホをリモコンとしても使えます。DashBoardのURLをスマホのブラウザに入力します。
![IMG_0147.jpg](https://qiita-image-store.s3.amazonaws.com/0/156757/0161ffbf-bd4a-35bc-da33-9ebe2dccd294.jpeg)

### Amazon Alexaの設定
　Amazon Alexa アプリの設定をします。
(1). スマートホームの選択
![IMG_0151.jpg](https://qiita-image-store.s3.amazonaws.com/0/156757/2c55d76e-9857-a780-1c01-a55be03d889b.jpeg)

(2). Node-REDの選択
![IMG_0149.jpg](https://qiita-image-store.s3.amazonaws.com/0/156757/0763f05d-c8f7-559d-31ad-1f69714fc6ba.jpeg)

(3). Node-REDの設定
　スキルの言語選択を<b>日本語</b>にします。
![IMG_0150.jpg](https://qiita-image-store.s3.amazonaws.com/0/156757/cf5abf23-012d-34de-3b8b-a85a1dfd5f13.jpeg)

### Amazon Alexa アプリでの動作確認
　Amazon Alexa アプリからも操作が可能になります。DashBoardと比較しての優位点はLAN外からの操作が可能になるので、最寄り駅に着いたらエアコンの操作を行い快適な部屋の状態にしておく事が出来ます。

## 注意点
### 設定編
　今回の記事はこの<b>注意点</b>だけが全てと言っても良いと思います。端的に言えば、サービス作成時に日本語で表記して、言語設定を日本語を選べということです。上図は動作しなかった例です。不具合として、「Light点けて」の音声要求に対して「Lightが見つかりません。」とAmazon Echoからの返答です。下図は動作した例です。「ライト点けて」の音声要求に対して、「はい」とAmazon Echoから返答がありました。

動作しなかった例
![180201-0001.png](https://qiita-image-store.s3.amazonaws.com/0/156757/1467df7f-caa0-a4b8-95a4-ad0bc3b47995.png)
<br>

動作した例
![180204-0003.png](https://qiita-image-store.s3.amazonaws.com/0/156757/91ba281d-e6bb-0e19-0ca4-6bfd26d63bf6.png)

### 運用編
　デバイスの運用に関しては最大限の注意をしてください。特にエアコンなどは運用によっては火災などの事故を引き起こす可能性があります。

# 結果
　Amazon Echoの互換機でも問題なく動作する事が確認出来ました。

# 考察
　Amazon Echoとその互換機でのレガシーデバイスの制御用のプロトタイプが構築出来たので、今後はビジネスサイドへのインパクトを考察するためのツールとして活用していきます。つまり、データの流れを可視化できる最初のステップが出来たわけです。データの種類と流れそしてそのデータが集積した場合のインパクトについては応用編に続きます。
　

# さいごに
　ほとんど先達の努力の後追いと参照でしたが、Amazon Echo の現在の入手性だと互換機の評価と使いこなしになるのは仕方のないことかな？と自己弁護しています。

# 謝辞
　トラブルの切り分けのために、Amazon Echo を貸してくれた同僚の村上さんと勝さんに感謝します。ありがとうございます。