Secret Staircase

人を感知して玄関のライトを自動的に点ける (Hue Motion Sensor+SwitchBot)

人が来たら玄関(外側)のライトを自動的に点灯させるようにしました。SwitchBotを使ってスイッチを押します。SwitchBotはHomeKitに対応していないのでHomebridgeを使って対応させました。

構成

こういう構成です。

  • Hue Motion Sensor: 人感センサーと明るさセンサー
  • SwitchBot: 玄関ライトの物理スイッチを押す
  • Homebridge (on Raspberry Pi)
  • Eve for HomeKit (iOS用アプリ)

Hue Motion Sensorはメインの人感センサーの他にも明るさと気温のセンサーが付いています。今回は明るさセンサーも使って暗いときに人が来たときだけスイッチを入れるようにします。

SwitchBotは物理的にスイッチを押すデバイスです。今回のケースだと理想的には照明がIoTなものだったらよかったのですがHueが取り付けられるようなソケットではなかったので断念。電源をスマートプラグに刺せれるならそれもよかったのだけれど、電源オンオフには賃貸マンション備えつけの物理スイッチを押すしかありませんでした。

SwitchBotはスマートホームにおける最終手段ですね。

SwitchBotには標準(押すだけ)モードと壁スイッチモードがあります。壁スイッチモードにすると押す動作と引く動作が使えるようになり、スイッチに紐をくっつけておくことで引く動作でオフにすることができます。これで右がオン、左がオフ(逆も可)なスイッチに対応します。詳しくは公式サイトを見てください。

SwitchBot取り付け

玄関(内側)にスイッチがあるのでそこに取り付けます。

見た目がだいぶ悪いですがスマートホームのためには目をつぶることにします。 スイッチやSwitchBotに付いてるぺらぺらしているのは3Mのコマンドフックです。SwitchBotには別の3Mの両面テープが付属していますがきれいにはがせるのかわからなかったのでコマンドフックを使いました。

余談ですがこのコマンドフックは賃貸の部屋でスマートホームをしようとすると大活躍します。はがす時に引っ張る部分が露出するので見た目は悪くなりますが壁紙を痛めにくいです。

SwitchBotを取り付けたスイッチは手動で押そうと思えば押せます。でも押しにくいので常用するならSwitchBot化しない方がいいと思います。もしくは別のIoTスイッチを用意してそっちにSwitchBotが連動するようにする方法もあります。うちでは別の箇所でこの方法を使っているので後日紹介したいと思います。

SwitchBot設定

公式のアプリにより設定します。

  • 壁スイッチモードにする
  • アドレスを記録しておく(後で使います)

Homebridge設定

SwitchBotにはHub Plusという製品があって、それによりSwitchBotをインターネット経由で操作したりAlexaから操作したりできるようになるのですが残念ながらHomeKitには対応していません。そこでSwitchBotをBLE経由で接続する方法を使います。これならHub Plusは必要ありせん。

SwitchBotはBLEで操作できます。公式のGitHubリポジトリにPythonスクリプトがあり、この内容から壁スイッチモードのときには以下の動作となることがわかります。

  • 0x001657 01 01を書き込むとオン
  • 0x001657 01 02を書き込むとオフ

また0x0016の値を読み出すことで現在の状態もわかります。

Raspberry Piの場合はgatttoolを使うと簡単に読み書きができます。

更新 SwitchBotを確実に操作するためにこちらの方法を使うのがおすすめです

Homebridgeと統合するにはhomebridge-script2プラグインを使います。config.jsonにこのようなアクセサリを追加します。

"accessories": [
  {
    "accessory": "Script2",
    "name": "Switchbot1",
    "on": "gatttool -t random -b <SwitchBotのアドレス> --char-write-req -a 0x0016 -n 570101",
    "off": "gatttool -t random -b <SwitchBotのアドレス> --char-write-req -a 0x0016 -n 570102",
    "state": "gatttool -t random -b <SwitchBotのアドレス> --char-read -a 0x0016",
    "on_value": "Characteristic value/descriptor: 57 01 01"
  }
]

on_valuestateコマンドの出力が一致したらオンと判断する文字列です。gatttool --char-readCharacteristic valueから始まる文字列を返してきます。

Hue Motion Sensor取り付け&設置

こちらは特別なことはありません。普通に設定すればよいです。

本来この製品は屋内用ですので玄関の外側に設置することはできません。ただ屋根のあるところで雨に濡れないなら大丈夫じゃないかと思い設置しました。こちらのコメント(Reddit)でも軒下で使ってて今のところ大丈夫とありましたが、自己責任でお願いします。

うちは幸運なことに玄関に鉄製のプレートがあったためHue Motion Sensor付属の磁石で簡単に設置できました。

HomeKit設定

さて、いよいよHomeKitのオートメーションを設定すれば完了です。 オートメーションの設定としては次の両方が満たされる場合にオンにしたいところです。

  • Hue Motion Sensorが人の動きを感知
  • Hue Motion Sensorの明るさが低い

ところがAppleのHome.appではこうした複数条件を設定することができないし、また単体であってもHue Motion Sensorの明るさを条件にすることもできません。

これはHomeKitの制限ではないらしくサードパーティー製のアプリで設定することができます。今回はEve for HomeKitを使いました。無料で高機能、おすすめです。

このような設定にしました。

まとめ

人が来たら玄関(外側)のライトを自動的に点灯させるようにしました。SwitchBotを使ってスイッチを押します。SwitchBotはHomeKitに対応していないのでHomebridgeを使って対応させました。

最初はmacOSでHomebridgeを動かしていてなんとかBLEを使えないかと試行錯誤していましたがmacOSにはgatttoolのようなツールがないので自分でプログラムを書く必要があり手軽ではありません。そこでRaspberry Piを導入したところgatttoolで簡単にSwitchBotを操作することができました。

夜に帰ってくるとパチっと灯りが点くのは(自己)満足感が高いです。

comments powered by Disqus