はじめに
ダイソン空気清浄機は、MQTTで情報取得と制御ができます。
情報取得と制御のMQTTパラメータの一覧をまとめておきます。
MQTTシーケンス図
ダイソン空気清浄機の現在の情報は、以下のシーケンス図の(a), (b)で取得できます。
電源のON/OFFなどの制御は、以下の図の(c)で実現できます。
それぞれMQTTのメッセージですが、以下で簡単に内容を記載します。
ダイソンの空気清浄機からの情報取得
ダイソンの空気清浄機の情報取得は、上記図(a),(b)のように以下の順番でMQTTのメッセージを送信します。それぞれ説明します。
- CONNECT送信
- SUBSCRIBE送信
- PUBLISH送信
- PUBLISH受信 (情報受信)
1. 接続 (CONNECT)
MQTTのCONNECTに必要なパラメータは、以下です。
MQTTポート番号は、1883
。
MQTTバージョンは、4 (3.1.1を示している)
。
MQTTのユーザ名とパスワードは、「製品SSID」と「製品Wi-Fiパスワード」から生成できます。具体的には、「[pythonでDyson扇風機の操作 やってみた]
(https://qiita.com/ko-p/items/86d1e7807cccda96633d)」等を見てください。
2. 参加 (SUBSCRIBE)
トピックに参加することで、
現在の情報を取得することができます。MQTTのメッセージは、SUBSCRIBE
を送信します。
情報取得のために参加するMQTTトピックは、<ProductType>/<Username>/status/current
です。ProductType
は製品ごとの番号です。具体的には、この記事の最後に載せています。Username
は、上記の接続(CONNECT)で使ったユーザ名になります。
3. 情報取得要求の送信 (PUBLISH)
ダイソンの空気清浄機から情報をすぐに取得する場合は、以下のメッセージを送信します。、MQTTトピックは、<ProductType>/<Username>/command
です。情報取得要求のメッセージは、2つの種類があります、以下がメッセージ例です。
現在の情報取得 (REQUEST-CURRENT-STATE)
Message: {"msg": "REQUEST-CURRENT-STATE", "time": "2020-08-24T07:27:08Z"}
現在の環境情報取得 (REQUEST-PRODUCT-ENVIRONMENT-CURRENT-SENSOR-DATA)
Message: {"time":"2020-09-17T01:11:30Z","msg":"REQUEST-PRODUCT-ENVIRONMENT-CURRENT-SENSOR-DATA","mode-reason":"LAPP"}
4. 情報取得応答の受信 (PUBLISH)
ダイソンの空気清浄機から、MQTTトピック<ProductType>/<Username>/status/current
に対して、現在の機器の状況が送信されます。メッセージは、以下の3つの種類があります。
情報取得パラメーター (CURRENT-STATE/STATE-CHANGE)
JSONタグ: product-state
JSONタグ | 意味 | 値 |
---|---|---|
ffoc | ディフューズドモード フォーカスモード |
OFF/ON OFF:ディフューズドモードあり ON:ディフューズドモードなし 反対なので注意 |
filf | フィルタ寿命(時間) | 0000 - 4300 |
fmod | ファンモード | OFF/ FAN / AUTO OFF: 電源OFF FAN: 電源ON |
fnsp | 風量 | 0001 - 0010 / AUTO |
fnst | ファン状態 | OFF/FAN 暖房ONの場合はこの値はOFF |
hmax | 暖房の設定温度(K) | (温度(C)+273)×10 |
hmod | 暖房 | OFF/HEAT |
hsta | ? | |
nmod | ナイトモード | OFF/ON |
oson | 首振り | OFF/ON |
qtar | 空気の質 (Air Quality ) | 0001(BETTER) 0003(HIGH) 0004(NORMAL) |
rhtm | スタンバイモード | OFF/ON |
ercd | ? | |
wacd | ? | |
tilt | ? |
ダイソンからのメッセージ例
{"msg":"CURRENT-STATE","time":"2020-09-02T23:10:09.000Z","mode-reason":"LAPP","state-reason":"MODE","dial":"OFF","rssi":"-66","product-state":{"fmod":"OFF","fnst":"OFF","fnsp":"0003","qtar":"0003","oson":"OFF","rhtm":"ON","filf":"1467","ercd":"NONE","nmod":"OFF","wacd":"NONE","hmod":"OFF","hmax":"2932","hsta":"OFF","ffoc":"ON","tilt":"OK"},"scheduler":{"srsc":"691a","dstv":"0000","tzid":"0001"}}
{"msg":"STATE-CHANGE","time":"2020-09-02T23:10:10.000Z","mode-reason":"","state-reason":"MODE","product-state":{"fmod":["OFF","FAN"],"fnst":["OFF","FAN"],"fnsp":["0003","0003"],"qtar":["0003","0003"],"oson":["OFF","OFF"],"rhtm":["ON","ON"],"filf":["1467","1467"],"ercd":["NONE","NONE"],"nmod":["OFF","OFF"],"wacd":["NONE","NONE"],"hmod":["OFF","OFF"],"hmax":["2932","2932"],"hsta":["OFF","OFF"],"ffoc":["ON","ON"],"tilt":["OK","OK"]},"scheduler":{"srsc":"691a","dstv":"0000","tzid":"0001"}}
情報取得パラメーター (ENVIRONMENTAL-CURRENT-SENSOR-DATA)
JSONタグ: data
JSONタグ | 意味 | 値 |
---|---|---|
hact | 湿度 (%) | 0000 - 0100 |
pact | ダスト | 0000 - 0009 |
sltm | スリープタイマー | OFF/ 1 - 9999 |
tact | 温度 (K) | 0000 - 5000 |
vact | VOC(揮発性有機化合物) | 0001 - 0009 |
ダイソンからのメッセージ例
{"msg":"ENVIRONMENTAL-CURRENT-SENSOR-DATA","time":"2020-09-02T23:10:15.001Z","data":{"tact":"3004","hact":"0076","pact":"0001","vact":"INIT","sltm":"OFF"}}
ダイソンの空気清浄機の制御
制御のために参加するMQTTトピックは、<ProductType>/<Username>/command
です。ProductType
は製品ごとの番号です。具体的には、パラメータ(プロダクトタイプ)です。Username
は、上記の接続(CONNECT)で使ったユーザ名になります。以下は、MQTT PUBLISHのメッセージ例です。
扇風機の制御 (STATE-SET)
{"msg":"STATE-SET","time":"2020-08-21T13:01:23.000Z","data":{"oson":"ON","fmod":"FAN"}}
STATE-SETメッセージ内のJSONタグの意味は、以下になります。
制御パラメータ
JSONタグ | 意味 | 値 | 搭載機器 |
---|---|---|---|
fmod | ファンモード | OFF/FAN/AUTO | 基本 |
fnsp | 風量 | 0001 - 0010 | 基本 |
oson | 首振り | ON/OFF | 基本 |
nmod | ナイトモード | ON/OFF | 基本 |
sltm | スリープタイマー(分) | OFF/[分] | 基本 |
rstf | フィルタリセット | RSTF | 基本 |
ffoc | ディフューズドモード 送風方向 |
OFF/ON | 風向 |
rhtm | スタンバイモード 情報メニュー表示 |
OFF/ON | 情報表示 |
hmax | 暖房の設定温度(K) | (温度(C)+273)×10 | 暖房 |
hmod | 暖房 | OFF/HEAT | 暖房 |
? | 加湿自動モード | ? | 加湿 |
? | 加湿設定湿度 | ? (30%〜70%) | 加湿 |
製品ごとのプロダクトタイプ番号と機能リスト
製品型番ごとのプロダクトタイプ
と制御可能な機能リストを以下の表に示す。
プロダクトタイプ | 型番 | 製造番号 (上位3桁) |
製品 | 基本 | 風向 | 情報表示 | 暖房 | 加湿 |
---|---|---|---|---|---|---|---|---|
276 | RB02 | ZX7 | Dyson 360 Heurist ロボット掃除機 | × | × | × | × | × |
358 | PH01 | 加湿空気清浄機 | ○ | ○ | ○ | × | ○ | |
MF01 | 加湿機(Wi-Fiなし) | ○ | × | × | × | ○ | ||
HP00 | TJ2 MV2 |
空気清浄機能付ファンヒーター(Wi-Fiなし) | ○ | × | × | ○ | × | |
HP01 | 空気清浄機能付ファンヒーター(Wi-Fiなし) | ○ | × | × | ○ | × | ||
HP02 | 空気清浄機能付ファンヒーター | ○ | ○ | × | ○ | × | ||
455 | HP03 | G5V(-IS) PE4(-IB) SX2(-IB) PE5(-WS) SX3(-WS) |
空気清浄機能付ファンヒーター (IS: アイアン/シルバー, IB: アイアン/ブルー, WS: ホワイト/シルバー) |
○ | ○ | × | ○ | × |
527 | HP04 | ZZ1(-WS) E4H(-WS) ZZ2(-IB) E4J(-IB) |
空気清浄機能付ファンヒーター (WS: ホワイト/シルバー, IB: アイアン/ブルー) |
○ | ○ | ○ | ○ | × |
DP01 | 空気清浄機能付テーブルファン | ○ | × | × | × | × | ||
469 | DP03 | SU2 | 空気清浄機能付テーブルファン | ○ | × | × | × | × |
520 | DP04 | 空気清浄テーブルファン | ○ | ○ | ○ | × | × | |
TP00 | 空気清浄機能付ファン(Wi-Fiなし) | ○ | × | × | × | × | ||
438(?) | TP02 | 空気清浄機能付タワーファン | ○ | × | × | × | × | |
475 | TP03 | SR1(-WS) NK4(-WS) SR2(-IB) NK5(-IB) |
空気清浄機能付タワーファン (WS: ホワイト/シルバー, IB: アイアン/ブルー) |
○ | × | × | × | × |
TP04 | VS1(-WS) E4E(-WS) |
空気清浄タワーファン (WS: ホワイト) |
○ | ○ | ○ | × | × |