WFHに最適|HomeBridgeで米家家電をHomeKitに一括連携し快適スマートホーム実現
在宅勤務の生産性向上に、樹莓派を使ったHomeBridgeで米家家電をHomeKitに統合。スマホ一つで家電操作が可能になり、快適なスマートホーム環境を構築します。
本記事は AI による翻訳をもとに作成されています。表現が不自然な箇所がありましたら、ぜひコメントでお知らせください。
記事一覧
快適な在宅勤務(WFH)スマートホーム環境の構築、家電の操作は指先ひとつで
樹莓派を HomeBridge ホストとして使用し、すべてのMi Home家電をHomeKitに接続する方法のデモ
photo by picjumbo.com
について
コロナ禍の影響で、自宅で過ごす時間が長くなりました。特に在宅勤務の場合、家の電化製品をすべてアプリでスマートに操作できれば、いちいち離れて照明をつけたり炊飯器を操作したりする必要がなく、時間の無駄を減らせます。
以前に「スマートホーム初体験 — Apple HomeKit & Xiaomi Mi Home**」を書きました。HomeBridgeを使ってXiaomiの家電をHomeKitに接続する試みで、理論上は可能でしたが、実際の応用例はあまり多くありませんでした。今回の記事は前回の内容を総合した応用版で、ラズベリーパイをメイン機として選ぶ場合の設定方法を最初から最後まで手取り足取り解説します。
起因は最近 iPhone 11 Pro に買い替えたことで、iOS 13 以上のショートカットのNFC自動化機能が使えるようになったからです。つまり、スマホがNFCタグを感知すると対応するショートカットを実行できます。古い悠遊カードをNFCタグとして使うこともできますが、場所を取るしカードもそんなに多くありません。光華商場で探しましたがNFCタグのシールは売っておらず、最終的に蝦皮で1枚50元で5枚購入しました。販売者は色分けしてくれてとても親切でした。
NFC自動化機能は機種に紐づいており、iPhone XS/XS Max/XR/11/11 Pro/11 Pro Maxのみが対応しています。以前のiPhone 8ではNFCのオプションがまったくありませんでした。
少し触ってみて気づいた問題があります。米家アプリのショートカットを実行する際、「実行時に表示」オプションを必ずオンにしないと(そうしないと実際に実行されません)、タグを感知して実行するときにiPhoneのロック解除が必要で、実行時もショートカットが開くため、バックグラウンドで直接感知して実行することができません。一方、ショートカットが純正Appleサービス(例:HomeKitの家電)の場合は、バックグラウンドかつロック解除不要で直接実行できます。また、HomeKitの反応速度と安定性は米家よりもずっと優れています。
これは使い勝手に大きな差があるため、さらに深く調査して米家スマートホームシリーズの製品をすべてHomeKitに接続しました。HomeKit対応のものは直接連携し、本記事では詳述しません。非対応のものは本記事の手順に従って連携しています!
私のMi Homeスマートホームプロジェクト
米家スマートカメラ PTZ版 1080P
米家DCインバーターファン
米家 LED スマートデスクライト
小米空気清浄機 3
米家デスクライト Pro(元々 HomeKit 対応)
米家 LED スマート電球 カラー版 * 2 (HomeKit 対応済み)
動作原理
簡単な参考図を作成しました。もしスマート家電がHomeKitに対応していれば、直接接続できます。対応していないスマート家電は「HomeBridge」サービスホスト(常時起動が必要)を構築することで接続可能です。同じネットワーク環境(例:同じWiFi)内では、iPhoneからHomeKit内のすべての家電を自由に操作できます。しかし、外部ネットワーク(例:4Gモバイルネットワーク)では、Apple TV/HomePodまたはiPadを家庭のハブとして自宅に置き(こちらも常時起動が必要)、外出先からHomeKitを操作する必要があります。家庭のハブがない場合、外出先でホームアプリを開くと「応答なし」と表示されます。
*もし米家の場合は、米家サーバーを経由して自宅の家電を制御するため、セキュリティ上の問題があり、データはすべて中国本土を通過します。
必要な環境
なので、常に待機状態にしておくデバイスは2台あります。1台は Apple TV/HomePod または iPad のホームハブです。この部分は現時点で解決策がなく、他の方法で代用できません。これらのデバイスを用意するしかなく、なければ自宅でのみ HomeKit を使用することになります。。
もう一台、24時間待機可能なパソコン(例えば、お使いのiMacやMacBook)、使っていないサーバー(古いiMacやMac Mini)、またはラズベリーパイでも構いません。
*windowsシリーズは試していませんが、おそらく問題なく動作すると思います!
あるいは試してみたい場合は、現在のパソコンで直接使うこともできます(前の記事と併せてご利用ください)。
本文では、Raspberry Pi 3B と Macbook Pro (MacOS 10.15.4) を使用して、Raspberry Pi の環境設定を最初から説明します。Raspberry Pi を使わない方は、HomeBridge と HomeKit の連携部分まで直接スキップしても問題ありません(こちらは同じです)。
Raspberry Pi 3B(特別な感謝 Lu Xun Huang)
もしラズベリーパイを使う場合は、micro SDカード(大容量でなくてよく、私は8Gを使用)、カードリーダー、ネットワークケーブル(設定時に使用し、その後はWiFi接続可能)が必要です。また、ラズベリーパイに必要なソフトウェアも用意してください:
ラズベリーパイ環境設定
OSの書き込み作業
必要な2つのソフトをダウンロードした後、まずメモリーカードをカードリーダーに挿入し、パソコンに接続します。Etcher(balenaEtcher)を起動してください。
最初の項目でダウンロードしたRaspberry PiのOS「xxxx.img」を選択し、次にメモリーカードのデバイスを選択してから、「Flash!」をクリックして書き込みを開始します!
この時に MacOS のパスワード を入力するよう求められます。入力後、「Ok」を押して続行してください。
書き込み中…しばらくお待ちください….
検証中…しばらくお待ちください….
書き込み成功!
*赤いエラーが表示された場合は、メモリーカードをフォーマットしてから再度書き込みを試みてください。
カードリーダーを再度パソコンに接続し、メモリーカードのルートディレクトリに空の「ssh」ファイルを作成します(またはこちらからダウンロード)。内容は空で拡張子は不要、単なる「ssh」ファイルです。これにより、Terminal を使ってラズベリーパイに接続できます。
ssh
ラズベリーパイの設定
記憶カードを取り出し、ラズベリーパイに挿入してネットワークケーブルを接続し、電源を入れます。そして、MacBookとラズベリーパイが同じネットワーク環境にあることを確認してください。
ラズベリーパイに割り当てられたIPアドレスの確認
取得した Raspberry Pi に割り当てられた IP アドレスは:192.168.0.110(本文中のすべての IP は、ご自身で調べた結果に置き換えてください)
ラズベリーパイのIPアドレスは固定または予約設定を推奨します。そうしないと再起動後にIPアドレスが変わり、再度確認が必要になります。
SSHでラズベリーパイに接続して操作する
Terminal を開き、以下を入力してください:
1
ssh pi@あなたのラズベリーパイのIPアドレス
質問があれば yes と入力し、パスワードはデフォルトの raspberry を入力してください。
接続成功!
*もし「WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED」のようなエラーが表示された場合は、まず /Users/xxxx/.ssh/known_hosts をテキストエディタで開き、内容を削除してください。
ラズベリーパイ基本ツールのインストールと設定
- 以下のコマンドを入力して Vim エディタをインストールします:
1
sudo apt-get install vim
2.以下の言語警告を解決する:
1
2
3
4
5
6
7
8
perl: 警告: ロケールの設定に失敗しました。
perl: 警告: ロケール設定を確認してください:
LANGUAGE = (未設定),
LC_ALL = (未設定),
LC_LANG = "zh_TW.UTF-8",
LANG = "zh_TW.UTF-8"
システムでサポートおよびインストールされていることを確認してください。
perl: 警告: 標準ロケール ("C") にフォールバックします。
入力
1
vi .bashrc
「Enter」を押して進む
「i」を押して編集モードに入る
ファイルの一番下に移動し、「 export LC_ALL=C 」を1行追加してください。
「Esc」を押して「:wq!」と入力し、保存して終了します。
次に「 source .bashrc 」を実行して更新してください。
3.nvm を使って nodejs/npm を管理する方法:
1
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh \\| bash
4. nvmを使って最新版のnodejsをインストール:
nvm install 12.16.2
*ここでは「12.16.2」バージョンをインストールします
5.環境のインストール完了を確認:
以下のコマンドを入力してください
npm -v
と
node -v
確認
エラーメッセージがなければ問題ありません!
6. nodejs 接続の設定
以下のコマンドを入力してください
1
which node
nodejs のパス情報を取得する
再入力
1
sudo ln -fs ここに which node で確認したパスを貼り付ける("ダブルクォーテーション不要) /usr/local/bin/node
リンクを作成する
設定完了!
Raspberry PiのVNCリモートデスクトップ機能を有効化する
ここではGUI版をインストールしますが、もちろんラズベリーパイにキーボードとHDMIを接続して通常のパソコンのように使うこともできます。しかし、便利さのためにリモートデスクトップでラズベリーパイを操作します。
入力:
1
sudo raspi-config
設定に入る:
5番目の「 Interfacing Options 」を選択してください。
三番目の「P3 VNC」を選択してください。
「 ← 」を使って「 Yes 」を選択して開く
VNC リモートデスクトップ機能が有効になりました!
「 → 」を使って直接「 Finish 」に進み、設定画面を終了します。
VNCリモートデスクトップサービスを起動時自動起動に追加する
私たちは、VNCリモートデスクトップサービスがラズベリーパイの起動時に自動的に有効になることを望んでいます。
入力
1
sudo vim /etc/init.d/vncserver
「Enter」を押して進む
「i」を押して編集モードに入る
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/bin/sh
### BEGIN INIT INFO
# Provides: vncserver
# Required-Start: $local_fs
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: vncserverの起動/停止
### END INIT INFO
# 詳細は以下を参照してください:
# http://www.penguintutor.com/linux/vnc
### この項目をカスタマイズしてください
# USER変数をvncserverを起動するユーザー名に設定
export USER='pi'
### カスタマイズ終了
eval cd ~$USER
case "$1" in
start)
su $USER -c '/usr/bin/vncserver -depth 16 -geometry 1024x768 :1'
echo "$USER のVNCサーバーを起動中"
;;
stop)
su $USER -c '/usr/bin/vncserver -kill :1'
echo "vncserverを停止しました"
;;
*)
echo "使い方: /etc/init.d/vncserver {start\\|stop}"
exit 1
;;
esac
exit 0
「Command」+「C」、「Command」+「V」で上記の内容をコピー&ペーストし、「Esc」キーを押して「:wq!」と入力して保存して終了します。
再入力:
1
sudo chmod 755 /etc/init.d/vncserver
ファイルの権限を変更する。
再入力:
1
sudo update-rc.d vncserver defaults
起動時に自動で開始する項目に追加する。
最終入力:
1
sudo reboot
ラズベリーパイを再起動します。
*再起動が完了したら、先ほどの手順に従って再度 ssh 接続を行ってください。
VNCクライアントを使った接続:
ここでは Chrome のアプリ「 VNC® Viewer for Google Chrome™ 」を使用します。インストールして起動後、ラズベリーパイの IP アドレス:1 を入力してください。後ろの Port:1 を忘れずに追加してください!
*私はMacに標準搭載されているVNC://で接続できません。原因は不明です。
「 Connect 」をクリックしてください。
「 OK 」をクリックしてください。
ログインアカウントとパスワードを入力し、SSH接続します。アカウントは pi、デフォルトパスワードは raspberry です。
接続成功!
ラズベリーパイの初期設定を完了する:
次はすべてグラフィカルインターフェースです!とても簡単です!
言語、地域、タイムゾーンの設定。
ラズベリーパイのデフォルトパスワードを変更し、設定したいパスワードを入力してください。
直接次のステップ「 Next 」を選択してください。
WiFi接続を設定すれば、その後はケーブルを差す必要がありません。
*ただし、ラズベリーパイのIPアドレスは変わる可能性があるため、ルーターで再確認してください。
現在のOSを更新しますか?急がなければ「 Next 」を選んで更新してください!
*更新には約20〜30分かかります(ネット速度によります)
更新が完了したら、「 Restart 」をクリックして再起動してください。
ラズベリーパイ環境設定完了!
HomeBridge インストール
いよいよ本題、HomeBridgeのインストールと使用。
Terminalでsshを使ってラズベリーパイに接続するか、VNCリモートデスクトップ内のTerminalを直接使用します。
入力:
1
npm -g install homebridge --unsafe-perm
^( sudo を使わない )
HomeBridge のインストール
インストール完了!
設定ファイル(config.json)の作成/編集:
編集を便利にするため、VNCリモートデスクトップでRaspberry Piに接続します(コマンドでも直接操作可能):
左上の角をクリックして「ファイルマネージャー」を開き -> 「/home/pi/.homebridge」に入る
「config.json」ファイルが見当たらない場合は、空白部分で右クリックし「New File」を選択して、ファイル名に「config.json」と入力してください。
「 config.json 」を右クリックして「 テキストエディタ 」で開く
以下の基本設定内容を貼り付けてください:
1
2
3
4
5
6
7
{
"bridge": {
"name": "Homebridge",
"username": "CC:22:3D:E3:CE:30",
"port": 51826,
"pin": "123-45-568"
}
内容は特に変更せず、そのままコピーしてください!
必ず保存してください!
完了!
HomeBridge を HomeKit に連携する
入力:
1
homebridge start
^( sudoを付けない )
有効化
*エラー「Service name is already in use on the network」やポートが使用中の場合は、サービスを削除するか、
homebridge restartコマンドで再起動するか、またはシステムの再起動を試してください。
*「was not registered by any plugin」のようなエラーが表示された場合は、対応するhomebridgeプラグインがまだインストールされていないことを意味します。
起動中に設定ファイル(config.json)の内容を変更した場合は、以下を修正してください:
sudo homebridge restart
HomeBridge を再起動する
*「Control」+「C」を押すと、TerminalでHomeBridgeサービスを停止できます。
iPhoneを取り出して「ホーム」アプリを開き、「ホーム」の右上にある「+」をタップし、「アクセサリを追加」を選択して、表示されたQRコードをスキャンしてください。
この時、「アクセサリが見つかりません」と表示されるはずですが、ご安心ください!まだHomeBridgeブリッジにアクセサリを追加していないだけです。問題ありませんので、続けて進みましょう。
最低でも1つのアクセサリーが必要です!(ここではカメラを例としています):
最低でも1つのアクセサリーが必要です!(ここではカメラを例としています):
最低でも1つのアクセサリーが必要です!(ここではカメラを例としています):
初回スキャン時に警告ウィンドウが表示されますが、「強制参加」を押せば問題ありません!
一度追加すれば、その後に新しく追加したアクセサリは再スキャン不要で、自動的に更新されます!
HomeBridgeサービスをラズベリーパイの起動自動実行に追加する
VNC リモートデスクトップサービスと同様に、HomeBridge サービスもラズベリーパイの起動時に自動で開始されるようにしたいです。そうしないと再起動のたびに手動で接続して起動する必要があります。
入力:
1
which homebridge
homebridge のパス情報を取得する
このパスをメモしてください。
再入力:
1
sudo vim /etc/init.d/homebridge
「Enter」を押して進む
「 i 」を押して編集モードに入る
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#!/bin/sh
### BEGIN INIT INFO
# Provides:
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: ブート時にデーモンを起動
# Description: デーモンによって提供されるサービスを有効化します。
### END INIT INFO
dir="/home/pi"
cmd="DEBUG=* ここに which 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 -p `get_pid` > /dev/null 2>&1
}
case "$1" in
start)
if is_running; then
echo "既に起動しています"
else
echo "$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 "起動できませんでした。$stdout_log と $stderr_log を確認してください"
exit 1
fi
fi
;;
stop)
if is_running; then
echo -n "$name を停止中.."
kill `get_pid`
for i in 1 2 3 4 5 6 7 8 9 10
# for i in `seq 10`
do
if ! is_running; then
break
fi
echo -n "."
sleep 1
done
echo
if is_running; then
echo "停止できませんでした。まだシャットダウン中か失敗した可能性があります"
exit 1
else
echo "停止しました"
if [ -f "$pid_file" ]; then
rm "$pid_file"
fi
fi
else
echo "起動していません"
fi
;;
restart)
$0 stop
if is_running; then
echo "停止できなかったため、起動を試みません"
exit 1
fi
$0 start
;;
status)
if is_running; then
echo "起動中"
else
echo "停止中"
exit 1
fi
;;
*)
echo "使い方: $0 {start\\|stop\\|restart\\|status}"
exit 1
;;
esac
exit 0
変換:
cmd=”DEBUG=* ここに which homebridge で確認したパスを貼り付けてください”
あなたが見つけたパス情報に置き換えてください(“”は不要です)
「Commend」+「C」、「Commend」+「V」で上記の内容をコピー&ペーストし、「Esc」を押して「:wq!」と入力し保存して終了してください。
再入力:
1
sudo chmod 755 /etc/init.d/homebridge
ファイルの権限を変更する。
最後の入力:
1
sudo update-rc.d homebridge defaults
起動時に自動実行項目に追加する。
完了!
sudo /etc/init.d/homebridge startを使って直接homebridgeサービスを起動できます。
また、
tail -f /var/log/homebridge.errで起動エラーメッセージを確認し、tail -f /var/log/homebridge.logでログを確認できます。
米家スマート家電連携の準備
Homebridge が起動したら、すべての米家家電を一つずつ Homebridge に追加して HomeKit と接続できます!
まず最初に、すべてのMi Homeスマート家電を「 米家APP 」に追加します。ここからHomeBridgeと連携するための情報を取得します。
スマート家電をすべてMi Homeアプリに追加した後:
iPhone を Mac に接続し、Finder または iTunes の画面を開いて、接続したデバイスを選択します。
「 このコンピュータ 」を選択し、「 このコンピュータのバックアップを暗号化しない 」のチェックを外し、「 今すぐバックアップ 」をクリックしてください。
バックアップが完了したら、ダウンロードしてバックアップ閲覧ソフトウェアをインストールします: iBackupViewer
「 iBackupViewer 」を開く
初回起動時に、Macの「システム環境設定」-「セキュリティとプライバシー」-「プライバシー」-「+」から「iBackupViewer」を追加するよう求められます。
**プライバシーの懸念がある場合は、ネットワークをオフにしてこのソフトを使用し、使用後に削除してください*
再度「iBackupViewer」を開き、バックアップファイルの読み込みに成功したら、「直前にバックアップしたスマホ」をクリックしてください。
「 App Store 」アイコンを選択してください
左側で「米家 APP (MiHome.app)」を見つけ、→ 右側で「 数字_mihome.sqlite 」というファイルを「 選択 」し、→ 右上の「 Export 」→ 「 Selected Files 」をクリックします。
*もし「数字_mihome.sqlite」ファイルが2つある場合は、Created(作成日時)が最新のものを使用してください。
エクスポートした 数字_mihome.sqlite ファイルを このサイトにドラッグして内容を確認してください:
クエリ文を次のように変更できます:
1
SELECT `ZDID`,`ZNAME`,`ZTOKEN` FROM 'ZDEVICE' LIMIT 0,30
必要なフィールド情報のみ表示する(特定の家電プラグインで追加のフィールドが必要な場合は、それらもフィルタリングに含めることができます)
ZDID: デバイスID
ZNAME: デバイス名
ZTOKEN: デバイスのZToken
ZTOKENは直接使用できません。「Token」に変換してから使用する必要があります。
ここではカメラの ZToken を Token に変換する例を示します:
まず、上記リストからカメラの ZToken 欄の内容を取得します
1
7f1a3541f0433b3ccda94beb856c2f5ba2b15f293ce0cc398ea08b549f9c74050143db63ee66b0cdff9f69917680151e
しかし、ここで取得した TOKEN はまだ使用できません。さらに変換が必要です。
http://aes.online-domain-tools.com/ このサイトを開く:
コピーした ZTOKEN を「Input Text」に貼り付け、「Hex」を選択してください。
Keyに「00000000000000000000000000000000」32個の0を入力し、同様に「Hex」を選択してください。
そして「Decrypt!」を押して変換します。
右下隅の2行の出力内容をすべて選択してコピーし、空白を削除すると、必要な結果である Token になります。
「 6d304e6867384b704b4f714d45314a34 」が私たちが求めているTokenの結果です!
*Tokenの取得方法については「miio」を使って直接スニッフィングする方法を試しましたが、どうやら米家のファームウェアが更新されており、この方法では簡単にTokenを取得できなくなっています。
最後に、デバイスのIPアドレスも知っておく必要があります(ここではカメラを例にします):
米家APPを開く → カメラ → 右上の「…」→ 設定 → ネットワーク情報で IPアドレス を取得!
ZDID/Token/IPなどの情報を記録し、後で使用できるようにします。
米家スマート家電を一つずつ HomeBridge に接続する
各デバイスごとに必要なプラグインや接続情報が異なるため、個別にインストール・設定し、HomeBridgeに追加します。
次に Terminal を開き、ssh でラズベリーパイに接続するか、VNC リモートデスクトップ内の Terminal を直接使って作業を続けます…。
1.米家カメラ雲台版:
Terminalで以下のコマンドを実行し、MijiaCamera のhomebridgeプラグインをインストールします(sudoを付けない):
1
npm install -g homebridge-mijia-camera
前述の設定ファイル(config.json)編集の説明を参考に、ファイルに accessories セクションを追加します :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
{
"bridge":{
"name":"Homebridge",
"username":"CC:22:3D:E3:CE:30",
"port":51826,
"pin":"123-45-568"
},
"accessories":[
{
"accessory":"MijiaCamera",
"name":"Mi Camera",
"ip":"",
"token":""
}
]
}
accessories: に米家カメラの設定情報を追加します。ip にはカメラのIPアドレス、token には前述の手順で取得したトークンを入力してください。
忘れずに保存してください!
そして、Homebridgeの章で説明した通りに、起動/再起動/スキャンしてHomebridgeに追加すると、「ホーム」アプリでカメラのコントロール項目が表示されます。
制御項目:カメラのオン/オフ
2.米家直流変頻扇風機
Terminalで以下のコマンドを実行し、homebridge-mi-fan というhomebridgeプラグインをsudoなしでインストールします:
1
npm install -g homebridge-mi-fan
前述の設定ファイル(config.json)の編集方法を参考に、ファイル内に platforms セクションを追加します(既にある場合はセクション内の「,」で新しいサブセクションを追加してください) :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
{
"bridge":{
"name":"Homebridge",
"username":"CC:22:3D:E3:CE:30",
"port":51826,
"pin":"123-45-568"
},
"platforms":[
{
"platform":"MiFanPlatform",
"deviceCfgs":[
{
"type":"MiDCVariableFrequencyFan",
"ip":"",
"token":"",
"fanName":"部屋の扇風機",
"fanDisable":false,
"temperatureName":"部屋の温度",
"temperatureDisable":true,
"humidityName":"部屋の湿度",
"humidityDisable":true,
"buzzerSwitchName":"扇風機ブザーのスイッチ",
"buzzerSwitchDisable":true,
"ledBulbName":"扇風機LEDスイッチ",
"ledBulbDisable":true
}
]
}
]
}
platforms: に米家扇風機の設定情報を追加します。ip はカメラの ip を入力し、token は前述の方法で取得した token を入力します。humidity/temperature は温湿度計情報の連動表示を制御できます。
type には対応するモデル名の文字列を入力してください。4種類の異なる扇風機モデルに対応しています:
智米直流変頻フロアファン:ZhiMiDCVariableFrequencyFan
智米自然風扇:ZhiMiNaturalWindFan
米家直流変頻:MiDCVariableFrequencyFan(台湾で販売されています)
米家ファン:DmakerFan
ご自身の扇風機の型番を入力してください。
忘れずに保存してください!
そして Homebridge の章で教えられた通り、起動/再起動/スキャンして Homebridge に追加すると、「ホーム」アプリでカメラのコントロール項目が表示されます。
制御項目:扇風機のオン/オフ、風力の調整
3. Xiaomi 空気清浄機 3
Terminal で以下のコマンドを実行し、homebridge-xiaomi-air-purifier3 という homebridge プラグインを sudo を使わずに インストールします:
1
npm install -g homebridge-xiaomi-air-purifier3
前文の設定ファイル(config.json)の編集方法を参考に、ファイル内に accessories セクションを追加してください(既にある場合はセクション内の「,」で子セクションを追加します) :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
"bridge":{
"name":"Homebridge",
"username":"CC:22:3D:E3:CE:30",
"port":51826,
"pin":"123-45-568"
},
"accessories":[
{
"accessory":"XiaomiAirPurifier3",
"name":"Xiaomi 空気清浄機",
"did":"",
"ip":"",
"token":"",
"pm25_breakpoints":[
5,
12,
35,
55
]
}
]
}
accessories: に米家扇風機の設定情報を追加します。ipにはカメラのip、tokenには前述の方法で取得したtoken、didにはzdidを入力してください。
必ず保存してください!
そして、Homebridgeの章で説明した通りに起動/再起動/スキャンしてHomebridgeに追加すると、「ホーム」アプリでカメラのコントロール項目が表示されます。
制御可能な項目:空気清浄機のオン/オフ、風量調整
確認可能な項目:現在の温湿度
4.米家 LED スマートデスクライト
Terminalで以下のコマンドを実行し、homebridge-yeelight-wifiというhomebridgeプラグインをsudoなしでインストールします:
1
npm install -g homebridge-yeelight-wifi
前述の設定ファイル(config.json)の編集方法を参考に、ファイル内に platforms ブロックを追加してください(すでにある場合は、ブロック内で「,」を使って新しいサブブロックを追加します):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"bridge":{
"name":"Homebridge",
"username":"CC:22:3D:E3:CE:30",
"port":51826,
"pin":"123-45-568"
},
"platforms":[
{
"platform":"yeelight",
"name":"Yeelight"
}
]
}
特別なパラメータを渡す必要はありません!より詳細な設定を行いたい場合は、公式ドキュメント を参照してください(明るさや色温度など…)
保存を忘れずに!
スマートデスクライトは「Yeelight」アプリに再度バインドし、「ローカルネットワーク制御」をオンにする必要があり、そうすることで Homebridge が制御可能になります。
- iPhoneで「Yeelight」アプリをダウンロードしてインストールする
App Storeで「Yeelight」を検索してインストールしてください
インストール完了後、Yeelightアプリを開き、「デバイス追加」→「Mi Homeデスクライト」を見つけて、再ペアリングしてバインドします。
最後のステップで「ローカルネットワーク制御」を必ずオンにしてください。
*もし誤って開かない場合は、「デバイス」ページ -> テーブルランプのデバイスを選択 -> 右下の「△」タブをタップ -> 「ローカルネットワーク制御」をタップして設定 -> ローカルネットワーク制御をオンにしてください
少し不満を言うと、これは本当にひどいです。米家の公式アプリにはこのスイッチ機能がなく、必ずYeelightアプリに連携する必要があります。また、連携解除や再連携を米家に戻すこともできません…そうしないと動作しなくなります。
そして Homebridge の章で説明した通りに、起動/再起動/スキャンして Homebridge に追加すると、「ホーム」アプリでカメラのコントロール項目が表示されます。
制御可能な項目:ライトのオン/オフ、色温度調整、明るさ調整
その他の米家スマート家電用 homebridge プラグイン:
私の最終的な config.json は以下の通りです:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
{
"bridge":{
"name":"Homebridge",
"username":"CC:22:3D:E3:CE:30",
"port":51826,
"pin":"123-45-568"
},
"accessories":[
{
"accessory":"MijiaCamera",
"name":"Mi Camera",
"ip":"192.168.0.105",
"token":"6d304e6867384b704b4f714d45314a34"
},
{
"accessory":"XiaomiAirPurifier3",
"name":"Xiaomi Air Purifier",
"did":"270033668",
"ip":"192.168.0.108",
"token":"5c3eeb03065fd8fc6ad10cae1f7cce7c",
"pm25_breakpoints":[
5,
12,
35,
55
]
}
],
"platforms":[
{
"platform":"MiFanPlatform",
"deviceCfgs":[
{
"type":"MiDCVariableFrequencyFan",
"ip":"192.168.0.106",
"token":"dd1b6f582ba6ce34f959bbbc1c1ca59f",
"fanName":"room fan",
"fanDisable":false,
"temperatureName":"room temperature",
"temperatureDisable":true,
"humidityName":"room humidity",
"humidityDisable":true,
"buzzerSwitchName":"fan buzzer switch",
"buzzerSwitchDisable":true,
"ledBulbName":"fan led switch",
"ledBulbDisable":true
}
]
},
{
"platform":"yeelight",
"name":"Yeelight"
}
]
}
みなさんの参考に!
私が使っている米家家電は上記の通りで、他に持っていないものは試していません。皆さんはご自身で npmで検索(homebridge-plugin XXX英語名) して、上記の流れに沿ってインストール・設定して連携してください!
こちらにいくつか見つけたけれど試していない homebridge プラグインを添付します(動作保証はありません):
小米空気清浄機第1世代: homebridge-mi-air-purifier
米家スマートプラグシリーズ: homebridge-mi-outlet
小米ロボット掃除機: homebridge-mi-robot_vacuum
米家スマートゲートウェイ: homebridge-mi-aqara
注意事項
ルーターで全ての米家家電に固定IPを設定することを推奨します。そうしないとIPアドレスが変わり、config.jsonの設定を再度変更する必要があります。
手順が正しいのに接続できずエラーが出る、またはHomeKitに「応答なし」と表示され続ける場合は、再度試してください。それでも同じ場合はプラグインが無効になっている可能性があるため、別のプラグインを探して接続してください。(GitHubのissueを確認してください)
機能が動作しない、反応が遅い場合も解決できません。作者にissueを報告して更新を待つしかありません。オープンソースプロジェクトなので、多くを求めすぎないでください!
各家電をバインドした後、Homebridgeを一度起動し、iPhoneで動作確認を行います。動作する場合は「Control」+「C」で終了してください。すべての家電をバインドし終えたら、ラズベリーパイを再起動し、再起動後にHomebridgeサービスが自動でバックグラウンドで起動するようにします。これが望ましい動作です。
結び
また、「設定」->「コントロールセンター」->「カスタマイズ」から「ホーム」アプリを追加すると、下にスワイプしたコントロールセンターで HomeKit を素早く操作できます!
すべてを HomeKit に統合した結果、ただ一言「最高!」です。スイッチの反応も速くなり、あとはホームハブがないためリモート操作ができないだけです。これで上級者向け Homebridge の説明は終了です。ご覧いただきありがとうございました。
記事の冒頭に戻って、すべてを HomeKit に統合すれば、iOS 13 以降のショートカット自動化機能を問題なく使えるようになります。
後で homebridge プラグインがどう作られているか研究したいです。とても面白そうですね!もし HomeBridge プラグインが操作要件に合わなかったり、壊れて代替が見つからなければ、私が研究するのを待っていてください!
Home assistant
もう一つのスマートホームプラットフォームとして Homeassistant があり、ラズベリーパイにインストールして使用できます(ただし、起動には2Aの電源が必要です)。Homeassistant は私も試してみましたが、全てGUIのグラフィカル操作で、クリックするだけで家電を連携できます。今後さらに詳しく研究する予定ですが、多くの異なるメーカーのIOTデバイスがある場合は、こちらの方が適していると感じます。
参考資料
関連記事
iOS ≥ 13.1で「ショートカット」自動化機能を使って米家スマートホームを操作する(iOS ≥ 13.1内蔵のショートカットAPPを直接使って自動化を完了)
スマートホーム初体験 — Apple HomeKit と小米ミジア(ミジアスマートカメラとミジアスマートデスクランプ、HomeKit設定ガイド)
ご質問やご意見がございましたら、こちらからご連絡ください 。
Post MediumからZMediumToMarkdownによって変換されました。
本記事は Medium にて初公開されました(こちらからオリジナル版を確認)。ZMediumToMarkdown による自動変換・同期技術を使用しています。



{:target="_blank"} )](/assets/99db2a1fbfe5/1*go-wGMdV1VVbJ3c00rh0_w.webp)




























































