たぶん、Avahiは既に入っているはずなので、いきなりnodejsをインストールします。
と、その前に、make.confでUSEフラグを追加です。
面倒なのでpackage.keywordだっけ? あれを使わずにグローバル設定です。
プラグインを簡単にインストールできるように、npmを有効にします。
gentoo # nano /etc/portage/make.conf
USE="-X -gtk -gnome -qt alsa -ipv6 -kerberos ja sse sse2 sse3 sse4a mmxext nptl ... npm"
そして、emerge。どうやら4つのパッケージをインストールするそうです。
gentoo # emerge nodejs
・・・
>>> Installing (4 of 4) net-libs/nodejs-6.9.4::gentoo
* The global npm config lives in /etc/npm. This deviates slightly
* from upstream which otherwise would have it live in /usr/etc/.
*
* Protip: When using node-gyp to install native modules, you can
* avoid having to download extras by doing the following:
* $ node-gyp --nodedir /usr/include/node <command>
>>> Recording net-libs/nodejs in "world" favorites file...
>>> Auto-cleaning packages...
>>> No outdated packages were found on your system.
インストールされたか確認してみましょう。
gentoo ~ # npm -v
3.10.10
gentoo ~ # node -v
v6.9.4
順調です。
ここからはemergeじゃなくて、npmですね。
gentoo ~ # npm install -g homebridge
次に、homebridgeのダミープラグインをインストールします。
gentoo ~ # npm install -g homebridge-dummy
では、ダミーアクセサリを作ります。
先に、usernameに設定するためにMac Addressを調べておきます。
(別にサーバーのMACアドレスじゃなくてもいいんですが、usernameは[0-9:A-F]の6つのペアなので、MACアドレスと同じ書式なのです。)
gentoo ~ # ifconfig
enp1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 4074
inet 192.168.0.6 netmask 255.255.255.0 broadcast 192.168.0.255
ether 44:8a:5b:9f:1d:ff txqueuelen 1000 (Ethernet)
RX packets 207485528 bytes 286879248750 (267.1 GiB)
RX errors 0 dropped 27539 overruns 0 frame 0
TX packets 112039002 bytes 138752227480 (129.2 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 0 (Local Loopback)
RX packets 79554 bytes 7667641 (7.3 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 79554 bytes 7667641 (7.3 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
この、"ether 44:8a:5b:9f:1d:ff"の部分ですね。
しかし、大文字でなければなりません。
で、設定ファイルを作ります。
gentoo ~ # nano .homebridge/config.json
{
"bridge": {
"name": "Homebridge",
"username": "44:8A:5B:9F:1D:FF",
"port": 51826,
"pin": "031-45-154"
},"description": "dummy", "accessories": [
{
"accessory": "DummySwitch",
"name": "ダミースイッチ"
}
]
}
いつかポート番号は変えよう・・・。
nameは適当につけてください。
で、試験的に立ち上げてみます。
gentoo ~ # homebridge
*** WARNING *** The program 'node' uses the Apple Bonjour compatibility layer of Avahi.
*** WARNING *** Please fix your application to use the native API of Avahi!
*** WARNING *** For more information see <http://0pointer.de/avahi-compat?s=libdns_sd&e=node>
*** WARNING *** The program 'node' called 'DNSServiceRegister()' which is not supported (or only supported partially) in the Apple Bonjour compatibility layer of Avahi.
*** WARNING *** Please fix your application to use the native API of Avahi!
*** WARNING *** For more information see <http://0pointer.de/avahi-compat?s=libdns_sd&e=node&f=DNSServiceRegister>
[2017-06-14 22:18:38] Warning: skipping plugin found at '/usr/lib/node_modules/homebridge-dummy' since we already loaded the same plugin from '/usr/lib64/node_modules/homebridge-dummy'.
[2017-06-14 22:18:38] Loaded plugin: homebridge-dummy
[2017-06-14 22:18:38] Registering accessory 'homebridge-dummy.DummySwitch'
[2017-06-14 22:18:38] ---
[2017-06-14 22:18:38] Loaded config.json with 1 accessories and 0 platforms.
[2017-06-14 22:18:38] ---
[2017-06-14 22:18:38] Loading 1 accessories...
[2017-06-14 22:18:38] [ダミースイッチ] Initializing DummySwitch accessory...
Scan this code with your HomeKit App on your iOS device to pair with Homebridge:
lqqqqqqqqqqqqk
x 031-45-154 x
mqqqqqqqqqqqqj
[2017-06-14 22:18:38] Homebridge is running on port 51826.
なにやらAvahiがNativeじゃないと怒られていますが、特に問題ないので放っておきます。
Apple Homekitアプリから、アクセサリを追加します。
ちゃんとHomebridgeが表示されました。これをタップします。
こんなダイアログが出るけど無視して「このまま追加」
と、ここでPINを読むんですが、画面だとうまくいかないようです。結局手入力しました。
とりあえず次へ
タイプはスイッチで。いや、別にトグルになるものだったら何でもいいんでしょうけど。
「マイホーム」の「デフォルトの部屋」にある「ダミースイッチ」というアクセサリがちゃんと追加されています。
このボタンを押してもよいのですが、せっかくなのでSiriで認識してもらいましょう。
何回か、「谷スイッチをオン」って認識されちゃいましたが、ようやくダミースイッチをオンに出来ました。
とはいえ、何も出来ません。
ログは残っているようです。
[2017-06-14 22:34:59] [ダミースイッチ] Setting switch to true
[2017-06-14 22:35:00] [ダミースイッチ] Setting switch to false
とりあえず、動作確認が出来たので、Ctrl+Cで止めましょう。
では、init.dに自動起動させましょう。
設定ファイルを別な場所にコピーします。
gentoo ~ # mkdir /var/homebridge
gentoo ~ # cp -R ~/.homebridge/* /var/homebridge
gentoo ~ # chmod -R 0777 /var/homebridge
gentooのお作法に則って、/etc/init.d/localに起動してもらいます。
gentoo ~ # cd /etc/local.d
gentoo local.d # nano homebridge.start
#!/bin/sh
/usr/bin/homebridge -U /var/homebridge &
gentoo local.d #
chmod +x homebridge.start
で、localを再起動して終了。
gentoo local.d #
/etc/init.d/local restart
さあこれで、Homekit対応デバイスが買えるぞ!
参考にさせていただいたサイト
Raspberry Pi以外のサーバーにHomebridgeをインストールしつつ、ダミースイッチまで紹介されています。
init.dでデーモンとしてUbuntuで走らせる方法を記載しています。
私はGentooなのでだいぶ違いますが・・・。