この記事では、Homebridgeを使用してSiriとWi-FiおよびBluetooth経由で動作するXiaomiフィクスチャのコラボレーションをセットアップするためのガイドを紹介します。 また、私が足を踏み入れたレーキについても説明しました。
冬 寒い。 闇 朝起きるのは大変です。
彼らは、ダミー照明が目を覚ますのを助けることができると言いました。
それでは何? Xiaomi、またはYeelightから常夜灯を撮りました 。 彼は少し遊んで、曲がって動作しているソフトウェアに怒っていました。 しかし、明るくカラフルな照明がプラスになり、職場は一変し、より快適になりました。
カタログを調べたところ、Wi-Fi接続のあるLEDストリップが見つかりました。 アナログと比較して、明るくて安価であることがわかりました。 私はそれを取る!
そして再び、ソフトウェアの問題。 デバイスが落ちるので、プログラムに入るときに再接続する必要があります。 また、グループ化は必ずしも正しく機能しなかったため、電話で設定してオンにすることはありがたいことではありません。 追加のハブを検索して購入し始めたのではなく、より良い時期まですべてを延期しました。
同僚は、誕生日に「ラズベリー」を口語で発表しました-Raspberry Pi 3 ModelB。デバイスにWi-FiとBluetoothモジュールの両方があることが重要です。 HomeKitデバイスを操作するための多くの資料をすでに作成および研究しているため、HomeKit APIをエミュレートするNodeJSで記述されたhomebridgeサーバーを通じて、サポートされていないデバイスをこのインフラストラクチャに含めることができます。
ステップ1. OSのインストール
まず、OSをインストールします。 ディストリビューションとしてRaspbianを選択しました。
- 8 GB以上のメモリカードを使用します(会社から16 GBが見つかりました%#&@)。
- インストーラーのフォーマットとコピー
この段階で、最初の問題が発生しました。 何らかの理由で、ファイルはカードに正しくコピーされませんでしたが、独自のSD Memory Card Formatterユーティリティを使用したフォーマットは成功しました。 私はカードを店に持って行って別のものを取りに行くつもりでしたが、この前に外部のカードリーダーを試すことにしました。 そして、見よ、それはすべてうまくいった!
問題は、SDHC形式のカードをサポートしていないMac miniにあることが判明しました。
- カードを「ラズベリー」に挿入し、HDMIを介してキーボード、マウス、モニターを接続し、電源を入れます。
インストーラーは非常にシンプルで、ダウンロードは十分に高速です。 問題がある場合は、 公式ドキュメントを確認してください。
ステップ2.初期OSセットアップ
- パスワードを変更し、アカウンティングを設定します。
Rasperry Piでのリモート作業用
- SSHおよびVNCを介したアクセスを有効にします。 グラフィカルインターフェイスを介して可能です。
当初、「Malinka」はUSBポートから給電されていましたが、同時に電力が絶対に足りないという表示が画面に表示されます。 iPhone + micro USBコードの充電器がこの問題を解決しました。
すべての操作は、家の初期セットアップ用のモニターがないため、オフィスで行われました。
週末までに、「Malinka」はアパートに到着し、彼女の手はすでにスマート電球を接続するためにできるだけ早く手を掻いていました。
Raspberryの起動...
VN経由で接続しようとしています... 黒い画面 。
SSH経由で接続しようとしています... 反応はありません 。
月曜日を待って仕事に戻る。 キーボード、マウス、モニターを接続します。
システムは停止しません。 おそらく、SDカードの損傷または神の介入が原因で問題が発生しました。
システムを再インストールしました。 私は古い引用を思い出しました: 「人々は2つのカテゴリーに分けられます:
まだバックアップを作成していない人、すでにバックアップを作成している人」 、そして強い意志のある決定を下しました。
ステップ0.バックアップを作成します
多くの方法があります。 私の意見では、最もシンプルなものを選びました。 SDカードイメージのUSBフラッシュドライブへの完全なコピー 。
画像を作成する
- リストでSDカードを見つけます。
diskutil list
- イメージをディスクに保存します。
sudo dd if=/dev/disk2 of=~/Desktop/raspberrypi.dmg
イメージを復元する
リストでSDカードを見つけます。
diskutil list
SDカードをアンマウントします。
diskutil unmountDisk /dev/disk2
カードをフォーマットします。 ユーティリティを介して可能です。ターミナルを介して可能です。
sudo newfs_msdos -F 16 /dev/disk2
- 以前に保存した画像を復元します。
sudo dd if=~/Desktop/raspberrypi.dmg of=/dev/disk2
欠点は、イメージを復元する時間が長いことです。 カードの容量、速度、およびカードリーダーの特性によって異なります。 このプロセスには約4時間かかりました。
利点は、シンプルさと信頼性です。
ちなみに、このプロセスをスピードアップしてみてください。 詳細な手順
Stackexchange
数日後、バックアップからの回復を再度実行する必要がありました。 操作の実行中に、「セグメンテーションエラー」エラーが発生しました。 ほとんどの場合、問題の原因はメモリカードの不良です。 今回はトランセンドから新しいものを購入しましたが、これまでのところフライトは正常です。
ステップ3.コンポーネントのインストール
いつものように、システムを更新することから始めます。
sudo apt-get update sudo apt-get upgrade
アップグレード後、g ++バージョンを確認します。
g++ -v
homebridgeバージョン4.9+をインストールするにはgccバージョン 6.3.0が必要でした。
次に、NodeJSをインストールします。 バージョン9をインストールしました:
curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash - sudo apt-get install -y nodejs
次のステップでは、Apple Bonjourサービスを操作するためのライブラリであるAvahiをインストールします。
sudo apt-get install libavahi-compat-libdnssd-dev
この段階で、準備は完了です。
ステップ4. homebridgeのインストール
これで、プロジェクトリポジトリの基本的な指示に従うことができます 。
npm install -g homebridgeコマンドを使用すると、インストールが失敗したため、プロジェクトの作成者の指示に従い、 sudoおよび-g --unsafe-perm homebridgeフラグを指定してインストーラーを実行します。
sudo npm install -g --unsafe-perm homebridge
Homebridgeがインストールされました。 問題がある場合は、読むことができます
wiki
デバイスの構成と接続に進みます。
- Xiaomi Yeelight Smart Light Strip
- Xiaomi Yeelightベッドサイドランプ
ステップ5. Yeelight Smart Light Strip
Light StripはWiFi経由で接続され、セットアップが簡単です。 プラグインをインストールすることから始めます 。
sudo npm install -g homebridge-re-yeelight sudo npm install -g miio@0.14.1
miioバージョン0.14.1を制限します。新しいプラグインでは、現時点では機能しません。
次に、ローカルネットワーク上のデバイスを検索します。 その前に、もちろん、 Yeelight Smart Light StripをWiFi経由で接続する必要があります。
miio --discover
およそ次の出力がコンソールに表示されます。
INFO Discovering devices. Press Ctrl+C to stop. Device ID: xxxxxxxx Model info: yeelink.light.strip1 Address: 192.168.1.xxx Token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx via auto-token Support: At least basic
それを紙に書き留めて、構成ファイルのセットアップに進みます。
ステップ6. config.jsonを作成する
構成ファイルを作成します。 〜/ .homebridgeディレクトリに移動します。
touch config.json nano config.json
構成ファイルに制御するハブとデバイスを追加します。 通常、デバイス固有の構成は、プラグインプロジェクトページのconfig.jsonファイルにリストされています。
構成で、前の手順で受け取ったhomebridgeおよびデバイスに関する次の情報を追加します。
{ "bridge": { "name": "Yeebridge", "username": "18:00:27:40:BC:1B", "port": 51825, "pin": "031-45-154" }, "platforms": [ { "platform": "ReYeelightPlatform", "deviceCfgs": [{ "type": "ColorLEDStrip", "ip": "192.168.1.253", "token": "5d0b94f872b4372164b6e61d472d424b", "Name": "LED Strip", "updatetimer": true, "interval": 5 }] } ] }
- name-Homeアプリケーションでハブが表示される名前。
- ピン-ピンコード、ホームブリッジをホームアプリケーションに接続する必要があります。
以下は、接続されているプラットフォームとアクセサリの説明です。
YeelightのWiFiデバイスのプラットフォームとして、ReYeelightPlatformを使用します。
このプラットフォームのデバイス構成:
- タイプ-通常、プロジェクトページでは、サポートされる各デバイスのタイプが示されます。
- IPおよびトークン-前のステップで受信しました。
- name-ホームアプリケーションに表示する名前。
手順7. Xiaomi Yeelightベッドサイドランプの接続
デバイスはBLE経由で接続されます。 つまり、BLEサポート付きのインストール済みBluetoothモジュールが必要です。 このようなデバイスを使用するには、別のプラットフォーム-ReYeelightBLEPlatformが必要です
Bluetoothスタックを操作するためのライブラリをインストールします。
sudo apt-get install libbluetooth-dev libudev-dev
ノードモジュールがインストールされているフォルダーを見つけます。
npm -g root
/ usr / lib / node_modulesで入手しました 。 必要な権限をインストールし、インストールを実行します。
権限をインストールせずにsudoでインストールすると、将来問題が発生する可能性があります。
sudo chown -R $(whoami) /usr/lib/node_modules/ npm install noble sudo apt-get install libcap2-bin sudo setcap cap_net_raw+eip $(eval readlink -f `which node`) sudo hciconfig hci0 up
次に、 Xiaomi Yeelight Bedside LampをサポートするHomeBridgeプラグインをインストールします。
sudo npm install -g homebridge-re-yeelight-ble
Bluetooth経由でデバイスを制御する他のモジュールをインストールするときは、互換性の問題が発生する可能性があることに注意してください 。 たとえば、長い間、なぜランプを常にオフにしていたのか理解できませんでした。 問題はインストールされたhomebridge-yeelightにあることが判明しました 。 削除後、通常の動作に戻りました。 また、このコマンドが役立つ場合があります。
sudo npm uninstall -g homebridge-yeelight
次を使用してデバイスアドレスを探しています。
sudo hcitool -i hci0 lescan
出力は次のようになります。
LE Scan ... 8C:26:A6:3D:67:40 (unknown) 8C:26:A6:3D:67:40 (unknown) FF:B6:36:78:96:A6 RK-M171S F6:24:41:E8:6B:14 XMCTD_ F6:24:41:E8:6B:14 XMCTD_ 76:79:01:46:86:5A (unknown) 76:79:01:46:86:5A (unknown) D6:64:11:49:E6:8D RK-G200S F6:BC:36:68:96:A3 (unknown) D6:66:11:49:E6:8D (unknown)
目的のデバイスはXMCTD_としてマークされます 。
私の場合、 F6:24:41:E8:6B:14 XMCTD_
新しいReYeelightBLEPlatformと、指定されたアドレスを持つ必要なデバイスをconfig.jsonに追加します 。
結果のconfig.jsonは次のようになります。
{ "bridge": { "name": "Yeebridge", "username": "18:00:27:40:BC:1B", "port": 51825, "pin": "031-45-154" }, "platforms": [ { "platform": "ReYeelightBLEPlatform", "defaultValue": { "F6:24:41:E8:6B:14": "Bedside Lamp" } }, { "platform": "ReYeelightPlatform", "deviceCfgs": [{ "type": "ColorLEDStrip", "ip": "192.168.1.253", "token": "560696f676b4672164b6e61d472d424b", "Name": "LED Strip", "updatetimer": true, "interval": 5 }] } ] }
ステップ8. homebridgeを開始する
コンソールでhomebridgeコマンドを使用して、検証のためにHomebridgeを起動します。
ホームアプリケーションにハブを追加するためのQRコードが画面に表示されます。 そしてもう少し低い-config.jsonファイルからのPINコードは、手動接続に使用されます。
切望されたライン[ReYeelight] [BLE] Timer Startedが表示される場合、おそらくBLEデバイスを正しく構成している可能性があります。
Xiaomi Yeelightベッドサイドランプが点滅し、接続が確立されます。 ランプのMODEボタンを押して確認する必要があります。
この段階で、構成済みのハブとそれに接続された2つのデバイスがあります。
- ホームアプリを起動します。
- クリックしてアクセサリを追加します。
- QRコードをスキャンし、認証されていないデバイスを接続することに同意します。
ホーム
接続されたデバイスごとに、Siriからアクセスできる名前と、デバイスが配置されている部屋を選択できます。
デバイスを構成/再構成するときに、 HomebridgeをHomeアプリケーションに再追加する際に問題が発生する可能性があります。 これを排除するために、homebridge設定フォルダーで次の操作を実行します。
- ホームブリッジを停止します 。
- アクセサリを削除し、ディレクトリを保持します。
rm -r accessories rm -r persist
homebridgeを起動して、ハブをホームアプリに再度追加します。
アクセサリ、設備、シナリオのカスタマイズの詳細については、 Apple Webサイトをご覧ください。
ステップ9. Raspberry Piの起動時にHomebridgeを起動する
デバイスを再起動した後、Homebridgeの作業を自動的に再開する必要があります。 これを行うには、 サービスとして実行します 。
リンクからhomebridgeとhomebridge.serviceの2つのファイルをダウンロードします。 homebridgeファイルを/ etc / defaultに配置します 。 homebridge.serviceファイルは / etc / systemd / systemに配置されます。
homebridge.serviceファイルに変更を加えます。 パスExecStart = / usr / local / bin / homebridge $ HOMEBRIDGE_OPTSは 、 ExecStart = / usr / bin / homebridge $ HOMEBRIDGE_OPTSに変更されます。
サービスを起動するユーザーを追加します。
sudo useradd --system homebridge
ホームブリッジ構成を保存するためのフォルダーを作成し、構成をコピーして権限を設定します。
sudo mkdir /var/homebridge sudo cp ~/.homebridge/config.json /var/homebridge/ sudo cp -r ~/.homebridge/persist /var/homebridge sudo cp -r ~/.homebridge/accessories /var/homebridge
サービスを開始します。
sudo systemctl daemon-reload sudo systemctl enable homebridge sudo systemctl start homebridge
彼のステータスを確認してください:
systemctl status homebridge
ステップ10. Siri。 翻訳の難しさ
Siriは話しやすい女の子ではありません。
たとえば、LEDストリップは「テーブル照明」と呼ばれるべきではありません。 Siriは、「Under the Light Has Been」を実行しようとしていますが、プログラムを閉じることができないと応答しています。
また、照明装置は「テーブルランプ」と呼ばれるべきではありません。 「デスクランプをオンにする」と言うと、部屋のすべてのライトが点灯します。 「テーブルランプをオフにする」コマンドを実行すると、テーブルランプのみがオフになります。 ほとんどの場合、これはグループの名前ですが、Siriに適切なドキュメントがないため、それを理解する助けにはなりません。
照明の色を変更することも重要な作業です。 たとえば、英語では、チームは非常に単純に「明るい色を緑に変える」と発音します。 ロシア語では、「光の色を緑に設定します。」
changeまたはchangeをインストールする代わりに機能しません。 「光の色」の代わりに、Siriはコマンドを「光の光」または「色の色」として常に認識します。 言語療法士の時間です。 このフレーズの単語を交換する方が簡単です。そうすれば、Siriの間違いが少なくなります。 その結果、「ストップフレーズ」は「ライトの色を青に設定」のように聞こえます。 はい、リクエストのSvetaは大文字になります!
, Siri, . , Siri, . , Siri, 50%. , Siri, .
最後に小さなデモ。
おわりに
2週間の間、サーバーは安定して動作しており、ホームアプリケーションを介してデバイスを簡単に管理できることに満足しています。 プラグインの作業が開発者によって放棄されていることは少しイライラしますが、ソースはgithubにあり、Homebridgeには独自のプラグインの作成プロセスを説明するドキュメントがあります。 将来は、新しいデバイスとセンサーをホームに追加し、アパートの入り口でデバイスを起動するプロセスを自動化する予定です。 ご質問やご提案がありましたら、コメントをお書きください。ご質問にお答えします。
暖かくて良い春! ^ _ ^