YeelightのシーリングライトをHomeKitで使う

非対応品を使う

HomeKit対応と書かれていたシーリングライトをAmazonで買って試したところ、実は対応してませんでした。出品担当の方が記述を間違えたようで、今は訂正されてます。返品しても良い案件ですけど、調べてみたらHomebridgeに対応プラグインがありました。設定は簡単で、ホーム.appで快調に動かすことができたので、このまま使うことにしました。

Yeelightの照明器具

今回使ったのは、Amazonで売られているYeelightブランドのシーリングライトYLXD023です。

今は、Alexa/Google対応と訂正されてますが、購入した時は、Alexa/Google/Apple HomeKit対応となってました。YeelightはHomeKitに対応したLED電球やLEDテープも販売しているので、これも対応していると期待してましたが、実際には未対応でした。そのことに気づかず、サクサクと天井に取り付け、設定を進めてしまいました。

製品は、引掛シーリングに対応した照明器具で、引掛シーリング(または引っ掛けローゼット)が天井についていれば簡単に取り付けられます。同様なLED照明としては高めの価格ですが、Alexa/Google対応品としては妥当です。格安LED照明器具と違って、本体とリモコンにPSEマークと技適マークが付いていて安心感があります。リモコンはBluetooth Low Energy方式ですので、Nature RemoやSwitchBotハブのようなスマート赤外線リモコンは使えません。照明の電源を入れた直後に、リモコンボタンを長押ししてBLEのペアリングします。タイミングが分かりにくいのですが、ペアリングできれば安定に動いてます。リモコンから設定できる照度間隔が4段階しかない事が気になる程度です。ちなみにスマホアプリからは細かく設定できます。

スマホアプリで設定

付属のBLEリモコンだけで操作するならばスマホアプリは不要です。それ以上の設定をするならiPhone用もしくはAndroid用のアプリをYeelightのサイトからダウンロードする必要があります。スマホアプリとシーリングライトとはBLE接続、もしくはWiFi接続するようです。WiFiの設定をしなくてもBLE経由でスマホからの操作が可能です。

Alexa, Googleから使用するにはWiFiの設定が必須です。Homebridgeには、BLE接続のプラグインもあるのですが、開発が止まっている様子なので、HomeKitで使う場合もWiFiを設定した方が良いです。WiFiのSSIDはiPhoneの設定を使うようです。ただ、2.4GHzにしか対応していないので、5GHzのWiFiを使っている場合は、iPhoneの設定を一時的に2.4GHzにする必要があります。この手のデバイスでよくある罠ですね。

Googleでは試していませんが、Alexaでは正しく動作しました。Alexaの設定方法はこちらで説明されています。Echo Showだと明るさ調整スライダーなども表示されます。でもHomeKitでアクセサリを追加しようとしても候補が出ません。そもそも設定コードがどこにも記載されていないので、接続のしようがありません。ここでようやくHomeKitには未対応で、Amazonの説明が訂正されているのに気づきました。

公開プロトコルを有効にする

HomeKitにそのまま対応していない様子なので、Homebridgeで接続することを考えました。Yeelightでは、製品の制御プロトコルを公開して、みんなが試せるようにしているようです。サポートが面倒になるので、昔ながらのメーカはそんなことをしないのが普通だと思います。技術志向で素晴らしいことだと思います。Homebridgeからもこの公開プロトコルを使うようです。

シーリングライトが公開プロトコルを受け付けるための設定は、スマホアプリから行います。メイン画面の右下にある三角形のボタンを押すと、メニューが増えます。その中に、LAN制御という項目があります。

この「LAN制御」をタップした先で現れる設定画面で、右上のスイッチをonにしておきます。

この画面の説明を見ると、この設定により、外部のアプリケーションが照明器具に接続し、操作できるようです。プロトコルの詳しいPDF資料が公開されてます。中国青島の会社だったのですね。

https://www.yeelight.com/download/Yeelight_Inter-Operation_Spec.pdf

Homebridgeプラグインを設定する

ここまでの準備がスマホアプリで終了したところで、Homebridgeのプラグイン設定をします。HomebridgeのプラグインページでYeelightを検索すると、11個の候補が出てきました。

これらを調べたところ、

の2個のプラグインがどちらも使えました。今回は最終的にはYeelighterを使いました。どちらのプラグインも、設定ボタンを押して、出てくるデフォルトの設定のままで動きます。手元のデバイスの情報を登録する必要はありませんでした。プラグインがネットワーク内にあるYeelight製品を自動的に検出して、必要な機能を設定してくれるようです。Yeelighterのデフォルト設定では、以下のような内容がconfigファイルに追加されます。

{
  "name": "Yeelighter",
  "timeout": 5000,
  "interval": 60000,
  "ctforcolor": true,
  "blocking": false,
  "split": false,
  "manual": [
  {
    "ignorePower": false
  }
  ],
  "platform": "Yeelighter"
},

設定を終えてHomebridgeを再起動すると、Yeelight製品の自動検出をしてくれます。最初の1回だけはシーリングライトの電源をoff/onしないと検出されないようでした。一旦検出されると、ホーム.appに照明のアイコンが現れました。名前を「あかり」に変更しました。

コントロールを表示すると、明るさと色温度調整メニューが現れます。色温度の調整はうまく動作しませんでした。もう少し調べてみますが、ほとんど使わないので調整できなくて良いかもです。照度は調整できます。

デフォルト設定では1分ごとに照明の状態を更新してくれてます。そのおかげで、リモコンやAlexa経由でon/offしても、1分以内にHomeKitに状態が反映されます。ただこの更新タイミングで警告やエラーが出ているようで、ログに表示されます。でも問題なく動いているので、これは良いことにします。おいおい設定などを見直したいです。

追記:エラーの発生元を探したところ、temperaturelightservice.jsで色温度を設定している以下の行でした。

await this.sendSuddenCommand("set_ct_abx", (0, lightservice_1.convertColorTemperature)(value));

HomeKitでの設定値から色温度を計算する処理が仕様と違うのか、範囲外とのエラーが出ているようでした。色温度を4000とか4500とか直接数値で設定するとエラーが出ません。色温度は変更することはほぼないので、リモコンから設定することにして、この行をコメントアウトしておきました。githubのソースを見るとその辺りがだいぶ変更されているようなので、次のアップデートに期待します。

クラウド不使用

YeelightのLAN制御は、クラウドを使ってません。ルーターへのケーブルを抜いて、インターネットを遮断して試したところ、それでもHomeKitから点灯・消灯が可能でした。クラウドを使用せず、LAN内のアクセスだけで動作します。高速に応答しますし、クラウドの不調やサービス停止があっても使い続けられるので素晴らしいと思います。

まとめ

Homebridgeと対応プラグインを使って、YeelightシーリングライトをHomeKitに対応させました。Amazonのレビューを見ると、Home Assistantからも使えるようです。(どこかで読んだ内容だなと思ったら購読していたはてなブログの方でした。)

きちんと作られているし、Google/Alexa/Home Assistant/HomeKitのすべての環境で使える最強製品かと思われます。Yeelightの電球やLEDテープはHomeKitに対応しているので、シーリングライトも今後公式対応してくれると嬉しいです。

コメント

タイトルとURLをコピーしました