ZhgChg.Li

WFHに最適|HomeBridgeで米家家電をHomeKitに一括連携し快適スマートホーム実現

在宅勤務の生産性向上に、樹莓派を使ったHomeBridgeで米家家電をHomeKitに統合。スマホ一つで家電操作が可能になり、快適なスマートホーム環境を構築します。

WFHに最適|HomeBridgeで米家家電をHomeKitに一括連携し快適スマートホーム実現
本記事は AI による翻訳です。お気づきの点があればお知らせください。

快適なWFHスマートホーム環境を作る、家電の操作は指先で簡単に

樹莓派をHomeBridgeサーバーとして使用し、すべてのMi Home家電をHomeKitに接続する方法のデモ

photo by picjumbo.com

photo by picjumbo.com

について

コロナ禍の影響で、自宅で過ごす時間が長くなりました。特にテレワークをする場合、家の電化製品はすべてアプリでスマートに操作できると、いちいち離れて照明をつけたり炊飯器を操作したりする必要がなく、時間の無駄を減らせます。

以前に「スマートホーム初体験 — Apple HomeKit & Xiaomi Mijia**」という記事を書きました。HomeBridgeを使ってXiaomi家電をHomeKitに接続する試みで、理論上は可能ですが、実際の応用例はあまり多くありませんでした。今回の記事は前回の内容を総合した応用版で、ラズベリーパイをホストに選んだ場合の設定方法を最初から最後まで丁寧に解説します。

きっかけは最近 iPhone 11 Pro に買い替えたことで、iOS 13 以降で使えるショートカットの NFC 自動化機能が利用可能になったことです。つまり、スマホが NFC タグを感知すると対応するショートカットを実行できます。古い悠遊カードをそのまま NFC タグとして使うこともできますが、場所を取るしカードもたくさん持っていません。光華商場で探しましたが NFC タグのシールは売っておらず、最後にショッピファイで1枚50元のものを5枚買って試しました。販売者は色分けしてくれてとても親切でした。

NFC自動化機能は機種限定で、iPhone XS/XS max/XR/11/11pro/11pro maxのみ対応しています。以前のiPhone 8にはNFCの選択肢が全くありませんでした。

少し試してみたところ、問題がありました。米家アプリのショートカットを実行する際、「実行時に表示」をオンにしないと実際に実行されません。タグを感知して実行する場合でも、iPhoneのロック解除が必要で、実行時にショートカットが開くため、バックグラウンドで直接感知・実行できません。一方で、ショートカットが純正のAppleサービス(例:HomeKitの家電)であれば、バックグラウンドかつロック解除なしで直接実行可能です。また、HomeKitの反応速度や安定性は米家よりもかなり優れています。

これは使い勝手に大きな差があるため、さらに詳しく調べて米家スマートホームシリーズの製品をすべてHomeKitに接続しました。HomeKit対応のものは直接連携し、本記事では省略します。対応していないものは本記事の手順で一緒に連携してください!

私のMi Homeスマートホームプロジェクト

  1. 米家スマートカメラ PTZ版 1080P

  2. 米家直流インバーターファン

  3. 米家 LED スマートデスクライト

  4. 小米空気清浄機 3

  5. 米家デスクライト Pro(HomeKit対応済み)

  6. 米家 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 )

Raspberry Pi 3B(特別感謝 Lu Xun Huang

もしラズベリーパイを使う場合は、micro SDカード(大容量でなくてよい、私は8Gを使用)、カードリーダー、ネットワークケーブル(設定用で、その後はWiFi接続可能)、そしてラズベリーパイに必要なソフトウェアが必要です:

  1. ラズベリーパイ デスクトップ版OS(初心者向け、GUI版を使用)

  2. Etcher 書き込みソフト

ラズベリーパイ環境設定

OSの書き込み作業

必要な2つのソフトをダウンロードしたら、まずメモリーカードをカードリーダーに入れてパソコンに接続します;Etcher(balenaEtcher)を起動します。

最初にダウンロードしたRaspberry PiのOS「xxxx.img」を選択し、次にメモリーカードのデバイスを選んでから「Flash!」をクリックして書き込みを開始します!

最初の項目でダウンロードしたRaspberry PiのOS「xxxx.img」を選択し、次にメモリーカードのデバイスを選択してから「Flash!」をクリックして書き込みを開始します!

この時に **MacOS のパスワード** を入力する画面が表示されます。入力後、「Ok」を押して続行してください。

この時に MacOS のパスワード を入力するよう求められます。入力後、「Ok」を押して続行してください。

書き込み中…しばらくお待ちください…

書き込み中…しばらくお待ちください….

検証中…しばらくお待ちください…

検証中…しばらくお待ちください….

書き込み成功!

書き込み成功!

*赤いエラーが表示された場合は、SDカードをフォーマットしてから再度書き込みを試してください。

カードリーダーを再度パソコンに接続し、メモリーカードのルートディレクトリに空の「ssh」ファイルを作成します(またはこちらからダウンロード)。内容は空白で拡張子なしの「ssh」ファイルです。これでTerminalからラズベリーパイに接続できます。

ssh

ssh

ラズベリーパイの設定

記憶カードを取り出し、ラズベリーパイに挿入してLANケーブルを接続し、電源を入れます。MacBookとラズベリーパイが同じネットワーク環境にあることを確認してください。

ラズベリーパイに割り当てられたIPアドレスの確認

樹莓派に割り当てられたIPアドレスは:192.168.0.110(本文中に出てくるIPはすべて、ご自身で確認したものに置き換えてください)

ラズベリーパイのIPアドレスを固定または予約設定することをおすすめします。そうしないと、再起動後にIPアドレスが変わり、再度確認が必要になります。

SSHを使ってラズベリーパイに接続して操作する

ターミナルを開き、以下を入力してください:

ssh pi@あなたのラズベリーパイのIPアドレス

質問があれば yes と入力し、パスワードはデフォルトの raspberry を入力してください。

**接続成功!**

接続成功!

*もし「WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED」のようなエラーが出た場合は、まず /Users/xxxx/.ssh/known_hosts をテキストエディタで開き、内容を削除してください。

ラズベリーパイ基本ツールのインストールと設定

  1. 以下のコマンドを入力して Vim エディタをインストールします:
sudo apt-get install vim

(註解なしのため翻訳不要)

2. 以下の言語警告を解決する:

perl: warning: ロケール設定に失敗しました。
perl: warning: ロケール設定を確認してください:
    LANGUAGE = (未設定),
    LC_ALL = (未設定),
    LC_LANG = "zh_TW.UTF-8",
    LANG = "zh_TW.UTF-8"
    がシステムにサポートされインストールされているか確認してください。
perl: warning: 標準ロケール ("C") にフォールバックします。

入力

vi .bashrc

「Enter」を押して進む

i 」を押して編集モードに入る

ファイルの一番下に移動し、「 export LC_ALL=C 」を追加してください。

「Esc」を押して「:wq!」と入力し、保存して終了します。

次に「 source .bashrc 」を実行して更新してください。

3.nvm を使って nodejs/npm を管理する:

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

確認

エラーメッセージがなければOK!

エラーメッセージがなければ問題ありません!

6.nodejs の接続を作成する

以下のコマンドを入力してください

which node

nodejs のパス情報を取得する

再入力

sudo ln -fs ここに which node で調べたパスを貼り付ける("ダブルクォーテーション不要) /usr/local/bin/node

リンクを作成する

設定完了!

Raspberry PiのVNCリモートデスクトップ機能を有効化する

ここではGUI版をインストールしますが、もちろんラズベリーパイにキーボードやHDMIを接続して一般的なパソコンとして使うこともできます。しかし、今回は便利さのためにリモートデスクトップでラズベリーパイを操作します。

入力:

sudo raspi-config

設定に入る:

「**Interfacing Options**」の5番目を選択

5番目の「 Interfacing Options 」を選択してください。

「**P3 VNC**」の3番目を選択

3番目の「P3 VNC」を選択してください。

「 **←** 」を使って「 **Yes** 」を選択して開く

」を使って「 Yes 」を選択し、開く

**VNCリモートデスクトップ機能が正常に有効になりました!**

VNCリモートデスクトップ機能の有効化に成功しました!

「 **→** 」を使って直接「 **Finish** 」に進み、設定画面を終了します。

」を使って直接「 Finish 」に進み、設定画面を終了します。

VNCリモートデスクトップサービスを起動時自動実行に追加する

VNCリモートデスクトップサービスがラズベリーパイの起動時に自動で有効になるようにしたいです。

入力

sudo vim /etc/init.d/vncserver

「Enter」を押して進む

i 」を押して編集モードに入る

#!/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!」と入力して保存して終了します。

再入力:

sudo chmod 755 /etc/init.d/vncserver

ファイルの権限を変更する。

再入力:

sudo update-rc.d vncserver defaults

起動時の自動起動項目に追加する。

最後の入力:

sudo reboot

ラズベリーパイを再起動します。

*再起動が完了したら、前と同じ手順で再度 ssh 接続してください。

VNCクライアントを使った接続方法:

ここでは Chrome のアプリ「VNC® Viewer for Google Chrome™」を使用します。インストール後に起動し、ラズベリーパイのIPアドレス:1 を入力してください。後ろの Port:1 を必ず付け加えることに注意してください!

*私はMacに標準搭載されているVNC://で接続できません。原因は不明です。

「**Connect**」をクリックします。

Connect 」をクリックしてください。

「 **OK** 」をクリックします。

OK 」をクリックします。

**ログインアカウントとパスワードを入力**、SSH接続と同じで、アカウントは `pi`、初期パスワードは `raspberry` です。

ログインアカウントとパスワードを入力し、SSH接続します。アカウントは pi、初期パスワードは raspberry です。

**接続成功!**

接続成功!

ラズベリーパイの初期設定完了:

次はすべてグラフィカルユーザーインターフェースです!とても簡単です!

言語、地域、タイムゾーンの設定。

言語、地域、タイムゾーンの設定。

Raspberry Piのデフォルトパスワードを変更し、設定したいパスワードを入力してください。

ラズベリーパイのデフォルトパスワードを変更し、設定したいパスワードを入力してください。

直接「 **Next** 」をクリックしてください。

直接次のステップ「 Next 」を押してください。

WiFi接続を設定すれば、以降は有線接続が不要になります。

WiFi接続を設定すれば、その後はケーブルを差す必要がありません。

*ただし、ラズベリーパイのIPアドレスは変わる可能性があるため、ルーターで再度確認してください。

現在のOSを更新しますか?急いでいなければ「**Next**」を選んで更新しましょう!

現在のOSを更新しますか?急がなければ「 Next 」を選んで更新しましょう!

*更新には約20〜30分かかります(ネット速度によります)

更新完了ら、「 **Restart** 」をクリックして再起動します。

更新が完了したら、「 Restart 」をクリックして再起動してください。

ラズベリーパイ環境設定完了!

HomeBridge インストール

いよいよ本題、HomeBridgeのインストールと使用開始です。

Terminalでsshを使ってRaspberry Piに接続するか、VNCリモートデスクトップ内のTerminalを直接使用します。

入力:

npm -g install homebridge --unsafe-perm

^( sudoを付けない )

HomeBridge のインストール

インストール完了!

設定ファイル(config.json)の作成/編集:

編集を便利にするため、VNCリモートデスクトップでラズベリーパイに接続します(コマンドでも直接操作可能):

左上の角をクリックして「 ファイルマネージャー 」を開き、「 /home/pi/.homebridge 」に入ります。

「config.json」ファイルが見つからない場合は、空白部分で右クリックし「New File」→ ファイル名に「config.json」を入力してください。

config.json 」を右クリックして「 Text Editor 」で開く

以下の基本設定内容を貼り付けてください:

{
   "bridge": {
  "name": "Homebridge",
  "username": "CC:22:3D:E3:CE:30",
  "port": 51826,
  "pin": "123-45-568"
}

内容は特に変更せず、そのままコピーしてください!

必ず保存してください!

完了!

HomeBridge を HomeKit に連携する

入力:

homebridge start

^( sudoを付けない )

有効化

*もし「Error: 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サービスもラズベリーパイの起動時に自動で起動するようにしたいです。そうしないと、再起動のたびに手動で接続して起動する必要があります。

入力:

which homebridge

homebridge のパス情報を取得する

このパスをメモしてください。

再入力:

sudo vim /etc/init.d/homebridge

「Enter」を押して進む

i 」を押して編集モードに入る

#!/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 で確認したパスを貼り付けてください”

あなたが見つけたパス情報に置き換えてください(“二重引用符”は不要です)

「Command」+「C」、「Command」+「V」で上記の内容をコピー&ペーストし、「Esc」を押して「:wq!」と入力して保存して終了します。

再入力:

sudo chmod 755 /etc/init.d/homebridge

ファイルの権限を変更する。

最後の入力:

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と連携するための情報を取得します。

スマート家電をすべて米家APPに追加した後:

iPhone を Mac に接続し、Finder または iTunes を開いて、接続したデバイスを選択します。

このコンピュータ 」にバックアップを選択し、「 このコンピュータのバックアップを暗号化しない 」にチェックを入れず、「 今すぐバックアップ 」をクリックしてください。

バックアップが完了したら、ダウンロードしてバックアップ閲覧ソフトウェアをインストールします:iBackupViewer

iBackupViewer 」を開く

初回起動時に、Macの「システム環境設定」-「セキュリティとプライバシー」-「プライバシー」-「+」から「iBackupViewer」を追加するよう求められます。

**プライバシーが気になる場合は、ネットワークを切断してこのソフトウェアを使用し、使用後に削除してください*

再度「iBackupViewer」を開き、バックアップファイルの読み込みに成功したら、「直近のバックアップされたiPhone」をクリックします。

「**App Store**」アイコンを選択

App Store 」アイコンを選択してください

左側で「米家 APP (MiHome.app)」を見つけ、右側で「 **数字_mihome.sqlite」** ファイルを見つけて「 **選択** 」-> 右上の「 **Export** 」-> 「 **Selected Files** 」

左側で「米家 APP (MiHome.app)」を見つけ、右側で「 数字_mihome.sqlite」というファイルを見つけて「 選択 」し、右上の「 Export 」->「 Selected Files 」をタップします。

*もし「数字_mihome.sqlite」ファイルが2つある場合は、作成日時が最新のものを使用してください。

先ほどエクスポートした 数字_mihome.sqlite ファイルを このサイトにドラッグアンドドロップして内容を確認してください:

クエリ構文を次のように変更できます:

SELECT `ZDID`,`ZNAME`,`ZTOKEN` FROM 'ZDEVICE' LIMIT 0,30

必要な項目のみ表示する(特定の家電プラグインで追加の項目が必要な場合は、フィルタに加えてもよい)

  1. ZDID: デバイスID

  2. ZNAME: デバイス名

  3. ZTOKEN: デバイスのZToken

ZTOKENは直接使用できません。「Token」に変換してから使用してください。

ここではカメラのZTokenをTokenに変換する例を示します:

まず、上記リストからカメラの ZToken 欄の内容を取得します。

7f1a3541f0433b3ccda94beb856c2f5ba2b15f293ce0cc398ea08b549f9c74050143db63ee66b0cdff9f69917680151e

しかし、ここで取得したTOKENはまだ使えません。さらに変換する必要があります。

http://aes.online-domain-tools.com/ このサイトを開く:

  1. コピーした ZTOKEN を「Input Text」に貼り付け、「Hex」を選択してください。

  2. Key入力には「00000000000000000000000000000000」の32個の0を入力し、同様に「Hex」を選択してください。

  3. そして「Decrypt!」を押して変換します。

  4. 右下の2行の出力内容をすべて選択してコピーし、空白を取り除くと、目的の Token になります。

「 **6d304e6867384b704b4f714d45314a34** 」が私たちの求めているTokenの結果です!

6d304e6867384b704b4f714d45314a34 」が私たちの求めていたTokenの結果です!

*Tokenの取得方法については、「miio」を使って直接スニッフィングする方法を試しましたが、どうやら米家のファームウェアが更新されており、この方法で簡単にTokenを取得することはできなくなったようです。

最後に、デバイスのIPアドレスも確認する必要があります(ここではカメラを例にします):

米家APPを開く → カメラ → 右上の「…」→ 設定 → ネットワーク情報で IPアドレス を取得!

ZDID/Token/IP の情報を記録し、後で使用できるようにしてください。

米家スマート家電を一つずつ HomeBridge に接続する

各デバイスの必要なプラグインや接続情報が異なるため、個別にインストール・設定し、HomeBridgeに追加します。

次にターミナルを開き、sshでラズベリーパイに接続するか、直接VNCリモートデスクトップ内のターミナルを使って作業を続けます…

1.米家カメラ雲台版:

Terminalで以下のコマンドを実行し、MijiaCameraというhomebridgeプラグインをインストールします(sudoは不要):

npm install -g homebridge-mijia-camera

前述の設定ファイル(config.json)の編集方法を参考に、ファイル内に accessories セクションを追加します

{
   "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 には前述の手順で取得したtokenを入力してください。

必ず保存してください!

そしてHomebridgeの章で説明した通りに、起動/再起動/スキャンしてHomebridgeに追加すると、「ホーム」アプリでカメラのコントロール項目が表示されます。

制御可能な項目:カメラのオン/オフ

2.米家直流インバーターファン

Terminalで以下のコマンドを実行し、homebridge-mi-fan というhomebridgeプラグインを sudoなしで インストールします:

npm install -g homebridge-mi-fan

前述の設定ファイル(config.json)の編集方法を参考に、ファイル内に platforms セクションを追加します(既にある場合はセクション内の「,」で子セクションを追加してください)

{
   "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種類の異なる扇風機モデルに対応しています:

  1. 智米直流インバーターフロアファン:ZhiMiDCVariableFrequencyFan

  2. 智米自然風扇:ZhiMiNaturalWindFan

  3. 米家直流インバーター:MiDCVariableFrequencyFan(台湾で販売)

  4. 米家扇風機:DmakerFan

ご自身の扇風機の型番を入力してください。

必ず保存してください!

そしてHomebridgeの章で説明した通りに、起動/再起動/スキャンしてHomebridgeに追加すると、「ホーム」アプリでカメラのコントロール項目が表示されます。

制御可能な項目:扇風機のオン/オフ、風力の調整

3. Xiaomi 空気清浄機 3

Terminalで以下のコマンドを実行し、homebridge-xiaomi-air-purifier3というhomebridgeプラグインをsudoを使わずにインストールします:

npm install -g homebridge-xiaomi-air-purifier3

前述の設定ファイル(config.json)の編集方法を参考に、ファイル内に accessories セクションを追加してください(既にある場合はセクション内の「,」で子セクションを追加します)

{
   "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なしでインストールします:

npm install -g homebridge-yeelight-wifi

前述の設定ファイル(config.json)の編集方法を参考に、ファイル内に platforms セクションを追加します(既にある場合はセクション内の「,」で子セクションを追加してください)

{
   "bridge":{
      "name":"Homebridge",
      "username":"CC:22:3D:E3:CE:30",
      "port":51826,
      "pin":"123-45-568"
   },
   "platforms":[
      {
         "platform":"yeelight",
         "name":"Yeelight"
      }
   ]
}

特別なパラメータを渡す必要はありません!より詳細な設定を行いたい場合は、公式ドキュメント(明るさや色温度など)を参照してください。

必ず保存してください!

スマートデスクライトは「 Yeelight 」アプリに再度紐付けし、「ローカルネットワーク制御」をオンにする必要があり、これでHomebridgeから制御可能になります。

  1. iPhoneで「 Yeelight 」アプリをダウンロードしてインストールする

App Storeで「Yeelight」を検索してインストール

App Storeで「Yeelight」を検索してインストールする

インストール完了後、Yeelightアプリを開く -> 「デバイス追加」-> 「Mi Homeデスクライト」を見つける -> 再ペアリングしてバインド

インストール後、Yeelightアプリを開き -> 「デバイスを追加」-> 「Mi Homeデスクライト」を見つけ -> 再ペアリングして紐付けます

最後のステップで「**ローカルネットワーク制御**」をオンにすることを忘れないでください

最後のステップで「ローカルネットワーク制御」をオンにしてください。

*もし誤って開かなかった場合は、「デバイス」ページ -> テーブルライトのデバイスを選択 -> 右下の「△」タブをタップ -> 「ローカルネットワーク制御」をタップして設定画面へ -> ローカルネットワーク制御をオンにしてください

正直に言うと、これは本当にひどいです。Mi Homeアプリ自体にこのスイッチ機能がなく、必ずYeelightアプリに紐付ける必要があります。また、解除や再度Mi Homeに紐付け直すこともできません…そうしないと機能しなくなります。

そしてHomebridgeの章で説明した通りに、起動/再起動/スキャンしてHomebridgeに追加すると、「ホーム」アプリでカメラのコントロール項目が表示されます。

制御可能な項目:ライトのオン/オフ、色温度調整、明るさ調整

その他の米家スマート家電用 homebridge プラグイン:

私の最終的な config.json はこのようになっています:

{
   "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. 小米空気清浄機第1世代: homebridge-mi-air-purifier

  2. 米家スマートプラグシリーズ: homebridge-mi-outlet

  3. 小米ロボット掃除機: homebridge-mi-robot_vacuum

  4. 米家スマートゲートウェイ: homebridge-mi-aqara

注意事項

  1. ルーターで全ての米家家電のIPを固定/予約することを推奨します。そうしないとIPアドレスが変わり、config.jsonの設定を再度変更する必要があります。

  2. 手順がすべて正しいのに接続できずエラーが出る、またはHomeKitで「応答なし」と表示され続ける場合は、再度試してください。それでも同じ場合は、プラグインが無効になっている可能性があるため、別のプラグインを探して接続する必要があります。(githubのissueを確認してください)

  3. 機能が動作しない、反応が遅い場合も解決策はありません。作者にissueを報告してアップデートを待つしかありません。オープンソースプロジェクトなのであまり多くは望めません!

  4. 各家電をバインドした後は、Homebridgeを一度起動し、iPhoneで動作確認を行います。動作する場合は「Control」+「C」で終了してください。すべての家電がバインドできたら、ラズベリーパイを再起動し、再起動後に自動でHomebridgeサービスがバックグラウンドで起動するようにします。これが私たちの望む状態です。

結語

また、「設定」->「コントロールセンター」->「カスタマイズ」で「ホーム」アプリを追加すると、コントロールセンターの下に表示され、HomeKitを素早く操作できます!

また、「設定」->「コントロールセンター」->「カスタマイズ」で「ホーム」アプリを追加すると、コントロールセンターの下に表示され、HomeKitを素早く操作できます!

すべてを HomeKit に接続した後の感想は一言「最高」!スイッチの反応も速くなり、家庭の中枢がなくて遠隔操作ができないのが唯一の欠点です。これで上級者向けの Homebridge 設定は終了です。ご覧いただきありがとうございました。

記事の冒頭に戻り、すべてを HomeKit に統合すれば、iOS 13以降のショートカット自動化機能をストレスなく使えるようになります。

あとで HomeBridge のプラグインがどう作られているか調べてみたいと思います。とても面白そうですね!もし HomeBridge のプラグインが操作の要望に合わなかったり、壊れて代わりが見つからなかったら、私が調査するのを待っていてください!

Home assistant

もう一つのスマートホームプラットフォームに Homeassistant があり、ラズベリーパイにインストールして使えます(ただし、起動には2Aの電源が必要です)。Homeassistant は私も試してみましたが、全てGUIで操作でき、クリックするだけで家電を連携できます。今後さらに詳しく研究するつもりですが、多くの異なるメーカーのIoT機器がある場合は、このプラットフォームの方が適していると感じています。

参考資料

  1. https://www.domoticz.cn/forum/viewtopic.php?t=52

  2. https://or2.in/2017/07/02/Homekit-and-MiJia-with-pi/#3-%E5%8F%B7%E5%A4%96-%E5%BC%80%E5%90%AF%E5%8F%AF%E8%A7%86%E5%8C%96VNC

関連記事

  1. 小米スマートホーム新購入品(AIスピーカー、温湿度センサー、体重計2台、DCインバーターファン)

  2. iOS ≥ 13.1で「ショートカット」自動化機能を使い、米家スマートホームを連携(iOS ≥ 13.1に標準搭載されているショートカットAPPで自動化操作を完結)

  3. 米家APP / 小愛音箱の地域設定問題

  4. スマートホーム初体験 — Apple HomeKit & Xiaomi Mi Home(Mi Homeスマートカメラとスマートデスクライト、HomeKit設定ガイド)

Post MediumからZMediumToMarkdownによって変換されました。

GitHub で編集
この記事を改善
本記事は Medium で初公開
オリジナルを読む
この記事をシェア
リンクをコピー · SNS でシェア
ZhgChgLi
著者

ZhgChgLi

An iOS, web, and automation developer from Taiwan 🇹🇼 who also loves sharing, traveling, and writing.

コメント