スマートホーム目指して Homebridge を Ubuntu にインストールして使ってみる

# はじめに
最近、Proxmox を使って遊んでいて、いろいろな記事を眺めていました。そんな中 Homebridge を使ってスマートホーム化するという、便利で面白そうなものを見つけたので実際にやってみます。
また、私は Android を使用しているので Google Home の対応、所有しているスマートプラグの接続、WoL で PC をボタン一つで起動できるようにしてみようと思います。

自分のメモとして、少し用語についても書いてみます。

# 用語メモ
## スマートホームって何？
家庭内の電化製品や設備をインターネット接続し、スマホや Alexa などのスマートスピーカーを通して操作、設定を行える家のこと。

> スマートホームとは、家庭内の電化製品や住宅設備をインターネットでつなぐことで、便利で快適な生活を実現する住宅や暮らしのことを指します。IoT技術を活用し、スマートフォンやタブレット、スマートスピーカーなどのデバイスを用いて電化製品や住宅設備などを接続して、操作や設定を行います[^1]。

> スマートホームとは、IoTに対応した住宅設備・家電などが、さまざまなサービスと連携し、そこに暮らす人々や関係者に利便性をあたえる住宅です[^2]。

スマートホームには、Apple の Homekit、Google Home、Amazon の Alexa、Switchbot、があり、最近ではこれらを連携する Matter という新規格が出ているみたい。


## Homebridge って何？
HomeKit をネイティブにサポートしていないスマートホームデバイスを、無理やり対応させちゃおうってやつ。様々なスマートアクセサリをサポートする Homebridge プラグインがあり、プラグインを追加することで対応の幅が増えるみたい。
Homekit は Apple 製品しか対応してないが、Homebridge を噛ませば Android でも使えたり、自作スマートデバイスや、VM の起動とかがアプリ上で行えるようになる。便利！

詳しい説明はこれが参考になりそうかも。

https://diysmartmatter.com/archives/361


# Homebridge インストール
ここからが本題。Homebridge をインストールしていく。動作環境は以下に示す。

https://homebridge.io/

## 環境
- Proxmox 7.x
- Ubuntu 22.04

Ubuntu は Proxmox のコンテナに入っているものとする。

## インストール
この手順に従ってインストールを行う。

https://github.com/homebridge/homebridge/wiki/Install-Homebridge-on-Debian-or-Ubuntu-Linux

### パッケージの追加
```shell
curl -sSfL https://repo.homebridge.io/KEY.gpg | sudo gpg --dearmor | sudo tee /usr/share/keyrings/homebridge.gpg  > /dev/null

echo "deb [signed-by=/usr/share/keyrings/homebridge.gpg] https://repo.homebridge.io stable main" | sudo tee /etc/apt/sources.list.d/homebridge.list > /dev/null
```

### インストールする
```shell
sudo apt update
sudo apt install homebridge
```

インストールが完了すると以下のような出力が出るので、メモをしてブラウザーで開く。
```
Homebridge Installation Complete!
You can access the Homebridge UI via:

* http://xxx.xxx.xxx.xxx:8581

Thanks for installing Homebridge!
```

:::note info
IP がわからなくなったときは、`hostname -I` コマンドで確認できる
:::


## Homebridge セットアップ
`http://xxx.xxx.xxx.xxx:8581` 実際にこのリンクにアクセスしてセットアップを行う。
開くとこんな画面なので、**さぁ、始めよう！** をクリック

<img width="50%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2348896/3ca374ce-ea7c-a7a0-6be1-0544be3f0936.png">

次の画面では、管理者用のアカウントを追加する
<img width="50%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2348896/406dd12d-7eaa-b41c-1be9-dcd080078c79.png">

完了！ダッシュボードを開く！
<img width="50%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2348896/fd5cfb34-0b14-fc93-d793-810039261857.png">

各パネルは並び替えることができるので、並び替えてみた！
画面右上の「+」ボタンから表示できるもの増やせるので試してみましょう～
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2348896/fd3aa0b6-8fca-8d46-4265-183677ae0c50.png)


### メモ
nodejs のバージョンが古いって言われてたらこのコマンドで解決！
```shell
# node のアップデート
sudo hb-service update-node
# homebridge の再起動
sudo hb-service restart
```


## Homebridge Plugin を入れる
Homebridge では、プラグインを導入することで対応デバイスなどを増やすことができる。
例として、Google Home に対応させるための「Homebridge Google Smart Home Plugin」などが存在する。

導入には**プラグインタブ**から検索を行い、対象のプラグインをインストールする。
右下の下矢印をクリックするとインストールすることができる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2348896/27e707ed-a4d4-ed37-310c-e27fe1c6ba15.png)


### Google Home に対応させる (Homebridge Gsh)
https://github.com/oznu/homebridge-gsh

Android 端末の Google Home でアクセスできるように、Homebridge Gsh をインストールする。インストールするとアカウント連携できるようになるので、アカウント連携を行う。

次に、Android 端末の Google Home アプリの設定タブから、Google と連携させるを選択、

<img width="50%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2348896/cc930b8a-dbb9-43e8-d10b-42c51824c945.png">

選択した先で Homebridge を追加することで、Google Home からデバイスを見られるようになる。

<img width="50%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2348896/ab5b283f-5ec1-ee9e-2889-1cc2c4d0c9be.png">


### TP-Link Tapo P110M スマートプラグに対応させる
https://github.com/RaresAil/homebridge-tp-link-tapo

Tapo アカウント情報を記載し、デバイスの IP アドレスを書くとデバイスを追加できる。

:::note warn
プラグの場合、クリックした瞬間電源が off になるので要注意
:::


<img width="75%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2348896/5550f1dd-cac2-72a8-1d2a-7e21299ffac5.png">

<img width="%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2348896/ca9b4944-bd74-4c47-4205-3308a9acc9e9.png">


### Wake on Lan してみる
https://github.com/alexgustafsson/homebridge-wol

プラグイン導入後、設定から対象 PC のローカル IP アドレスを設定することで起動状態の確認 (ping)、WoL の設定をして起動対象の MAC address を書くことで、PC を遠隔起動できるようになる。

<img width="75%" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2348896/1e753f45-8fa3-0e5f-c5b4-070e9b5015bf.png">

また、シャットダウンの設定もあるので、この設定をしておけば電源オフも遠隔で行えるようになる。
公式にはこんなコマンドが書いてあったが、自環境では設定が悪いのか動作しなかった。
```shell
net rpc shutdown --ipaddress 192.168.1.151 --user username%password
```

# おわり
こんな感じでとても簡単に Homebridge サーバーを建て、プラグインを追加することで様々なデバイスに対応させることができた。
コマンドがほぼいらなかったので本当に簡単で感動したが、電力のグラフ化などが iOS の Eve アプリにしか対応していないなど、少し使いにくい点があったことをここに記す。

iOS ユーザーには本当に便利なんだろうと思う反面、Android ユーザーには少し不満が残るかも、と感じた。
スマートホームサーバーには、Home Assistant なるものがあるらしいので、こっちも使ってみたいなと考えている。

# 参考文献

https://nzws.me/blog/202011-homebridge

https://qiita.com/stLuciano/items/49652543192f2402e7c8

[^1]: [スマートホームとは？導入による暮らしの変化](https://solution.toppan.co.jp/lifesensing/contents/cc_contents01.html)
[^2]: [スマートホームとは？特徴・できること・導入前に必要なものをくわしく解説](https://linkjapan.co.jp/blog/20221205-smart-home-features)