用於本地處理基於 Tuya 的裝置的 Home Assistant 自訂整合。
此自訂整合透過推送更新而不是輪詢來更新裝置狀態,因此狀態更新速度很快(即使手動操作)。此整合還支援塗鴉物聯網雲端 API,用於檢索設備的資訊和 local_keys。
注意:雲端 API 帳戶配置不是強制性的(LocalTuya 沒有它也可以工作),但強烈建議您輕鬆檢索 local_keys(並在重新配對裝置後自動更新)。僅在啟動時以及需要更新 local_key 時執行雲端 API 呼叫。
目前支援以下塗鴉設備類型:
相容設備支援能源監控(電壓、電流、瓦特等)。
目前支援塗鴉協議3.1-3.4。
此儲存庫的開發始於@NameLessJedi、@mileperhour 和@TradeFace 的程式碼。然後,他們的程式碼進行了深度重構,以提供與 Home Assistant 環境的正確集成,添加配置流程和其他功能。請參閱下面的“感謝”部分。
如果您使用 HACS,最簡單的方法是透過 HACS 安裝 LocalTuya。
對於手動安裝,請將 localtuya 資料夾及其所有內容複製到 Home Assistant 的 custom_components 資料夾中。該資料夾通常位於/config
資料夾內。如果您正在執行 Hass.io,請使用 SAMBA 複製該資料夾。如果您使用的是 Home Assistant Supervised,則 custom_components 資料夾可能位於/usr/share/hassio/homeassistant
。您可能需要建立custom_components
資料夾,然後將 localtuya 資料夾及其所有內容複製到其中。
注意:您必須擁有塗鴉設備的金鑰和 ID 才能使用 LocalTuya。最簡單的方法是在整合中配置 Cloud API 帳戶。如果您選擇不這樣做,有多種方法可以獲取 local_keys,具體取決於您的環境和您擁有的設備。開始獲取資訊的好地方是 https://github.com/codetheweb/tuyapi/blob/master/docs/SETUP.md 或 https://pypi.org/project/tinytuya/。
註2:如果您打算將這些設備整合到具有互聯網的網路上並阻止其互聯網訪問,則還必須阻止DNS 請求(對本地DNS 伺服器,例如192.168.1.1)。如果您只阻止出站互聯網,那麼設備將處於殭屍狀態;它將拒絕/不回應與 localkey 的任何連線。因此,您必須先將裝置連接到有效的網路連接,以取得每個裝置的本機金鑰,並實作該區塊。
注意:從 v4.0.0 開始,不再支援使用 YAML 檔案進行設定。整合只能使用配置流程進行配置。
要開始配置集成,只需在設定 - 集成頁面中按下“+添加集成”按鈕,然後從下拉式選單中選擇 LocalTuya。將出現 Cloud API 設定頁面,要求輸入您的塗鴉 IoT 平台帳戶憑證:
設定塗鴉 IoT 平台帳號並在其中建立項目,請參考塗鴉官方整合說明:https://www.home-assistant.io/integrations/tuya/ 找到 Client ID 和 Secret 的地方是在此連結中描述(在“取得授權金鑰」段落中),而使用者ID 可以在雲端專案中的「連結塗鴉應用程式帳戶」子標籤中找到:
注意:如上面連結所述,如果您已有帳戶和 IoT 項目,請確保其是在 2021 年 5 月 25 日之後創建的(由於塗鴉 2.0 雲中引入的更改)。否則,您需要建立一個新專案。請參閱以下螢幕截圖,以了解在哪裡檢查項目建立日期:
按下“提交”按鈕後,第一個設定完成,並將新增整合。
注意:不強制輸入 Cloud API 憑證:您可以選擇勾選「不配置 Cloud API 帳戶」按鈕,無論如何都會新增整合。
設定整合後,可以按下「整合」頁面中的「配置」按鈕新增和設定設備:
配置選單如下:
從此選單中,您可以選擇「重新配置雲端 API 帳戶」來編輯您的塗鴉雲憑證和設置,以防它們發生更改或整合是從 v.3.xx 版本遷移的。
然後您可以繼續新增或編輯您的塗鴉設備。
如果您選擇“新增或編輯裝置”,將出現一個下拉式選單,其中包含偵測到的裝置清單(如果選擇新增,則使用自動發現;如果選擇編輯,則使用已設定的裝置清單):您可以選擇其中之一,或選擇“...”選項手動輸入所有參數。
注意:您裝置上的塗鴉應用程式必須關閉,以下步驟才能可靠地運作。
如果您選擇了一項,則只需輸入裝置的友善名稱和 localKey。如果您配置了 Cloud API 帳戶,這些值將自動檢索,否則您將需要手動輸入它們。
設定掃描間隔是可選的,僅當能量/功率值預設更新不夠頻繁時才需要設定。小於 10 秒的值可能會導致穩定性問題。
設定「手動 DPS 新增」是可選的,僅當裝置在實體正確初始化之前未正確通告 DPS 時才需要設定。通常可以透過先使用塗鴉應用程式連接/初始化設備,然後關閉應用程序,然後將設備添加到整合中來避免此設定。注意:使用此選項新增的任何 DPS 在設定期間都將具有 -1 值。
設定「在 RESET 命令中傳送的 DPID」是可選的。當裝置在重新啟動後不回應任何塗鴉命令,但可以連接到(殭屍狀態)時使用。這種情況主要發生在設備被阻止上網時。 DPids 因設備而異,但通常使用“18,19,20”。如果此處新增了錯誤的條目,則裝置可能無法擺脫殭屍狀態。通常,此處僅輸入感測器 DPID。
按下“提交”後,將測試連接以檢查一切是否正常。
然後,是時候新增實體了:此步驟將發生多次。首先,從下拉式選單中選擇實體類型進行設定。定義所有需要的實體後,選取「不新增更多實體」複選框:這將完成該過程。
對於每個實體,必須選擇關聯的 DP。所有需要選擇 DP 的選項都將提供下拉式選單,顯示裝置上找到的所有可用 DP(及其目前狀態!!),以便於識別。
注意:如果您的裝置需要 LocalTuya 向實體發送初始化值才能運作,則可以透過「被動實體」選項進行配置(在支援的實體中)。您可以選擇指定要傳送的初始化值
每種實體類型都有不同的配置選項。這是“switch”實體的範例:
配置實體後,該過程就完成了。現在您可以將裝置與 Home Assistant 中的區域關聯
如果您從 v3.xx 或更早版本升級 LocalTuya,設定項目將自動遷移到新設定。一切都應該像升級前一樣工作,除了在整合標籤中您只會看到一個 LocalTuya 整合(顯示配置的設備和實體的數量),而不是分組在 LocalTuya Box 中的多個整合。如果舊設定是使用 YAML 檔案和設定流程完成的,則會發生這種情況。遷移後,您只需輸入塗鴉 IoT 帳戶憑證即可啟用對 Cloud API 的支援(並受益於 local_key 擷取和自動更新):請參閱設定選單。
如果您使用 YAML 檔案配置了 LocalTuya,則可以從 YAML 檔案中刪除其所有引用,因為它們將不再被考慮,因此可能會帶來混亂(僅需要保留記錄器配置部分,當然,請參閱調試)。
您可以透過兩種不同的方式取得電能監控(電壓、電流):
sensor :
- platform : template
sensors :
tuya-sw01_voltage :
value_template : >-
{{ states.switch.sw01.attributes.voltage }}
unit_of_measurement : ' V '
tuya-sw01_current :
value_template : >-
{{ states.switch.sw01.attributes.current }}
unit_of_measurement : ' mA '
tuya-sw01_current_consumption :
value_template : >-
{{ states.switch.sw01.attributes.current_consumption }}
unit_of_measurement : ' W '
有多種基於塗鴉的氣候,包括加熱器、恆溫器和空調。所有這些似乎都以不同的方式集成,很難找到通用的 DP 映射。下面是目前有效的 DP 到產品映射表。使用它作為您自己的映射的指南,如果有可能,請為該列表做出貢獻。
DP | 莫斯 BHT 002 | Qlima WMS S + SC52 (AB;AF) | 阿瓦托 |
---|---|---|---|
1 | ID:開/關 {真,假} | ID:開/關 {真,假} | ID:開/關 {真,假} |
2 | 目標溫度 整數,縮放比例:0.5 | 目標溫度 整數,縮放 1 | 目標溫度 整數,縮放 1 |
3 | 目前溫度 整數,縮放比例:0.5 | 目前溫度 整數,縮放比例:1 | 目前溫度 整數,縮放比例:1 |
4 | 模式 {0, 1} | 模式 {「熱」、「風」、「濕」、「冷」、「自動」} | ? |
5 | 生態模式 ? | 風扇模式 {“強”、“高”、“中”、“低”、“自動”} | ? |
15 | 不支援 | 支持,未知 {真,假} | ? |
19 | 不支援 | 溫度單位 {“c”,“f”} | ? |
23 | 不支援 | 支持,未知 整數,例如。 68 | ? |
24 | 不支援 | 支持,未知 整數,例如。 64 | ? |
101 | 不支援 | 室外溫度 整數。縮放比例:1 | ? |
102 | 外部感測器溫度 整數,縮放比例:0.5 | 支持,未知 整數,例如。 34 | ? |
104 | 支持,未知 {真,假(?)} | 不支援 | ? |
Moes BHT 002 Avatto 恆溫器
每當您編寫錯誤報告時,如果直接包含偵錯日誌,將會有很大幫助(否則我們只會要求它們,並且會花費更長的時間)。因此,請啟用這樣的調試日誌並將其包含在您的問題中:
logger :
default : warning
logs :
custom_components.localtuya : debug
custom_components.localtuya.pytuya : debug
然後,編輯出現問題的裝置並選取「啟用此裝置的偵錯」按鈕。
創建一個(良好且精確的)能量(kWh)感測器(計數器)——不僅僅是功率,而是基於它——。想法:使用:https://www.home-assistant.io/integrations/integration/ 和 https://www.home-assistant.io/integrations/utility_meter/
#15 中列出的所有內容
NameLessJedi https://github.com/NameLessJedi/localtuya-homeassistant 和 mileperhour https://github.com/mileperhour/localtuya-homeassistant 是主要的靈感來源,其開關程式碼基本上沒有變化。
TradeFace,是唯一提供與封面通訊的正確程式碼的公司(特別是用於狀態的 0x0d 命令而不是 0x0a,以及相關需求,例如要接收雙重回應):https://github.com/TradeFace。 /tuya/
Sean6541,用於 Tuya 設備的工作(標準)Python 處理程序。
jasonacox,用於 TinyTuya 項目,我可以從其中導入代碼以使用協議 3.4 與設備進行通信。
postlund,感謝這些想法,感謝對 95% 的重構進行編碼,並將此儲存庫的品質提高到難以想像的水平(至少對我而言),並教會了我許多 Home Assistant 中的工作原理。