Termux(Android)にHomebridgeをインストール

投稿者: | 11月 26, 2022

導入

以前投稿したLinux Deploy上でHomebridgeを実行するやつですが、pingができなかったり、rebootできなかったり、安定性が微妙(使用機材の問題)だったので、Termux上で実行できないか試してみました。

手順

0. Termuxのインストールやレポジトリの設定、SSHの設定、pkg upgrade
ここら辺は自分で調べてみてください

1. node.jsのインストール
pkg install nodejs

2. pythonのインストール
pkg install python

3. Homebridgeのインストール
npm install -g --unsafe-perm homebridge homebridge-config-ui-x
npmのアップデートの案内とか出ますが、うっかりアップデートすると動かなくなったりするので気をつけてください。

4. ディレクトリの作成
mkdir ~/.homebridge

4. config.jsonの作成
vim(ディフォルトでは入っていないのでpkg install vim)やnano等のテキストエディタでconfig.jsonを作成
vim ~/.homebridge/config.json
この中に

{
    "bridge": {
        "name": "Homebridge",
        "username": "CC:22:3D:E3:CE:30",
        "port": 51826,
        "pin": "031-45-154"
    },
    "platforms": [
        {
            "name": "Config",
            "port": 8080,
            "auth": "form",
            "theme": "auto",
            "tempUnits": "c",
            "lang": "ja",
            "platform": "config",
            "log": {
                "method": "file",
                "path": "/data/data/com.termux/files/home/.homebridge/homebridge.log"
            }
        }
    ]
}

と記述します。vimの場合書き込みが終わったらescを押して、:wqで保存してvimを閉じましょう。

5. 実行
homebridge -I | tee ~/.homebridge/homebridge.log

これで実行できるはずです。http://端末のIPアドレス:8080にアクセスすると、セットアップが起動するはずです。初期設定が終わったら次に進んでください。停止するには、UI上の再起動ボタンか、実行しているコンソールでctrl+cをしてください。インポートを行った際は、UI設定のLog Viewer Setupから、Log MethodをFrom File、Log File Pathを/data/data/com.termux/files/home/.homebridge/homebridge.logにしてください。

(6). Expected `concurrency` to be a number from 1 and upというエラーが出て、プラグインやUI設定が開けない場合

自分はこれにぶち当たりました。どうやら、p-limitとかいうモジュールへの変数がちゃんと定義されていないのかわかりませんが、とりあえず
vim /data/data/com.termux/files/usr/lib/node_modules/homebridge-config-ui-x/node_modules/p-limit/index.js
で開いてあげて、p-limitの制作者には申し訳ないですが、

'use strict';
const Queue = require('yocto-queue');

const pLimit = concurrency => {
	concurrency = 1000; //←を追加
	if (!((Number.isInteger(concurrency) || concurrency === Infinity) && concurrency > 0)) {
		throw new TypeError('Expected `concurrency` to be a number from 1 and up');
	}

と言った感じに5行目に追加してあげます。本当なら、このモジュールを使用している方のコードを変えるべきなんですが、探すのが面倒だったのでこれで妥協します。
このあと、exitとかでTermuxを再起動してください。

Homebridge実行スクリプトの作成

homebridge -I | tee ~/.homebridge/homebridge.logで実行しているとHomebridgeの再起動時に自動的には起動しないため、

7. Homebridge実行用スクリプトの作成
vim .homebridge/home_bridge-run.sh
中身は

#!/data/data/com.termux/files/usr/bin/bash
while :
do
	homebridge -I | tee ~/.homebridge/homebridge.log
done

とします。

あとは、Termux:Bootや手動実行などで実行してください。と言いたいところですが、うまくいかなかったので次に記事にまとめます。

終わりに

残念ながらTermuxではpingモジュール(people x等に使われる)が使えなさそうなので、大人しくx86のネイティブUbuntuマシーンでHomebridgeを実行することにします。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)