「Hey!Siri, 掃除終了」でEufy Robovacに充電ステーションに帰ってもらう

# 目次
- [はじめに](#はじめに)
- [1. プラグインのインストール](#1-プラグインのインストール)
- [2. BlueStacksのインストール](#2-bluestacksのインストール)
- [3. ログから「Device ID」と「Local Key」を取得する](#3-ログからdevice-idとlocal-keyを取得する)
- [4. iPhoneのホームアプリを設定する](#4-iphoneのホームアプリを設定する)
- [おわりに](#おわりに)

## はじめに
今回は「Hey!Siri, 掃除終了」で Ankerのロボット掃除機「Eufy Robovac」に充電ステーションに帰ってもらいたいと思います。

前回の記事「[はじめてのRaspberry Pi Zero WにHomebridgeインストールまで](https://qiita.com/murakei/items/019307857ce9c33b5a2b)」で、Raspberry Piや、Windows、Macなどに node.js, npm → Homebridge のインストールが済んでいる前提で進めていきます。

「[Eufy RoboVac G10 Hybrid](https://amzn.to/3niBhXk)」
<img width="360" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233066/e500532c-77dc-046a-63d5-76d0edc3b102.png">

Amazonの商品紹介にも「Works with Alexa認定」とある様に、【[Alexaスキル：EufyHome - RoboVac](https://www.amazon.co.jp/Anker-EufyHome-RoboVac/dp/B0722KZPGK)】から「アレクサ、ロボバックを使って、掃除をして」や、「アレクサ、ロボバックを使って、充電して」が可能です。

しかし、定型アクションで「アレクサ、掃除終了して」を登録して、デバイスの「電源をOFF」に設定すると、充電ステーションには戻らずに、その場で一時停止してしまいます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233066/42250e07-bae2-68b3-80dd-1fca475d2731.png)

そこで、Homebridge のプラグイン「[homebridge-eufy-robovac](https://github.com/joshstrange/homebridge-eufy-robovac#readme)」を使って、「Hey!Siri, 掃除終了」で、充電ステーションに帰ってもらおうと思います。

（ちなみに、Google Assistantの場合は、ショートカット(ルーティン)に「OK Google, 掃除終了」で「(Device Name)を充電して」に割り当てれば、ちゃんと充電ステーションに帰ってくれます。）

## 1. プラグインのインストール
Homebridge のプラグインで「[homebridge-eufy-robovac](https://github.com/joshstrange/homebridge-eufy-robovac#readme)」を検索し、インストールします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233066/d026c0b5-8545-cba5-a7d2-7847c974998a.png)

プラグインの設定画面

| <img alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233066/a3845403-cc68-887f-c177-95e3a757052f.jpeg"> |
|:--|

プラグインの設定画面で、ロボット掃除機の「Device ID」と「Local Key」を入力する必要があります。

IDとKeyの取得には、Androidアプリケーションエミュレータ「BlueStacks」のADB(Android Debug Bridge)を使って、ログから「Device ID」と「Local Key」を取得する必要があります。

## 2. BlueStacksのインストール
1. BlueStacksのインストール.
AndroidアプリケーションをWindowsおよびmacOS上で動作させるエミュレータ「[BlueStacks](https://www.bluestacks.com/ja/index.html)」をインストールします。

2. ADB(Android Debug Bridge)の有効化
環境設定 ＞ 詳細設定 ＞ ☑ Android Debug Bridge(ADB)の有効化 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233066/9bdb00b9-659e-3340-e626-e9256b4ce205.png)

3. 「EufyHome 2.3.2」をエミュレーターにインストール
Ankerのスマートホームデバイス管理アプリ「[EufyHome 2.3.2](https://www.apkmirror.com/apk/anker/eufyhome/eufyhome-2-3-2-release/eufyhome-2-3-2-android-apk-download/)」のAPKをエミュレーターにインストールします。


## 3. ログから「Device ID」と「Local Key」を取得する

Windowsのコマンドプロンプトから、「HD-Adb.exe logcat」を起動して "tuya.m.my.group.device.list" のログを取得します。

```
cd "C:\Program Files\BlueStacks"
HD-Adb.exe logcat -e "tuya.m.my.group.device.list"
```

↓ BlueStacks内の「Eufy Home」アプリを起動すると、ログが出力されるので「devId」「localKey」を控えておきます。

```
MM-DD hh:mm:ss.fff  ****  **** D Tuya    : Business api: tuya.m.api.batch.invoke {"result":〜〜中略〜〜,
"devId":"****************","dpMaxTime":********,"productId":"********",〜〜中略〜〜,
"localKey":"****************"}],"a":"tuya.m.my.group.device.list",〜〜中略〜〜}
```

※文字化けしてしまう場合は、標準出力に出すのではなく、ログに書き込んで、後で参照するのが良いと思います。

```
HD-Adb.exe logcat -e "tuya.m.my.group.device.list" > eufyhome.log
```

## 4. iPhoneのホームアプリを設定する
iPhoneの「ホーム」アプリを起動し、「＋」ボタンから「シーンを追加」して、「掃除開始」「掃除終了」を設定すれば、「Hey!Siri, 掃除開始」「Hey!Siri, 掃除終了」ができるようになります。

ちなみに、「掃除終了」で、アクセサリの電源をOFFにしているだけですが、こちらは、アレクサと違ってちゃんと充電ステーションに帰ってくれます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233066/d411379d-8635-c081-edf6-6088b74993d4.png)![HomeKit2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/233066/6c6ea531-dbe6-fea2-34b6-57ebd84127ad.png)

## おわりに
標準では「HomeKit」に対応していないデバイスでも、Homebridgeのプラグイン経由で、スマートホーム化できるのは凄いですね！
スマートリモコンの「Nature Remo」のプラグインは豊富にあるみたいなので、赤外線リモコンにしか対応していない家電も「Hey!Siri」でスマートホーム化できそう。。
「HomePod mini」も「Nature Remo」も買っちゃおうかな。。