Homebridgeのプラグインを使用してパソコンを起動する

# はじめに
前回の記事でLenovo Miix 2 8にHomebridgeをインストールしました。
今回はプラグインを使用してPCをリモートで起動、シャットダウンできるようにしました。
設定項目が多いですがしっかり設定していけば、Homeアプリで起動、シャットダウン、電源状態の確認ができるようになります。

前回の記事はこちらから。

https://qiita.com/gn05_/items/37e13dbdd54c01138f53

# 環境
* Homebridgesサーバー
Lenovo Miix 2 8
Xubuntu 22.04.5 LTS
* ホストPC
自作PC(MB:TUF GAMING B560M-PLUS)
Windows 11 23H2

今回はXubuntuにHomebridgeをインストールしており、WindowsのPCをリモートで起動及びシャットダウンするパターンのお話になります。
# ホストPCの設定
## BIOSの設定
BIOSの設定を変更し、WoLを有効にします。
TUF GAMING B560M-PLUSの場合は、`Power On By PCI-E`を有効に変更します。
## 電源オプションの設定
![スクリーンショット 2024-09-22 160351.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3891901/007ca3a9-4087-252a-66e1-25b4a68b1759.png)
`コントロール パネル\ハードウェアとサウンド\電源オプション\システム設定`
シャットダウン設定の高速スタートアップを有効にするのチェックを外します。
![スクリーンショット 2024-09-22 161654.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3891901/dfb7604d-29e8-a7e1-0b1b-e60eb1c0ee8c.png)
`コントロール パネル\ハードウェアとサウンド\電源オプション\プラン設定の編集`の中の詳細な電源設定の変更でPCI Expressの中にあるリンク状態の電源管理をオフにしておきます。
## ネットワークアダプタの設定
![スクリーンショット 2024-09-22 160929.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3891901/dcb147c4-dd36-6ab4-12cf-8ebe8c9d4fe5.png)
デバイスマネージャーからネットワークアダプタの設定を変更します。
詳細設定の中にある`Wake On Magic Packet`の値を`Enabled`にします。
![スクリーンショット 2024-09-22 161328.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3891901/9f47d741-e410-04ec-ccc1-eeb57d2b915a.png)
電源管理のタブにある`このデバイスで、コンピューターのスタンバイ状態を解除できるようにする`と`Magic Packetでのみ、コンピューターのスタンバイ状態を解除できるようにする`のチェックが外れていれば入れておきます。
## ネットワークアダプタの設定変更
`コントロール パネル\ネットワークとインターネット\ネットワーク接続`の中から使用するアダプタのプロパティを開き、`インターネットプロトコルバージョン4(TCP/IPv4)`のプロパティを開きます。
IPアドレスが手動設定になっていなければ、IPアドレスが変わると面倒なのでここで手動にしておきます。
![スクリーンショット 2024-09-22 163145.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3891901/e7f79082-a587-2e95-36da-be79a27c3311.png)
詳細設定を開き、WINSのタブの中にあるNetBIOS設定を`NetBIOS over TCP/IPを無効にする`にします。
## レジストリの設定変更
![スクリーンショット 2024-09-22 164118.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3891901/a562a03c-6843-aec1-5b6f-26426bd9e2b2.png)
Realtek製のネットワークアダプターの場合、レジストリの値を変更する必要があるようです。
`コンピューター\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}`の中にある４桁の数字のうちDriverDescに使用するネットワークアダプタの名称が入っているものを探します。
`S5WakeOnLan`の値を1に変更します。
## pingが通るようにする
これまでホスト側のWoLに関する設定を行い、リモートで起動できる状態になったのですが、Windowsの場合デフォルトではpingが通らない状態になっています。
Homebridgeのプラグインではpingを利用して電源のオンオフを判断しているのでpingが通るように設定を変更します。
![スクリーンショット 2024-09-22 173206.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3891901/138b4e16-0690-9a16-727b-20538b6368dc.png)
`コントロール パネル\すべてのコントロール パネル項目\Windows Defender ファイアウォール`の詳細設定のリンクをクリックするとセキュリティが強化されたWindows Defenderファイアウォールが開きます。
開いたらアクティブなプロファイルを確認しておきます。今回の場合はパブリックになります。
![スクリーンショット 2024-09-22 173921.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3891901/bef91d77-41fc-d6a8-c4db-bdd80c9dd0a0.png)
受信の規則の中にある`ファイルとプリンターの共有 (エコー要求 - ICMPv4 受信)`のうち、プロファイルがアクティブなプロファイルが含まれている方を右クリックして、表示されたメニューの規則の有効化をクリックします。

またセキュリティソフトが原因でpingが通らないことがあるので、セキュリティソフトがインストールされている場合はそちらの設定も変更しておきます。
![スクリーンショット 2024-09-22 174854.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3891901/483110fa-a4a4-290c-d41f-938f989dd4ba.png)
カスペルスキーの場合は、セキュリティ設定の中のファイアウォール設定を開き、使用可能なネットワークをクリックすると、ネットワークプロパティが開きます。
その中にあるネットワークのうち、今回使用するネットワークのネットワーク種別をプライベートネットワークに変更すれば、pingが通るようになります。
## アカウントの確認
![スクリーンショット 2024-09-22 180906.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3891901/e0a7f864-10c5-baf5-2f18-57008c33fb0d.png)
ホストPCはローカルアカウントでサインインしているので権限を確認します。
`コントロール パネル\ユーザー アカウント\ユーザー アカウント`を開き、右に表示されるアカウントがAdministratorになっていればOKです。
# Homebiridgeの設定
## プラグインのインストール
今回はHomebridge WoLというプラグインを使用します。

https://github.com/AlexGustafsson/homebridge-wol

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3891901/e094ea5d-2d14-37d9-d215-d6ea84e9a4ca.png)
Homebridge UIのプラグインのタブでhomebridge wolと検索すれば出てきます。
## プラグインの設定
プラグインをインストールしたら、設定を行っていきます。
### 名称を決める
![スクリーンショット 2024-09-22 170700.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3891901/f9d6e69c-38a6-c83a-82bc-02c21945c76b.png)
Homeアプリ上で表示される名称をNameの欄に入力します。
私の場合はWindows PCとしています。
### ウェイク構成の設定
![スクリーンショット 2024-09-22 170746.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3891901/46a938c0-a305-12d3-93c5-78d059e5f922.png)
ホストPCを起動させるのに必要な設定を行います。
MACアドレスの欄にホストPCのMACアドレスを、ブロードキャストアドレスの欄にブロードキャストアドレスを入力しておきます。
### pingの設定
![スクリーンショット 2024-09-22 170725.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3891901/b0edab4c-fd12-2c27-4f62-e445bb757653.png)
ここまでの設定でHomeアプリからホストPCを起動させる設定は完了していますが、電源のオンオフが確認できない状態になっています。
pingを利用して電源の状態を確認するので、pingの送信先を`IP address or hostname`の欄に入力します。
ping間隔、状態の変更を判断するまでのping数、pingが返ってくるまでの待機秒数は特にこだわりがなければデフォルトのままで大丈夫です。
### シャットダウンコマンドの設定
![スクリーンショット 2024-09-22 170803.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3891901/dc6cdd69-43b8-742e-bd97-af2152a9bc27.png)
HomeアプリからPCをシャットダウンさせるための設定を行います。
Shutdown commandの欄に`net rpc shutdown -I IPアドレス -U "ユーザー名%パスワード" -C "Shutdown"`の形で入力します。
-Cの後にある""の間のワードを変更すれば表示されるメッセージを変更できますし、不要であれば-C以下を削除します。
ただし-C以下を削除してもダイアログは表示されました。

# Xubuntuの設定
シャットダウンコマンドはXubuntuからsambaを利用して送信するので、下記のコマンドを実行してsambaをインストールします。

    sudo apt update
    sudo apt install samba
インストールが完了すれば、リモート操作でシャットダウンができるようになっています。

# あとがき
WoLで起動させるには変更する項目が多く設定が大変でしたし、起動ができてからもセキュリティソフトが原因でpingが通っていないことに気付かず、電源状態が同期されなかったり、sambaがインストールされていないためシャットダウンコマンドが実行できなかったりして難しさを感じました。

私のようなPCのモニターをHomeKit対応のテレビにしている人であれば、ショートカットを利用して、iPhoneからワンタッチでテレビの起動、入力の切り替え、PCの起動ができるためとても便利だと感じています。