Raspberry Piで先取りHomekit Vol.3
前回までに、iPhoneのsiriで命令した事をRaspberry Piのhomebridgeを使って赤外線リモコン経由(irMagician)し家電を操作と一通り出来ましたが。
毎回コンソールを立ち上げhomebridgeを起動するのは間抜けなので、今回はhomebridgeをバックグラウンドで自動起動するようにします。
やり方は前回も参考にしたRunning HomeBridge on a Raspberry Piの「Running Homebridge on Bootup (systemd)」に書かれています。
説明ではhomebridgeを操作するだけのユーザーhomebridgeを作るとなってますが、色々と煩わしいのでログインしてるユーザーを使う事にします。ここではログインしてるユーザー名をhogeとしておきます。
まずは/var/homebridgeのフォルダを作って設定ファイルを移動します。
$ sudo mkdir /var/homebridge
$ sudo chown hoge:hoge /var/homebridge/
$ cp ~/.homebridge/config.json /var/homebridge/
$ sudo chown -R hoge:hoge /var/homebridge
次にバックグラウンド起動時に先程移動した設定ファイルを読むようにします。
$ sudo vi /etc/default/homebridge
HOMEBRIDGE_OPTS=-U /var/homebridge
そしてバックグラウンド起動の設定ファイルも作成します。
Userの値は各自書き換えてください。
$ sudo vi /etc/systemd/system/homebridge.service
[Unit]
Description=Node.js HomeKit Server
After=syslog.target network-online.target
[Service]
Type=simple
User=hoge
EnvironmentFile=/etc/default/homebridge
ExecStart=/usr/local/bin/homebridge $HOMEBRIDGE_OPTS
Restart=on-failure
RestartSec=10
KillMode=process
[Install]
WantedBy=multi-user.target
$ sudo systemctl daemon-reload
$ sudo systemctl enable homebridge
$ sudo systemctl start homebridge
これで自動起動は完了しました。
なお、説明によると設定が反映しない場合は「persist」フォルダを削除してhomebridgeを再起動すると良いらしいです。
$ rm -R /var/homebridge/persist/
$ sudo systemctl restart homebridge
iPhoneで確認すると一見正常に動作してるように見えたのですが、数分するとアクセス出来なくなりました。
再起動するとしばらく動いてるのですが再び反応しなくなります。
ログ確認を確認するも特に以上は見られません。
$ sudo journalctl -u homebridge
約一日作業で原因を調査したところポートを塞いでたのが原因と分りました。指定されたポート51826は空けてたので十分と思い込んでいたですが、システムログを見るとiPhoneから5353というポートにもアクセスを試みてる事が分った。
$ tail /var/log/syslog
ポート番号5353を調べてみるとBonjourのポートらしくLinux用の代替ソフト(avahi)もインストールもされてるようだ
$ avahi-daemon -v
念の為動作してるか見てみたがソフトの方はちゃんと起動もしてるようだ。
$ service –status-all
という事はポートが閉じてるので動作してないだけだろうとポートを空けてみると継続的にアクセス出来る様になりました。
Tags: Homekit, Raspberry Pi, Siri
[…] Raspberry Piで先取りHomekit Vol.3に続く […]