注意!
Homebridgeがアップデートされインストール方法、実行するためのコマンドが変わったので、新しく記事を書き直しました。併せてお読みください。
AndroidにDebianをインストールしてHomebridgeのサーバ化(アップデート後版)
導入
部屋をスマートホーム化したい、安く作成するためにESP32を使用することを考えました。そこで、いろいろ調べていたところ、HomebridgeというHomeKitに非対応なスマートデバイスを対応させるソフトを見つけ、導入しようとなったんですが、サーバ選定で迷いました。結果的には低価格・停電消費電力・必要最低限のインターフェイスを備えたAndroidスマートフォンをサーバとして選定しました。(本当はBUFFALOのWiFiルータを使用したかったけど、CPUが対応してなかった…) 今回はXperia Z3 CompactにDebianをインストールしてその上にHomebridgeを立ち上げるということを行いました。
Debianのインストール
0. Android端末のRoot化
今回使用するアプリはroot化が必須なのでkingroot等を使用して各自でRoot化してください。
1. Linux Deployのインストール
AndroidにDebianをインストールする方法として、今回はLinux Deployというアプリを使用しました。Google Playからダウンロードが可能です。また、Busy Boxが必須なので、まだインストールしていなかったらこのタイミングでしてください。
Linux Deploy – Google Play のアプリ
BusyBox – Google Play のアプリ
2. Linux Deployを立ち上げてインストール設定を行う
アプリのインストールが終わったら、立ち上げます。右下にある設定マークからインストールするLinuxの設定を行います。自分の場合は設定をこのようにしました。
3. Linux Deployの設定を行う
起動したままにする、WiFiの接続を維持する、端末起動時に自動起動する等のさまざまな設定があるのでDebianをインストールする前に設定しておきます。自分はこんな感じにしました。
4. Debianをインストール
右上にある︙を押してinstallからインストールを行います。10分くらいで終わると思います。
5. STARTを押す
インストールが終わったらスタートボタンを押して、スタートする。
6. SSHの接続をする
Linux Deployの上にIPアドレスが表示されているはずなので、同一ネットワーク内のPC等からSSH接続を行います。もし、表示されてなかったり、表示が切れていた場合はAndroidの設定等から端末のIPアドレスを確認してください。
Homebridgeのインストール
ここから先はアップデートによって変わりました。新しい記事をお読みください。
7. sudo apt update
レポジトリの更新をします。
8. sudo apt install curl
curlがインストールされてないのでします。
こっから先9~12はgithubに載っている通りです。
9. curl -sL https://deb.nodesource.com/setup_16.x | sudo bash -
レポジトリを追加します。
10. sudo apt-get install -y nodejs npm gcc g++ make python net-tools
node.jsをインストールします。
終わったらnode -v等で正常にバージョンが表示されるか確認します。
11. sudo npm install -g --unsafe-perm homebridge homebridge-config-ui-x
homebridgeをインストールします。
12. sudo hb-service install --user homebridge
サービスとして登録します。通常のLinuxであればここで終了です。しかし、Linux Deployをはじめとするchroot上のLinuxではsystemdを使ってサービスを起動させることができないので、このコマンドだけでは全く動きません。
13. sudo hb-service run --allow-root
このコマンドを打ってブラウザから、IPアドレス:8581にアクセスしてみてください。正常にインストールされていればHomebridgeのログイン画面が現れるはずです。一通り動くことが確認できたらCtrl + cでプロセスを終了させてください。
スタートアップ設定
systemdが働かないので、Linux DeployでのDebianインストール時に用いたSysVを使用します。
14. echo 'sudo hb-service run --allow-root' | sudo tee /etc/rc3.d/S99homebridge
rc3.d(ランレベル3で実行されるスクリプトが入っているフォルダ)にS99Homebridgeというファイルを作成してsudo hb-service run --allow-root
を書き込んでいます。
15. sudo chmod 755 /etc/rc3.d/S99homebridge
これで実行可能なスクリプトとなりました。
これでスタートアップ設定は完了です。STOPを押してからSTARTを押して、再起動するとログの最後がhomebridge…となるはずです。もし、homebridge… failとなってしまっている場合はサーバーの立ち上げに失敗してしまっているので手動でSSH経由でsudo hb-service run --allow-root
を実行してください。
こんな感じでスタートアップ設定が少し変則的なだけで簡単にHomebridgeサーバをAndroidで立てられます。ちなみに私が使用したXperia Z3 Compactはバッテリーを取り除いて、直接4Vをバッテリー端子に入力してあります。
他にも、WiFiではなく有線LANを使用してます。