最近想把小米智慧燈泡接入 Home Assistant,這款燈泡是走 yeelight 系統的,所以理所當然我打算用 Home Assistant 官方的 Yeelight intergation 去連接,卻發現我不論怎麼用都只會得到 No devices found on the network 或是 Failed to connect 的錯誤,我就不明白了,搜尋許多解法後找到一個社群論壇大大給的方法,成功接入!紀錄一下順便寫個中文版教學給其他遇到相同問題的人參考~


注意此方法需要安裝 Python!

燈泡連接米家App

首先先依照說明書將燈泡初始化,連接到米家app,連上去後你就可以用米家 App 控制燈泡,但會發現 yeelight intergration 怎樣都找不到燈泡。

主因是燈泡沒有開啟開發者模式,我們無法從外面控制,用以下的方法可以把開發者模式打開。

取得燈泡 Token

我們要先取得控制燈泡的 token,下載 https://github.com/PiotrMachowski/Xiaomi-cloud-tokens-extractor/releases/latest/download/token_extractor.zip 解壓縮並進到目錄中(GitHub)

安裝需要的 python 相依性套件

1
pip install -r requirements.txt


接著執行腳本提取燈泡的token,需要輸入米家app的帳號密碼

1
python3 token_extractor.py


輸入完帳號密碼後他會顯示Server (one of: cn, de, us, ru, tw, sg, in, i2) Leave empty to check all available:問你伺服器,如果不知道就直接按Enter即可。

如果有成功提取 token 會出現類似下面的文字,把 token 和 ip 記下來!(圖中我遮掉了)

打開開發者模式

接下來要下命令給燈泡開啟開發者模式,首先先安裝套件

1
2
pip install pycrypto
pip install python-miio

有趣是我安裝pycrypto其實是失敗的,但我還是可以用(? XD


安裝好後在終端機中輸入,將 IP_OF_DEVICE 改成燈泡 IP,TOKEN_OF_DEVICE改成剛剛記下來的燈泡 token。

1
miiocli yeelight --ip IP_OF_DEVICE --token TOKEN_OF_DEVICE set_developer_mode 1


若他回應類似下面的文字就是成功了!

1
2
Setting developer mode to True
ok

接下來再回到 Home Assistant 他應該就會自己找到燈泡,如果沒有的話再去 intergrations 那邊新增 yeelight 讓他搜尋就會找到了!


參考資料

  1. https://github.com/PiotrMachowski/Xiaomi-cloud-tokens-extractor
  2. https://community.home-assistant.io/t/integrate-mi-smart-led-bulb-easy-steps/312174
  3. https://www.home-assistant.io/integrations/yeelight/