การผสานรวมแบบกำหนดเองของ Home Assistant สำหรับการจัดการอุปกรณ์ที่ใช้ Tuya ในพื้นที่
การรวมแบบกำหนดเองนี้จะอัปเดตสถานะอุปกรณ์ผ่านการพุชการอัปเดตแทนการโพล ดังนั้นการอัปเดตสถานะจึงรวดเร็ว (แม้ว่าจะดำเนินการด้วยตนเองก็ตาม) การผสานรวมยังรองรับ Tuya IoT Cloud API สำหรับการดึงข้อมูลและ local_keys ของอุปกรณ์
หมายเหตุ: ไม่จำเป็นต้องมีการกำหนดค่าบัญชี Cloud API (LocalTuya สามารถทำงานได้โดยไม่ต้องใช้การกำหนดค่านี้) แต่ขอแนะนำอย่างยิ่งเพื่อการดึงข้อมูลอย่างง่ายดาย (และอัปเดตอัตโนมัติหลังจากจับคู่อุปกรณ์อีกครั้ง) ของ local_keys การเรียก Cloud API จะดำเนินการเฉพาะเมื่อเริ่มต้นระบบ และเมื่อจำเป็นต้องอัปเดต local_key
ปัจจุบันรองรับอุปกรณ์ Tuya ประเภทต่อไปนี้:
รองรับการตรวจสอบพลังงาน (แรงดัน กระแส วัตต์ ฯลฯ) สำหรับอุปกรณ์ที่รองรับ
ปัจจุบันรองรับโปรโตคอล Tuya ตั้งแต่ 3.1 ถึง 3.4
การพัฒนาพื้นที่เก็บข้อมูลนี้เริ่มต้นจากโค้ดจาก @NameLessJedi, @mileperhour และ @TradeFace จากนั้นโค้ดของพวกเขาได้รับการปรับโครงสร้างใหม่อย่างล้ำลึกเพื่อให้มีการบูรณาการอย่างเหมาะสมกับสภาพแวดล้อม Home Assistant เพิ่มโฟลว์การกำหนดค่าและคุณสมบัติอื่นๆ โปรดดูส่วน "ขอบคุณ" ด้านล่าง
วิธีที่ง่ายที่สุด หากคุณใช้ HACS คือการติดตั้ง LocalTuya ผ่าน HACS
สำหรับการติดตั้งด้วยตนเอง ให้คัดลอกโฟลเดอร์ localtuya และเนื้อหาทั้งหมดลงในโฟลเดอร์ custom_components ของ Home Assistant โดยปกติโฟลเดอร์นี้จะอยู่ในโฟลเดอร์ /config
ของคุณ หากคุณใช้ Hass.io ให้ใช้ SAMBA เพื่อคัดลอกโฟลเดอร์ หากคุณรัน Home Assistant Supervised โฟลเดอร์ custom_components อาจอยู่ที่ /usr/share/hassio/homeassistant
คุณอาจต้องสร้างโฟลเดอร์ custom_components
จากนั้นคัดลอกโฟลเดอร์ localtuya และเนื้อหาทั้งหมดลงในโฟลเดอร์นั้น
หมายเหตุ: คุณต้องมีรหัสและ ID ของอุปกรณ์ Tuya ของคุณเพื่อที่จะใช้ 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) หากคุณบล็อกอินเทอร์เน็ตขาออกเท่านั้น อุปกรณ์จะอยู่ในสถานะซอมบี้ มันจะปฏิเสธ / ไม่ตอบสนองต่อการเชื่อมต่อใด ๆ กับโลคัลคีย์ ดังนั้นก่อนอื่นคุณต้องเชื่อมต่ออุปกรณ์ด้วยการเชื่อมต่ออินเทอร์เน็ตที่ใช้งานได้ คว้าโลคัลคีย์ของอุปกรณ์แต่ละเครื่อง และติดตั้งบล็อก
หมายเหตุ: ตั้งแต่เวอร์ชัน 4.0.0 เป็นต้นไป ระบบจะไม่รองรับการกำหนดค่าโดยใช้ไฟล์ YAML อีกต่อไป การผสานรวมสามารถกำหนดค่าได้โดยใช้ขั้นตอนการกำหนดค่าเท่านั้น
หากต้องการเริ่มกำหนดค่าการรวมระบบ เพียงกดปุ่ม "+เพิ่มการรวม" ในหน้าการตั้งค่า - การรวมระบบ และเลือก LocalTuya จากเมนูแบบเลื่อนลง หน้าการกำหนดค่า Cloud API จะปรากฏขึ้น โดยขอให้ป้อนข้อมูลประจำตัวบัญชี Tuya IoT Platform ของคุณ:
หากต้องการตั้งค่าบัญชี Tuya IoT Platform และตั้งค่าโปรเจ็กต์ในนั้น โปรดดูคำแนะนำสำหรับการผสานรวม Tuya อย่างเป็นทางการ: https://www.home-assistant.io/integrations/tuya/ สถานที่สำหรับค้นหารหัสลูกค้าและความลับคือ อธิบายไว้ในลิงก์นี้ (ในย่อหน้า "รับคีย์การอนุญาต") ในขณะที่ ID ผู้ใช้สามารถพบได้ในแท็บย่อย "ลิงก์บัญชีแอป Tuya" ภายในโปรเจ็กต์คลาวด์:
หมายเหตุ: ตามที่ระบุไว้ในลิงก์ด้านบน หากคุณมีบัญชีและโปรเจ็กต์ IoT อยู่แล้ว โปรดตรวจสอบให้แน่ใจว่าสร้างขึ้นหลังวันที่ 25 พฤษภาคม 2021 (เนื่องจากการเปลี่ยนแปลงที่นำมาใช้ในระบบคลาวด์สำหรับ Tuya 2.0) มิฉะนั้น คุณจะต้องสร้างโปรเจ็กต์ใหม่ ดูภาพหน้าจอต่อไปนี้เพื่อดูตำแหน่งที่จะตรวจสอบวันที่สร้างโครงการของคุณ:
หลังจากกดปุ่มส่ง การตั้งค่าแรกจะเสร็จสมบูรณ์และระบบจะเพิ่มการรวมเข้าด้วยกัน
หมายเหตุ: ไม่จำเป็นต้องป้อนข้อมูลรับรอง Cloud API: คุณสามารถเลือกที่จะทำเครื่องหมายที่ปุ่ม "ไม่ต้องกำหนดค่าบัญชี Cloud API" และการรวมระบบจะถูกเพิ่มต่อไป
หลังจากตั้งค่าการรวมระบบแล้ว คุณสามารถเพิ่มและกำหนดค่าอุปกรณ์ได้โดยกดปุ่มกำหนดค่าในหน้าการรวมระบบ:
เมนูการกำหนดค่ามีดังต่อไปนี้:
จากเมนูนี้ คุณสามารถเลือก "กำหนดค่าบัญชี Cloud API ใหม่" เพื่อแก้ไขข้อมูลรับรองและการตั้งค่า Tuya Cloud ของคุณ ในกรณีที่มีการเปลี่ยนแปลงหรือหากการผสานรวมถูกย้ายจากเวอร์ชัน v.3.xx
จากนั้นคุณสามารถดำเนินการเพิ่มหรือแก้ไขอุปกรณ์ Tuya ของคุณได้
หากคุณเลือก "เพิ่มหรือแก้ไขอุปกรณ์" เมนูแบบเลื่อนลงจะปรากฏขึ้นพร้อมรายการอุปกรณ์ที่ตรวจพบ (โดยใช้การค้นหาอัตโนมัติหากเลือกการเพิ่มไว้ หรือรายการอุปกรณ์ที่กำหนดค่าไว้แล้วหากเลือกการแก้ไข): คุณสามารถ เลือกหนึ่งในตัวเลือกเหล่านี้ หรือป้อนพารามิเตอร์ทั้งหมดด้วยตนเองโดยเลือกตัวเลือก "..."
หมายเหตุ: ต้องปิดแอป tuya บนอุปกรณ์ของคุณเพื่อให้ขั้นตอนต่อไปนี้ทำงานได้อย่างน่าเชื่อถือ
หากคุณเลือกหนึ่งรายการ คุณจะต้องป้อนชื่อที่จำง่ายและ localKey ของอุปกรณ์เท่านั้น ค่าเหล่านี้จะถูกดึงข้อมูลโดยอัตโนมัติหากคุณได้กำหนดค่าบัญชี Cloud API ของคุณ ไม่เช่นนั้น คุณจะต้องป้อนข้อมูลด้วยตนเอง
การตั้งค่าช่วงเวลาการสแกนเป็นทางเลือก โดยจำเป็นเฉพาะในกรณีที่ค่าพลังงาน/พลังงานไม่ได้อัปเดตบ่อยเพียงพอตามค่าเริ่มต้น ค่าที่น้อยกว่า 10 วินาทีอาจทำให้เกิดปัญหาด้านความเสถียร
การตั้งค่า 'การเพิ่ม DPS ด้วยตนเอง' เป็นทางเลือก โดยจำเป็นเฉพาะในกรณีที่อุปกรณ์ไม่ได้โฆษณา DPS อย่างถูกต้องจนกว่าเอนทิตีจะเริ่มต้นอย่างถูกต้องเท่านั้น บ่อยครั้งที่สามารถหลีกเลี่ยงการตั้งค่านี้ได้โดยการเชื่อมต่อ/เริ่มต้นอุปกรณ์ด้วยแอป Tuya ก่อน จากนั้นจึงปิดแอป จากนั้นจึงเพิ่มอุปกรณ์ในการผสานรวม หมายเหตุ: DPS ใดๆ ที่เพิ่มโดยใช้ตัวเลือกนี้จะมีค่า -1 ระหว่างการตั้งค่า
การตั้งค่า 'DPID ที่จะส่งในคำสั่ง RESET' เป็นทางเลือก ใช้เมื่ออุปกรณ์ไม่ตอบสนองต่อคำสั่ง Tuya ใดๆ หลังจากรอบการจ่ายไฟ แต่สามารถเชื่อมต่อกับได้ (สถานะซอมบี้) สถานการณ์นี้ส่วนใหญ่เกิดขึ้นเมื่ออุปกรณ์ถูกบล็อกไม่ให้เข้าถึงอินเทอร์เน็ต DPid จะแตกต่างกันไปตามอุปกรณ์ต่างๆ แต่โดยทั่วไปจะใช้ "18,19,20" หากมีการเพิ่มรายการที่ไม่ถูกต้องที่นี่ อุปกรณ์อาจไม่หลุดออกจากสถานะซอมบี้ โดยทั่วไปแล้วจะมีเฉพาะเซ็นเซอร์ DPID ที่ป้อนที่นี่
เมื่อคุณกด "ส่ง" การเชื่อมต่อจะถูกทดสอบเพื่อตรวจสอบว่าทุกอย่างใช้งานได้
จากนั้น ถึงเวลาเพิ่มเอนทิตี ขั้นตอนนี้จะเกิดขึ้นหลายครั้ง ขั้นแรก เลือกประเภทเอนทิตีจากเมนูแบบเลื่อนลงเพื่อตั้งค่า หลังจากที่คุณได้กำหนดเอนทิตีที่จำเป็นทั้งหมดแล้ว ให้ทำเครื่องหมายในช่อง "อย่าเพิ่มเอนทิตีเพิ่มเติม" ซึ่งจะทำให้ขั้นตอนเสร็จสมบูรณ์
สำหรับแต่ละเอนทิตี จะต้องเลือก DP ที่เกี่ยวข้อง ตัวเลือกทั้งหมดที่จำเป็นต้องเลือก DP จะมีเมนูแบบเลื่อนลงที่แสดง DP ที่มีอยู่ทั้งหมดที่พบในอุปกรณ์ (พร้อมสถานะปัจจุบัน!!) เพื่อให้ระบุได้ง่าย
หมายเหตุ: หากอุปกรณ์ของคุณต้องการให้ LocalTuya ส่งค่าเริ่มต้นไปยังเอนทิตีเพื่อให้ทำงานได้ คุณสามารถกำหนดค่านี้ได้ (ในเอนทิตีที่รองรับ) ผ่านตัวเลือก 'เอนทิตีแบบพาสซีฟ' คุณสามารถเลือกระบุค่าเริ่มต้นที่จะส่งได้
เอนทิตีแต่ละประเภทมีตัวเลือกที่แตกต่างกันในการกำหนดค่า นี่คือตัวอย่างสำหรับเอนทิตี "สวิตช์":
เมื่อคุณตั้งค่าคอนฟิกเอนทิตีแล้ว ขั้นตอนจะเสร็จสมบูรณ์ ตอนนี้คุณสามารถเชื่อมโยงอุปกรณ์กับพื้นที่ใน Home Assistant ได้แล้ว
หากคุณอัปเกรด LocalTuya จาก v3.xx หรือเก่ากว่า รายการการกำหนดค่าจะถูกย้ายไปยังการตั้งค่าใหม่โดยอัตโนมัติ ทุกอย่างควรทำงานได้เหมือนเดิมก่อนการอัพเกรด นอกเหนือจากข้อเท็จจริงที่ว่าในแท็บการรวมระบบ คุณจะเห็นการรวม LocalTuya เพียงรายการเดียว (แสดงจำนวนอุปกรณ์และเอนทิตีที่กำหนดค่า) แทนที่จะเป็นการรวมหลายรายการที่จัดกลุ่มภายใน LocalTuya Box สิ่งนี้จะเกิดขึ้นหากการกำหนดค่าเก่าเสร็จสิ้นโดยใช้ไฟล์ YAML และขั้นตอนการกำหนดค่า เมื่อย้ายแล้ว คุณสามารถป้อนข้อมูลประจำตัวบัญชี Tuya IoT ของคุณเพื่อเปิดใช้งานการรองรับ Cloud API (และรับประโยชน์จากการดึงข้อมูล local_key และการอัปเดตอัตโนมัติ): ดูเมนูการกำหนดค่า
หากคุณได้กำหนดค่า LocalTuya โดยใช้ไฟล์ YAML คุณสามารถลบการอ้างอิงทั้งหมดออกจากภายในไฟล์ 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 '
มีสภาพอากาศแบบ Tuya มากมาย ทั้งเครื่องทำความร้อน เทอร์โมสตัท และเครื่องปรับอากาศ ดูเหมือนว่าทั้งหมดจะบูรณาการในรูปแบบที่แตกต่างกัน และเป็นการยากที่จะหาการแมป DP ทั่วไป ด้านล่างนี้คือตาราง DP ถึงการแมปผลิตภัณฑ์ซึ่งปัจจุบันใช้งานได้ ใช้เป็นแนวทางสำหรับการทำแผนที่ของคุณเอง และโปรดมีส่วนร่วมในรายการหากคุณมีโอกาส
ดีพี | โมส BHT 002 | Qlima WMS S + SC52 (AB; AF) | อวัตโต |
---|---|---|---|
1 | รหัส: เปิด/ปิด {จริงเท็จ} | รหัส: เปิด/ปิด {จริงเท็จ} | รหัส: เปิด/ปิด {จริงเท็จ} |
2 | อุณหภูมิเป้าหมาย จำนวนเต็ม สเกล: 0.5 | อุณหภูมิเป้าหมาย จำนวนเต็ม มาตราส่วน 1 | อุณหภูมิเป้าหมาย จำนวนเต็ม มาตราส่วน 1 |
3 | อุณหภูมิปัจจุบัน จำนวนเต็ม สเกล: 0.5 | อุณหภูมิปัจจุบัน จำนวนเต็ม, สเกล: 1 | อุณหภูมิปัจจุบัน จำนวนเต็ม, สเกล: 1 |
4 | โหมด {0, 1} | โหมด {"ร้อน", "ลม", "เปียก", "เย็น", "รถยนต์"} | - |
5 | โหมดอีโค - | โหมดพัดลม {"แข็งแกร่ง", "สูง", "กลาง", "ต่ำ", "อัตโนมัติ"} | - |
15 | ไม่รองรับ | รองรับแล้ว ไม่ทราบ {จริงเท็จ} | - |
19 | ไม่รองรับ | หน่วยอุณหภูมิ {"ค", "ฉ"} | - |
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 สำหรับ Python Handler ที่ใช้งานได้ (มาตรฐาน) สำหรับอุปกรณ์ Tuya
jasonacox สำหรับโปรเจ็กต์ TinyTuya ซึ่งฉันสามารถนำเข้าโค้ดเพื่อสื่อสารกับอุปกรณ์ที่ใช้โปรโตคอล 3.4
postlund สำหรับแนวคิด สำหรับการเขียนโค้ด 95% ของการปรับโครงสร้างใหม่และส่งเสริมคุณภาพของ repo นี้ให้อยู่ในระดับที่ยากต่อการจินตนาการ (โดยฉันอย่างน้อย) และสอนฉันมากมายถึงวิธีการทำงานของสิ่งต่าง ๆ ใน Home Assistant