#はじめに
本記事はhomebridgeでsiriから家電コントロールの最新版として投稿させてもらいます。
動作環境としてはRaspbianのjessieを想定しています。
大まかな流れは、上記記事を参考に。
以下が最新情報となっています。
説明は、逆の3,2,1と追って説明します。
1.iOS10から登場した「ホーム」に対応
2.homebridge-irkitの最新版に対応(これで長い赤外線コマンドでもOK。エアコンとかも動くよ!)
3.最新インストール作業に対応(それなりに簡略化できたと思う)
#最新インストール作業(Step1)
基本に立ち戻り、公式を覗くところからスタートしました。
まずはRunning HomeBridge on a Raspberry Piの記載の流れで実施。
homebridgeの導入に関しては、公式の方法でなく以下で導入。
sudo npm install -g homebridge
基本的には上記で導入できるはず。
homebridgeのパスは/usr/bin/homebridge
になる。
プラグイン類は以下で導入。問題なく入るはず。
sudo npm install -g homebridge-philipshue
sudo npm install -g homebridge-netatmo
sudo npm install -g homebridge-cmd
sudo npm install -g homebridge-irkit
sudo npm install -g homebridge-ifttt
最後に起動スクリプトを作成。
以下を/etc/init.d/homebridge
に配置する。
パーミッションは0755で、最後にsudo insserv -d homebridge
をお忘れなく。
#!/bin/sh
### BEGIN INIT INFO
# Provides: homebridge
# Required-Start: $network $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO
dir="/home/pi"
cmd="DEBUG=* /usr/bin/homebridge"
user="pi"
name=`basename $0`
pid_file="/var/run/$name.pid"
stdout_log="/var/log/$name.log"
stderr_log="/var/log/$name.err"
get_pid() {
cat "$pid_file"
}
is_running() {
[ -f "$pid_file" ] && ps `get_pid` > /dev/null 2>&1
}
case "$1" in
start)
if is_running; then
echo "Already started"
else
echo "Starting $name"
cd "$dir"
if [ -z "$user" ]; then
sudo $cmd >> "$stdout_log" 2>> "$stderr_log" &
else
sudo -u "$user" $cmd >> "$stdout_log" 2>> "$stderr_log" &
fi
echo $! > "$pid_file"
if ! is_running; then
echo "Unable to start, see $stdout_log and $stderr_log"
exit 1
fi
fi
;;
stop)
if is_running; then
echo -n "Stopping $name.."
kill `get_pid`
for i in {1..10}
do
if ! is_running; then
break
fi
echo -n "."
sleep 1
done
echo
if is_running; then
echo "Not stopped; may still be shutting down or shutdown may have failed"
exit 1
else
echo "Stopped"
if [ -f "$pid_file" ]; then
rm "$pid_file"
fi
fi
else
echo "Not running"
fi
;;
restart)
$0 stop
if is_running; then
echo "Unable to stop, will not attempt to start"
exit 1
fi
$0 start
;;
status)
if is_running; then
echo "Running"
else
echo "Stopped"
exit 1
fi
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
;;
esac
exit 0
#homebridge-irkitの最新版に対応(Step2)
homebridge-irkitのjsonの記載方法が変更になっているので対応する。
ついでに、長い赤外線コマンドも送信できるよう修正されている模様。
知らぬ間に今まで送信できなかった長めのエアコンコマンドまで送信ができた。
irkit_url
がirkit_host
になっていた。
1.変更前
{
"accessory": "IRKit",
"name": "Regza",
"irkit_url": "http://<IRKIT_ADDRESS>/messages",
"on_form": {"format":"raw","freq":38,"data":[<COMMAND>]},
"off_form": {"format":"raw","freq":38,"data":[<COMMAND>]}
}
1.変更後
{
"accessory": "IRKit",
"name": "Regza",
"irkit_host": "<IRKIT_ADDRESS>",
"on_form": {"format":"raw","freq":38,"data":[<COMMAND>]},
"off_form": {"format":"raw","freq":38,"data":[<COMMAND>]}
}
#iOS10から登場した「ホーム」に対応(Step3)
いよいよ再度の目玉。
iOS10からhomkit標準で対応になった「ホーム」での動作を確認する。
Step1とStep2が完了していれば、何もせずに動作するはず。
コード入力はカメラからの取り込みではなく、手入力をする。(起動スクリプトで起動させているので)
下にスライドさせると、デバイスのダイジェストが表示されるみたい。
このあたりの操作感は標準ならではという感じ。
#さいごに
iOS10でhomekitにようやく標準で対応してきて、使い勝手も向上していい感じになった。
amazon echoやgoogle homeなど、ライバルが出現してきているのでappleとしても力を入れてきたのかな?と思います。
追記では、色々保留になってるIFTTT連携とかネタを見つけたらやってみるつもりです。