simon

simon

github

自制HomeKitスマートホーム

自制 HomeKit スマートホーム#

作成日: 2021 年 6 月 22 日 15:59
タグ: HomeKit, スマートホーム,ラズベリーパイ

この記事は知乎(https://zhuanlan.zhihu.com/p/31423265)と少数派に掲載されたもので、ここではアーカイブを作成します。実際の執筆時期は 2017 年です。

#

この記事は半年前にラズベリーパイをいじっていたときに書いたもので、実際にはこのコラムに掲載するのには適していません。なぜなら、私の会社の他の大物たちの文章と比べると、この記事には技術的な内容がほとんどないからです。しかし、全く無意味というわけではなく、少なくとも誰でも簡単に理解し、この記事に書かれていることを実現でき、コーディングの楽しさを体験できるでしょう。

HomeKit とは?#

HomeKit は Apple が iOS10 から提供しているスマートホームコンポーネントで、第三者が認証されたスマートハードウェアを iOS システムに接続し、Siri で制御できるようにします。また、ローカルネットワーク内でエンドツーエンドの暗号化を使用しており、安全性も非常に良好です。しかし、認証されたハードウェアは高価で少ないという明らかな欠点もあります。しかし、これは問題ではありません。なぜなら、私たちには homebridge があるからです。

**HomeBridgeとは?**#

Apple の HomeKit チームの元社員が書いたハッキング論文によると、NodeJS で書かれた HomeKit API を模倣するサーバーフレームワークで、GitHub には 7000 以上のスターがあります。対応するプラグインを書くことで、未認証のスマートデバイスを HomeKit に接続できます。

目標#

  1. 低コストで高体験のスマートホームを構築し、音声制御が可能にする。
  2. 比較的完全なスマートホーム体験を作り上げる。
  3. スマートホームをサポートしていない古いデバイスをスマートデバイスに改造する。
  4. 移植性が高く、引っ越し時に持ち運びが便利。

準備#

ハードウェア準備:#

  • ラズベリーパイ 3B 型 200 元

  • ラズベリーパイ電源(5V 2.5A)Android の 2A 充電器でも可、2.5A は高出力運転をサポートするため、将来の準備として。

  • 16G SD カード(できれば class 10 速度のもの) 50 元

  • LAN ケーブル 1 本

  • Yeelight 電球 99 元

  • 小米ゲートウェイ第 2 世代 149 元

  • 小米温湿度センサー 49 元

  • 小米人体動作センサー 59 元

  • 小米ドア・ウィンドウセンサー 49 元

  • 小米スマートプラグ Zigbee 版:給湯器を制御 69 元

  • 小米エアコンパートナー homebridge をサポート 199 元 コメント欄の指摘に感謝

    @周子韧

  • ロジクール Harmony Hub(家庭内のすべての赤外線デバイスを制御:エアコン、テレビ、スピーカー、扇風機、空気清浄機、電動物干し) 299 元

  • 小米空気清浄機第 2 世代 699 元

自備する必要のあるその他のハードウェア#

  • iOS10 をサポートするスマートフォンまたはタブレット。
  • Android スマートフォン 1 台(ゲートウェイのパスワードを取得するため、借りても可)。
  • ルーター。

今後の作業:#

  • Aqara 壁スイッチ(移植性が低いため、今後検討)
  • ドアロック
  • 電動カーテン:赤外線リモコン電動カーテン + harmony で OK、または小米の電動カーテンを使用
  • カメラ
  • SSH コマンド(リンク
  • Bluetooth デバイス(スピーカー)(リンク
  • Home Assistant サポートデバイス

エアコンパートナーと空気清浄機を除いて、合計 1023 元。

ソフトウェア準備#

自分でシステムを SD カードに書き込むために使用

  • Mac で ApplePi
  • Windows で SDFormatter、Window32 Disk Image
  • Linux ユーザーは...dd コマンドを直接使用すれば良い

インストール#

Yeelight 電球#

Yeelight アプリをダウンロードし、指示に従って電球を接続し、ゲーマーモードをオンにします。

小米ゲートウェイおよび関連センサー#

  • 小米ゲートウェイを電源に接続し、「米家」アプリをダウンロードします。スマートフォンを 2.4Ghz の Wi-Fi ネットワークに接続します(現在のほとんどのスマートホームは 5Ghz Wi-Fi をサポートしていません)、指示に従ってゲートウェイを追加し、他のセンサーを追加します。

ゲートウェイの MAC アドレスと通信パスワードの取得#

ゲートウェイ情報は後で homebridge の設定ファイルに必要ですが、Android スマートフォンの「米家」アプリからのみ取得できます。

  • アプリをクリックしてゲートウェイオプションに入る -> 画面右上の「...」に入る -> 「について」に入る -> 画面下部のバージョン番号領域を連続して押して開発者モードを有効にする
  • 「ローカルネットワーク通信プロトコル」オプションをクリックし、ローカルネットワーク通信プロトコルをオンにし、パスワードをメモする
  • 一つ上のメニューに戻り、開発者モードに「ゲートウェイ情報」というオプションが表示される -> MAC アドレスを記録する('mac' フィールドの後にある 6 対の英数字)

ラズベリーパイ#

ラズベリーパイは、イギリスのケンブリッジ大学の教授が主導する、子供のコンピュータ教育を普及させるためのハードウェアプロジェクトで、主に Linux システムの raspbian を使用しています。また、Debian GNU/Linux、Fedora、Arch Linux、RISC OS、2B 以上では Windows10 IoT もサポートしています。

3 代目モデル B の構成:

  • 1.2GHz の 64 ビット四核プロセッサ(ARM Cortex-A53 1.2GHz 64-bit quad-core ARMv7 CPU)を搭載。
  • 802.11 b/g/n 無線 LAN カードを追加。
  • 低消費電力 Bluetooth 4.1 アダプタを追加。

主に homebridge のサーバーとして使用し、HomeKit をサポートしていないデバイスを HomeKit に認識させます。

Linux コマンドに不慣れな方は、コマンドをコピー&ペーストするだけで大丈夫です。

システムのインストール#

私は SD カードを購入する際に、業者にシステムをコピーしてもらいましたが、実際には自分でダウンロードして SD カードに書き込むこともできます。

  1. ダウンロードした raspbian jessie バージョンのシステム(現在は最新の stretch にアップグレード)。[ラズベリーパイシステムダウンロードリンク](Index of /raspbian/images)
  2. Windows では SDFormatter を使用して SD カードをフォーマットし、Window32 Disk Image を使用して SD カードに書き込みます。Mac では ApplePi というソフトウェアをお勧めします。システムの書き込みとバックアップに使用できます。
  3. ラズベリーパイはデフォルトで SSH が無効になっているため、有効にする方法は簡単で、SD カード内のシステムのルートディレクトリに空の ssh ファイルを作成するだけです。
  4. 電源ケーブル(mini USB)を接続し、LAN ケーブルを家庭のルーターに直接接続し、SD カードを挿入します。システムは自動的に起動してインストールされます。
  5. ラズベリーパイを LAN ケーブルでコンピュータに接続し、SSH でログインします。デフォルトのパスワードは raspberry です。

ssh [email protected]

  1. Wi-Fi を設定します。そうでない場合は、ラズベリーパイをルーターに LAN ケーブルで接続する必要があります。

vi に不慣れな方は、nano テキストエディタを使用してソースファイルを編集できます。操作は通常のテキストエディタに近いです。ctrl+O で保存し、ctrl+X で終了します。編集前に cp コマンドで元のファイルをバックアップすることをお勧めします。または、以下のコマンドを使用して、ラズベリーパイの公式サイトとサードパーティのソースを清華源に置き換えることができます。

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

以下の内容を追加します:

network={ ssid="wifiname" psk="password" }

保存後、LAN ケーブルを外すと、数秒以内に Wi-Fi に接続されます。

  1. ミラーソースを変更します。元のシステムの更新ソースは国内では速度が遅く、他のプログラムをインストールする際にタイムアウトエラーが発生する可能性があるため、国内のものに変更するか、SS サービスを有効にします。

sudo sed -i 's#://archive.raspberrypi.org/debian#s://mirrors.tuna.tsinghua.edu.cn/raspberrypi#g' /etc/apt/sources.list.d/raspi.list sudo sed -i 's#://archive.raspberrypi.org/debian#s://mirrors.tuna.tsinghua.edu.cn/raspberrypi#g' /etc/apt/sources.list.d/raspi.list

  1. 更新リポジトリを更新し、依存関係を再構築します。

sudo apt-get update && sudo apt-get upgrade

NodeJS および依存関係、Homebridge および関連プラグインのインストール#

NodeJS のインストール#

まず、使用しているラズベリーパイのチップバージョンを確認します。

uname -a

私の返答は armv7l でした:

Linux raspberrypi 4.4.50-v7+ 970 SMP Mon Feb 20 19:18:29 GMT 2017 armv7l GNU/Linux

以下のコマンドを使用して node6 をダウンロードしてインストールします。node7 はまだ安定しておらず、node5 は homebridge との互換性があまり良くありません。

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - sudo apt-get install -y nodejs

Avahi のインストール#

sudo apt-get install libavahi-compat-libdnssd-dev

Homebridge のインストール#

sudo npm install -g --unsafe-perm homebridge

上記のコマンドが正常に完了しない場合は、追加の設定が必要です。以下のコマンドを実行します:

sudo npm install -g --unsafe-perm homebridge hap-nodejs node-gyp cd /usr/local/lib/node_modules/homebridge/ sudo npm install --unsafe-perm bignum cd /usr/local/lib/node_modules/hap-nodejs/node_modules/mdns sudo node-gyp BUILDTYPE=Release rebuild

homebridge-aqara、aqara プロトコルのゲートウェイおよびセンサーのインストール#

sudo npm install -g homebridge-aqara

homebridge-yeelight、yeelight 電球のプラグインのインストール#

sudo npm install -g homebridge-yeelight

小米空気清浄機プラグインのインストール#

npm install -g homebridge-mi-air-purifier miio

他のスマートデバイスを切断し、空気清浄機だけを残します。次に、以下のコマンドを入力して空気清浄機の IP と Token を取得します。

miio --discover --sync

次の形式のデバイス情報が複数返される可能性があります:

Device ID: 49466088 Model info: Unknown Address: 192.168.1.8 Token: 6f7a65786550386c700a6b526666744d via auto-token Support: Unknown

address と token を記録し、後で設定ファイルに書き込みます。

小米エアコンパートナープラグインのインストール#

最新版 0.5.1 にはバグがあり、現在起動できません。issue を提起し、作者の更新を待っています。

sudo npm install -g [email protected]

同様に、上記のmiio --discover --syncを使用してエアコンパートナーおよび関連する温湿度センサーの device_id を見つけます(sensorSid 値 'lumi.' の後に記入)。

赤外線デバイスを HomeKit に追加#

後にロジクール Harmony Hub の赤外線リモコンデバイスを発見しました。28 万種類のデバイスをサポート(赤外線学習新デバイスをサポート)、300 元以内で、homebridge に接続するプラグインもあります。インストール後、家庭内の赤外線デバイス(エアコン、テレビ、空気清浄機、電動物干しなど)を Siri で制御できます。指示に従って赤外線デバイスを接続し、最大 7 個まで追加できます。

インストールプロセス:

全過程で全局科学上網が必要です。

  1. MyHarmony の PC クライアントをダウンロードします。Mac 版と Win 版があります。
  2. USB で Hub を PC に接続し、Hub を認識します。ネットワーク接続は 2.4Ghz の Wi-Fi です。
  3. Wi-Fi を認識し、Wi-Fi パスワードを入力します。
  4. 異なるデバイスで設定を管理するためのアカウントを登録します。メールアドレスを使用することをお勧めします。
  5. Remote リモコンを接続する必要があるというメッセージが表示され、右下の Skip ボタンをクリックします。上に書かれているのは Remote のみに関する Skip ですが、実際には Hub のみの場合にも適用されます。
  6. 認識が完了し、管理画面に入ります。Hub に名前を付けるように促されます。その後、デバイスを追加するように指示されます。
  7. デバイスのブランド名とデバイス番号(モデル)を使用して追加します。データベース内に見つからない場合は、手動で追加し、赤外線学習リモコンを使用します。
  8. 左側のメニューに Activity があり、自動化制御アクティビティを設定できます。例えば:テレビを見る = テレビ + セットトップボックス + スピーカー + お気に入りのチャンネルに調整。最後に、各アクティビティは HomeKit にソケット型デバイスとして追加されます。
  9. 以下は Harmony のプラグインと設定ファイルの設定です。

ターミナルを介してラズベリーパイのターミナルに入り、Harmony Hub のプラグインをインストールします。

sudo npm -g install homebridge-harmonyhub

homebridge の設定ファイル config.json の作成#

mkdir /home/pi/.homebridge/ sudo nano /home/pi/.homebridge/config.json

Homebridge 設定ファイルの内容および形式#

ゲートウェイのパスワードと MAC アドレス、および aqara ゲートウェイと yeelight の設定情報を記入する必要があります。#コメント部分は削除してください。

pin は iPhone の家庭アプリに追加するために使用されます

{ "bridge":{ "name":"YeeBridge", "username":"任意MACアドレス", "port":51827, "pin":"031-45-157" }, "platforms":[ { "platform":"yeelight", "name":"yeelight" }, { "platform":"AqaraPlatform", "sid":[ "ゲートウェイのMACアドレスを小文字で連続して記入" ], "password":[ "ゲートウェイのパスワード" ] }, { "platform":"HarmonyHub", "name":"Harmony Hub" }, { "platform":"XiaoMiAcPartner", "ip":"エアコンパートナーのip", "token":"エアコンパートナーのtoken", "accessories":[ { "name":"Ac Partner", "type":"climate", "sensorSid": "lumi.{device_id}" } ] } ], "accessories":[ { "accessory":"MiAirPurifier", "name":"Air Purifier", "ip":"空気清浄機のIP", "token":"ADDRESS_OF_THE_AIR_PURIFIER", "showTemperature":true, "showHumidity":true, "showAirQuality":true } ] }

homebridge の自動起動設定#

ここまで設定すれば、ターミナルで homebridge と入力するだけで実行できます。しかし、ターミナルを閉じると終了し、万が一電源が切れて再起動した場合、サービスが終了します。したがって、homekit の設定を自動起動するように設定する必要があります。homebridge の GitHub ページでは 3 つの方法が推奨されていますが、私は最も便利な init.d の方法を採用しました。

まず、ここから設定ファイルをダウンロードし、すべての内容をコピーします。ダウンロード

次に、以下のコマンドを使用して init.d ディレクトリに homebridge 起動ファイルを作成します:

sudo nano /etc/init.d/homebridge

以下の内容を直接コピーしてファイルの一部を上書きします。注意 cmd の後に記入する位置はあなたの homebridge があるディレクトリになります。homebridge の位置を探すには、以下のコマンドを使用します:

`which homebrige

#!/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/local/bin/homebridge"
user="pi"`

ファイルの権限を変更します:

sudo chmod 755 /etc/init.d/homebridge sudo update-rc.d homebridge defaults

再起動後、自動的に起動します。または手動で起動します:

sudo /etc/init.d/homebridge start

デバイスを家庭アプリに追加#

ここでは Apple 公式の [操作ガイド](在 iPhone、iPad 和 iPod touch 上使用 “家庭” 应用) を参考にできます。

iPhone を同じローカルネットワークに接続し、家庭アプリを開いて新しい家庭を作成すれば、homebridge を追加できます。

この時、アプリがデバイスを確認するためのコードを求めてきます。正式な homekit デバイスにはこれがありますが、私たちのものにはありません。このコードを最初に探すのに 5 分かかりましたが、実際にはhomebridge サーバーを起動するときに、ターミナルで既に生成されていることがわかりました。見つけたら手動で入力すれば大丈夫です。

それは設定ファイルの PIN の部分です。

この時、すべてのデバイスがアプリに表示されます。長押しして編集を選択し、部屋や名前のカテゴリを変更できます。

リモート制御および自動化#

リモート制御#

安全を確保するために、Homekit のデフォルトサポート環境はローカルネットワークですが、iOS10 にアップグレードできる iPad や Apple TV 第 4 世代以上があれば、設定でそれを中控に設定できます。これにより、外出先でもこれらのデバイスを制御できます。

これらのデバイスがない場合でも問題ありません。米家アプリにもリモート制御が可能なものがあります(ただし、非常に使いにくいだけです)。

自動化#

自動化を使用すると、さまざまなルールを設定して、家庭内のデバイスを自動的に制御できます。

例えば:

IF(条件):ゲートウェイ光センサーが暗いと検出し、同時に誰かが寝室に入る

実行:寝室のライトをオンにする

IF(条件):温度センサーが 30 度を超え、ドアと窓が閉まっており、家の中に人がいると検出

実行:エアコンをオンにし、冷房モード 25 度に設定します。小米エアコンパートナーまたは万能リモコンが必要です。

注意点#

  • 公式ドキュメントを確認してください!公式ドキュメントを確認してください!公式ドキュメントを確認してください。
  • すべての作業が完了したら、必ず書き込みソフトウェアで SD カードのシステムをバックアップし、その後他の作業を続けてください。どうしてそうする必要があるのかは聞かないでください...
  • 特別な要求がない限り、ラズベリーパイに静的 IP を設定しないでください。なぜなら、yeelight は TCP で通信を行い、ルーターの DHCP が Yeelight デバイスに異なるネットワークセグメントの IP を割り当てると、ライトを制御できなくなるからです。この点については、Yeelight のスタッフに感謝します。夜 8 時過ぎに積極的にコミュニケーションを取り、問題を見つける手助けをしてくれました。
  • NodeJs 6 が最も適しており、5 には互換性の問題があり、7 はまだ安定していません。
  • 小米の他のデバイスが homebridge に追加される進捗はあまり早くありません。知乎でこの分野を担当しているエンジニアをフォローしていますが、彼はもう 1 ヶ月以上大きな変更がないようです。しかし、空調助手をサポートする予定だと言っています(ついにサードパーティのサポートが得られました)。私は万能リモコンのサポートが重要だと思います。これにより、遊びやすさが大幅に向上します。
  • ラズベリーパイに冷却パッドや金属スタンドの冷却を準備してください。ファンの冷却効果はあまり良くありません。うるさいです。

最終的な効果#

最後に、初めて成功したときの録画した小さなビデオを添付します。

https://pic4.zhimg.com/80/v2-63ece8d4d3ef454657b83b3bafdb08ab_1440w.jpg

https://pic4.zhimg.com/80/v2-7b0b6543c3f352bf692c496849cf1c2b_1440w.jpg

https://pic2.zhimg.com/80/v2-f97c6bc17afa418786f8e632db36c529_1440w.jpg

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。