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. 移植性が高く、引っ越し時に持ち運びが便利。

準備#

ハードウェア準備:#

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

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

  • 16G SD カード(クラス 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 で可、または小米の電動カーテンを使用
  • カメラ
  • 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、2 代 B 以上は Window10 IoT もサポートしています。

3 代 model 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 とトークンを取得します。

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 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/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 のデフォルトサポート環境はローカルネットワークですが、iPad が iOS10 にアップグレードされている場合や、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

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