Philips Hueに劣らない激安スマート電球「Yeelight」をWebから制御できないか試してみる #iotlt #GWアドベントカレンダー


> この記事は[GWアドベントカレンダー - IoTLT](https://gw-advent.9wick.com/calendars/3)の1日目の記事です。

スマート電球といえば[Hue](https://www2.meethue.com/ja-jp/products)が有名ですよね、HueはAPIもあって使いやすいのですが結構値段が張りますよね。

[【レビュー】激安スマート電球 Xiaomi「YeeLight」はPhilips Hueに劣らない高性能電球](https://webnetforce.net/review-yeelight/)という記事を見つけて買ってみました。ちなみに`Philips Hueに劣らない激安スマート電球`ってタイトルはこの記事を抜粋してみた感じです。

簡単な感想は、情報なさすぎる苦笑



## Xiaomi「Yeelight」とHue

![スクリーンショット 2019-04-28 0.06.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/71982b20-a55a-7469-2cd0-a5a65c9967ea.png "スクリーンショット 2019-04-28 0.06.16.png")

> https://amzn.to/2GMKp3i

Hueと似てますよね。最近ウォッチしてないからHueの現状が分からないけど、2~3年前の印象と比較です。

* Yeelightは単体で動く
	* Hueはブリッジ端末とセットで動くので、電球以外にブリッジ端末を購入する必要があります。
* Yeelightの方が安い(現状3400円)
	* Hueはブリッジを購入する必要があるのでスタートするのに1~2万円かかった印象です。
* YeelightにもAPIがある
	* HueのようにYeelightにもAPIがある模様です。(今回の記事ではちゃんと試せて無い)

## アプリから制御してみる

アプリがあるのでアプリでWi-Fi設定をしてから、アプリで制御できます。

アプリ画面で部屋のWi-FiのSSID/PASSを入力したら、スマートフォンをYeelightのアドホックWi-Fiに接続し、部屋のWi-Fi情報をYeelightに書き込みます。

僕が購入したタイプはWi-Fiは2.4Gしか使えないので5GのWi-Fi設定しちゃうとうまく動かないかもしれません。

うまくWi-Fiに繋がらない時は↓のリセットを試してみましょう。

> https://itunes.apple.com/jp/app/yeelight/id977125608?mt=8
> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/08a320de-bc16-00e5-1760-06d83794f29d.png" width="600px">

連携してボタンを押すとこんな感じ。

<img src="https://i.gyazo.com/4dafcb1cebe25850598d6c8b4cf8126c.gif" width="600px">

動いたぁ。

## リセット方法が斬新

電源のON/OFFを繰り返すことでWiFi情報がリセットされます。斬新。

調子が悪い時はこれをやってみると復活します。

> <img src="https://i.gyazo.com/b8da033021c2543051e806104aee48ad.gif" width="600px">
> https://www.youtube.com/watch?v=JlziE4B42-I

## IFTTT連携

アプリからIFTTT連携が出来ます。

* Integrationの項目を選択

> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/8845d5ae-9c84-c51f-fac2-c04ca3b0bd14.png" width="300px">

この辺でXiaomiアカウントでログインを求められた気がします。

* IFTTTを選択

> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/2f0270b1-eb93-9e38-3513-78239e7d027a.png" width="300px">

* Toggle Yeelight on/offを選択

> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/37a19976-7613-a03d-bfe1-89067544ed77.png" width="300px">

* IFTTT側でWebhookと連係させる

> https://ifttt.com/discover

(画面省略すみません。)

PC側からIFTTTにアクセスしてWebhook連係させます。

* CURLで試す。

↓webhookのeventをyeelightにした例です。

```bash
$ curl -X POST https://maker.ifttt.com/trigger/yeelight/with/key/xxxxxxxxxxxxxxx
Congratulations! You've fired the yeelight event%
```

> <img src="https://i.gyazo.com/c46d19c05c55e6c300ff3acdf229117f.gif" width="600px">
> https://www.instagram.com/p/Bww7aHAjDfD/

## JavaScripからも試す

curlから出来たらあとはどこからでもいじれそうですが、Node.jsで叩いてみます。

```
$ npm i axios
```

```app.js
'use strict'

const axios = require('axios');
const token = `xxxxxxxx`; //iftttのトークン
const event = `yeelight`; //iftttで設定したイベント
const url = `https://maker.ifttt.com/trigger/${event}/with/key/${token}`;

const main = async () => {
    try {
        const res = await axios.post(url);
        console.log(res.data);
    } catch (error) {
        console.log(error);
    }
}

main();
```

```bash
$ node app.js
```

無事に動きました。

## 所感

IFTTT連携はうまく動いたので色々やれそうだけど、スマホアプリの最初の設定がけっこう不安定だった印象です苦笑

APIもある模様ですが、少なくとも日本国内で試してる人はいなさそうですね苦笑

> https://www.yeelight.com/en_US/developer 

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/f38a53f3-17a3-1571-4666-6a5f8a30d8ce.png" width="600px">

npmにもパッケージがあるみたいなので試してみたいですね。

> https://www.npmjs.com/search?q=keywords:yeelight

ほんとはAPIを調べてみたいですがGWアドベントカレンダー的にタイムアップだったので一旦ここまでです。

次は京急大好き[ポキオさん](https://twitter.com/pokiiio)ですね！楽しみ！