Dyson Pure Hot+Cool LinkをHey Siriで操作する!

空気清浄機能付きファンヒーターDyson Pure Hot+Cool Linkは、スマホに対応していてiOSやAndroidのアプリから操作できるようになっているのですが、さらにHey Siri!と声で操作できるようにHomebridge対応をしたいと思います。

Raspberry Pi上のHomebridgeで扱う前提ですが、Raspberry Piの設定、およびHomebridgeの設定は済んでいるものとしています。

以下のサイトを参考にさせていただきました。

1.解析してみる

1-1. Wiresharkで認証情報を取得

Dyson Pure Hot+Cool Link(以下、Hot+Cool Link)はMQTTプロトコルにより通信を行なっているようですが、APIが公開されてないため、まずは認証情報などを取得する必要があります。Mac上のWiresharkにて、iPhoneのDyson Linkアプリのパケットキャプチャをしてみます。

まずはUSBケーブルにてiPhoneをMacに接続し、iTunesから端末のUUIDを取得します。iTunesを起動し、以下の図の赤枠のあたりをクリックする度に表示が切り替わりますので、UUIDが表示されたら右クリックしてコピーします。

次にターミナルで以下のように入力して、仮想インターフェースを作成します。<UUID>の箇所には、先ほどiTunesでコピーした端末のUUIDをペーストします。なお、ここで使う”rvictl”はXcodeに含まれているので、インストールしていない場合はインストールして一度だけ起動しておきましょう。

上記のようにSUCCEEDEDと表示されれば成功です。これでWiresharkにてパケットキャプチャできる状態になったので、Wiresharkを起動し、rvi0を選択してキャプチャ開始です。

あらかじめHot+Cool LinkのIPアドレスを調べておき、そのIPでフィルタを設定します(例:ip.addr == 192.168.0.28)。そしてiPhoneでDyson Linkアプリを起動すると、ワラワラとキャプチャされてきます。

この中で、MQTTプロトコルのメッセージに注目です。

一番最初に出てくるMQTTメッセージの中を見てみると、User Name及びPasswordが分かります!後で使いますので、メモっときましょう。終わったらWiresharkを終了し、先ほど作成した仮想インターフェースも以下のように停止します。

1-2. MQTTでの制御方法の確認

認証情報が分かったので、次にiPhoneアプリから制御する場合にどのようなメッセージがやり取りされているかを見てみます。後々Homebridge対応することを前提に、Raspberry Pi上のNode.jsで行います。まずはNode.jsでMQTTを扱うためのライブラリをインストールします。

そして、以下のスクリプトを”dyson_test.js”というファイル名で保存します。USERNAMEとPASSWORDには、言うまでもなく先ほどWiresharkキャプチャからメモったものを記入します。

このスクリプトを実行します。

iPhoneのDyson Linkアプリを立ち上げると、色々なメッセージのやり取りが受信されます。commandで何かをリクエストし、その返事としてstatusが返ってくる様子がよく分かりますね。しばらくアプリを操作してメッセージの中身を見れば、容易に操作方法が分かると思います。

2.自分で制御してみる

2-1. 制御スクリプトの作成

iPhoneのDyson Linkアプリの制御方法を参考に、Node.jsスクリプトから制御して見ましょう。まずはスイッチONから。オートモード(状況に応じて風量自動調整)に設定すると同時に、首振りもONにします。

なぜかDyson製の扇風機/ファンヒーターは、スイッチON直後は首振りOFFなんですよね。前回ONでもスイッチ入れなおすと必ず首振りOFFからスタート。毎回スイッチONする度に首振りもONにしなくちゃいけないからほんと面倒。でもこのスクリプトなら、スイッチONと首振りONを同時にできる!

同様にスイッチOFFのスクリプト。先ほどのONのスクリプトもそうなのですが、messageの中の時刻は適当でも良いようですが、無いと動きませんでした。

最後に、ステータス取得のスクリプト。今ONなのかOFFなのかを知るためのものです。REQUEST-CURRENT-STATEのメッセージをpublishするとCURRENT-STATEのメッセージにて各種ステートが返されます。その中から”fmod”を抜き出して表示しているというものです。

2-2.Homebridge対応

最後にHomebridgeに対応して、iPhoneからHey Siri!で操作できるようにします。当初はプラグインを作らないといけないのかと思っていたのですが、既存プラグイン「cmdSwitch2」と前述の制御スクリプトを利用すれば、新たにプラグインを作らなくても大丈夫でした。お手軽ですね。

まずはcmdSwitch2をインストール。

次にHomebridgeの設定。以下にHomebridgeのconfig例を示します。スイッチONとOFFに加えて、ちゃんとステータス(今ONなのかOFFなのか)が取得できるところがポイント。

正しく設定できれば、iPhoneの「ホーム」アプリにダイソンが現れます!

上の例の場合はリビングにダイソンを置いていますので、「Hey Siri!リビングのダイソンをオン!」などと言えば、おもむろにDyson Linkが動き始めますよ!

3.まとめ

空気清浄機能付きファンヒーターDyson Pure Hot+Cool LinkをHomebridgeに対応させ、iPhoneの「ホーム」アプリから扱えるようにしました。Hey Siri!で操作もできちゃいますし、帰宅する直前に自動でスイッチONとかもできちゃいます。Dyson Pure Hot+Cool Linkは色々なセンサも載っているので、これを応用すれば温度、湿度、空気質なども取得できそうですね。

IoT家電は楽しい!

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


This site uses Akismet to reduce spam. Learn how your comment data is processed.