SiriとXiaomiを友達にする方法

この記事では、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を選択しました。









この段階で、最初の問題が発生しました。 何らかの理由で、ファイルはカードに正しくコピーされませんでしたが、独自のSD Memory Card Formatterユーティリティを使用したフォーマットは成功しました。 私はカードを店に持って行って別のものを取りに行くつもりでしたが、この前に外部のカードリーダーを試すことにしました。 そして、見よ、それはすべてうまくいった!







問題は、SDHC形式のカードをサポートしていないMac miniにあることが判明しました。









インストーラーは非常にシンプルで、ダウンロードは十分に高速です。 問題がある場合は、 公式ドキュメントを確認してください。







ステップ2.初期OSセットアップ





Rasperry Piでのリモート作業用















当初、「Malinka」はUSBポートから給電されていましたが、同時に電力が絶対に足りないという表示が画面に表示されます。 iPhone + micro USBコードの充電器がこの問題を解決しました。







すべての操作は、家の初期セットアップ用のモニターがないため、オフィスで行われました。







週末までに、「Malinka」はアパートに到着し、彼女の手はすでにスマート電球を接続するためにできるだけ早く手を掻いていました。







Raspberryの起動...







VN経由で接続しようとしています... 黒い画面







SSH経由で接続しようとしています... 反応はありません







月曜日を待って仕事に戻る。 キーボード、マウス、モニターを接続します。

システムは停止しません。 おそらく、SDカードの損傷または神の介入が原因で問題が発生しました。







システムを再インストールしました。 私は古い引用を思い出しました: 「人々は2つのカテゴリーに分けられます:

まだバックアップを作成していない人、すでにバックアップを作成している人」 、そして強い意志のある決定を下しました。







ステップ0.バックアップを作成します



多くの方法があります。 私の意見では、最もシンプルなものを選びました。 SDカードイメージのUSBフラッシュドライブへの完全なコピー







画像を作成する













イメージを復元する





欠点は、イメージを復元する時間が長いことです。 カードの容量、速度、およびカードリーダーの特性によって異なります。 このプロセスには約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







デバイスの構成と接続に進みます。









ステップ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 }] } ] }
      
      







このプラットフォームのデバイス構成:









手順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つのデバイスがあります。















デバイスを構成/再構成するときに、 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,  . , Siri,       50%. , Siri,     .
      
      





最後に小さなデモ。









おわりに



2週間の間、サーバーは安定して動作しており、ホームアプリケーションを介してデバイスを簡単に管理できることに満足しています。 プラグインの作業が開発者によって放棄されていることは少しイライラしますが、ソースはgithubにあり、Homebridgeには独自のプラグインの作成プロセスを説明するドキュメントがあります。 将来は、新しいデバイスとセンサーをホームに追加し、アパートの入り口でデバイスを起動するプロセスを自動化する予定です。 ご質問やご提案がありましたら、コメントをお書きください。ご質問にお答えします。







暖かくて良い春! ^ _ ^








All Articles