Faikin Ninja P1P2 — คู่มือ MQTT

Faikin Australia

การควบคุมและตรวจสอบ Faikin Ninja P1P2 ผ่าน MQTT ตั้งแต่การตั้งค่าครั้งแรกไปจนถึงรายการอ้างอิงหัวข้อ คำสั่ง และเซ็นเซอร์ทั้งหมด

การควบคุมทั้งหมดเป็นแบบโลคัล · ไม่ใช้คลาวด์ ไม่ต้องมีบัญชี · ใช้งานได้กับ Home Assistant, openHAB, Node-RED และทุกอย่างที่สื่อสารด้วย MQTT

คู่มือฉบับสมบูรณ์สำหรับการควบคุมและตรวจสอบ Faikin Ninja P1P2 ผ่าน MQTT ตั้งแต่การตั้งค่าครั้งแรกไปจนถึงรายการอ้างอิงหัวข้อ คำสั่ง และเซ็นเซอร์ทั้งหมด

เนื้อหานี้ครอบคลุมโมดูล Faikin Ninja ที่ติดตั้งกับบัสควบคุม Daikin P1/P2 ได้แก่ VRV และ VRF, Sky Air, รุ่นเชิงพาณิชย์ตระกูล F และระบบท่อลมที่มี Airbase หรือคอนโทรลเลอร์ควบคุมโซน ตลอดคู่มือนี้ หัวข้อฐานตัวอย่างคือ ac/livingroom และ IP ของโบรกเกอร์ตัวอย่างคือ 192.168.1.10 โปรดแทนที่ทั้งสองค่าด้วยค่าของท่านเอง

นี่ไม่ใช่อินเทอร์เฟซ MQTT เดียวกันกับของ Faikin Faikout Ninja ใช้เฟิร์มแวร์คนละตัวและมีโครงสร้างหัวข้อที่ต่างกัน ออโตเมชันที่เขียนไว้สำหรับ Faikout จึงใช้กับ Ninja ไม่ได้ หากท่านมี Faikout โปรดดูคู่มือ MQTT ของ Faikin Faikout แทน หัวข้อที่ 5 มีตารางเปรียบเทียบแบบเคียงข้างกัน

1. MQTT ให้อะไรกับท่านบ้าง

หน้าเว็บในตัวของ Ninja เพียงพอสำหรับการใช้งานประจำวัน MQTT คือสิ่งที่ท่านต้องการเมื่อจำเป็นต้องให้เครื่องปรับอากาศเป็นส่วนหนึ่งของระบบที่ใหญ่กว่า

  • ระบบอัตโนมัติ สั่งงานเครื่องได้จากทุกสิ่ง ไม่ว่าจะเป็นการตรวจจับการมีคนอยู่ ตารางเวลา ฟีดราคาไฟฟ้า เซ็นเซอร์ประตู หรืออุณหภูมิของอีกห้องหนึ่ง
  • การวัดค่าอย่างแท้จริง บัส P1/P2 ส่งข้อมูลมากกว่าแค่เปิด ปิด และอุณหภูมิ Ninja เผยแพร่ค่าเทอร์มิสเตอร์ทั้งภายในและภายนอก แรงดันสารทำความเย็น ตำแหน่งวาล์วขยายตัว สถานะคอมเพรสเซอร์และพัดลม ชั่วโมงการทำงาน และรหัสข้อผิดพลาดของเครื่องเอง ข้อมูลส่วนใหญ่นี้มองไม่เห็นจากคอนโทรลเลอร์ติดผนัง
  • โซนของระบบท่อลม หากท่านมีคอนโทรลเลอร์ควบคุมโซนของ Daikin แดมเปอร์แต่ละตัวจะกลายเป็นสวิตช์ที่ควบคุมได้ทีละตัว
  • รวมทุกอย่างไว้ที่เดียว Home Assistant, Node-RED, openHAB และสิ่งอื่นใดที่สื่อสารด้วย MQTT สามารถมองเห็นอุปกรณ์เดียวกันได้พร้อมกันทั้งหมด
  • ทำงานแบบโลคัล MQTT ทำงานบนโบรกเกอร์ของท่านเองบนเครือข่ายของท่านเอง ไม่มีข้อมูลใดออกจากบ้าน และไม่ต้องสร้างบัญชีใด ๆ

2. ก่อนเริ่มต้น

ท่านต้องมีสามสิ่ง

  1. Ninja เชื่อมต่อกับ WiFi ของท่านแล้ว และเข้าถึงหน้าเว็บของตัวเองได้ หากยังไม่ได้ โปรดทำตาม คู่มือการติดตั้ง ก่อน
  2. โบรกเกอร์ MQTT บนเครือข่ายของท่าน หากท่านใช้ Home Assistant อยู่ ให้ติดตั้งส่วนเสริม Mosquitto broker ซึ่งใช้เวลาไม่กี่นาทีและให้ทั้งโบรกเกอร์พร้อมชื่อผู้ใช้และรหัสผ่าน หรือจะใช้ Mosquitto หรือโบรกเกอร์ที่เข้ากันได้ตัวใดก็ได้บนเครื่องที่เปิดอยู่ตลอดก็ได้
  3. หมายเลข IP ชื่อผู้ใช้ และรหัสผ่านของโบรกเกอร์

ท่าน ไม่ จำเป็นต้องมี Home Assistant เพื่อใช้ MQTT และไม่จำเป็นต้องมี MQTT เพื่อใช้ Home Assistant ทั้งสองเป็นทางเลือกที่แยกจากกัน เพียงแต่ทำงานร่วมกันได้ดี

3. ขั้นตอนที่ 1: ชี้ Ninja ไปยังโบรกเกอร์ MQTT ของท่าน

เปิดหน้าเว็บของ Ninja แล้วไปที่ MQTT settings

ฟิลด์ สิ่งที่ต้องกรอก
Host IP หรือชื่อโฮสต์ของโบรกเกอร์ เช่น 192.168.1.10
Port พอร์ตของโบรกเกอร์ 1883 หากท่านไม่ได้เปลี่ยนค่า
User ชื่อผู้ใช้ของโบรกเกอร์ หากมีการใช้งาน
Password รหัสผ่านของโบรกเกอร์ หากมีการใช้งาน
Topic ครึ่งแรกของหัวข้อฐาน เช่น ac
Friendly Name ครึ่งหลัง เช่น livingroom

สองรายการสุดท้ายสำคัญกว่าที่เห็น Ninja สร้างทุกหัวข้อของตนขึ้นจากสองค่านี้

หัวข้อฐาน = <Topic> / <Friendly Name>

ดังนั้น Topic = ac และ Friendly Name = livingroom จะได้หัวข้อฐานเป็น ac/livingroom และหัวข้อสถานะจะกลายเป็น ac/livingroom/state

เลือกทั้งสองค่า ก่อน ที่ท่านจะสร้างออโตเมชันใด ๆ การเปลี่ยนค่าเหล่านี้ในภายหลังจะเปลี่ยนชื่อทุกหัวข้อ และทำให้ทุกสิ่งที่อ้างถึงหัวข้อเดิมเสียหายอย่างเงียบ ๆ ธรรมเนียมที่มีประโยชน์คือใช้คำนำหน้าร่วมกันหนึ่งค่าสำหรับทุกเครื่องของท่าน (ac) บวกกับชื่อห้องที่จะไม่เปลี่ยนแปลง (livingroom, masterbed, office)

บันทึกค่า แล้วโมดูลจะเชื่อมต่อใหม่และเริ่มเผยแพร่ข้อมูล

4. ขั้นตอนที่ 2: ยืนยันว่าเชื่อมต่อแล้ว

ท่านไม่จำเป็นต้องใช้เทอร์มินัลสำหรับเรื่องนี้ มีสองที่ที่บอกท่านได้ทันที

บนหน้าเว็บของ Ninja เอง

เปิดดูโมดูล ที่ด้านบนของหน้าถัดจากชื่ออุปกรณ์ จะแสดงสถานะการเชื่อมต่อโบรกเกอร์ MQTT connected หมายความว่าโมดูลติดต่อกับโบรกเกอร์ของท่านได้แล้วและกำลังเผยแพร่ข้อมูล

หากไม่มีข้อความนี้ แสดงว่าโฮสต์ พอร์ต ชื่อผู้ใช้ หรือรหัสผ่านไม่ถูกต้อง หรือโบรกเกอร์เข้าถึงไม่ได้จากเครือข่ายที่โมดูลอยู่ โปรดตรวจสอบการตั้งค่า MQTT อีกครั้ง แล้วดูหัวข้อการแก้ปัญหา

ใน Home Assistant

ไม่ต้องเพิ่มอะไรด้วยมือ Ninja เผยแพร่ข้อความ MQTT discovery ของ Home Assistant ดังนั้นเมื่อติดต่อโบรกเกอร์ได้แล้ว Home Assistant จะพบอุปกรณ์เอง ตราบใดที่การผสานรวม MQTT ถูกตั้งค่าไว้แล้วและชี้ไปยังโบรกเกอร์เดียวกัน:

  1. ไปที่ Settings > Devices & services > MQTT แล้วเปิดรายการอุปกรณ์
  2. อุปกรณ์ของท่านจะปรากฏภายในไม่กี่วินาที โดยใช้ชื่อตาม Friendly Name ที่ท่านตั้งไว้
  3. เปิดดูแล้วจะพบทุกอย่างอยู่ครบ ทั้งเอนทิตี climate พร้อมโหมด อุณหภูมิเป้าหมาย ความเร็วพัดลม และบานปรับลม รายการเซ็นเซอร์วินิจฉัยจำนวนมาก และหากท่านมีคอนโทรลเลอร์ควบคุมโซน ก็จะมีสวิตช์สำหรับแต่ละโซนแดมเปอร์ด้วย

ท่านไม่ควรต้องเขียนเอนทิตี climate ใน YAML ด้วยมือสำหรับ Ninja เลย หากพบว่าต้องทำเช่นนั้น แสดงว่ามีบางอย่างผิดพลาดตั้งแต่ต้นทาง

หากท่านต้องการตรวจสอบจากเทอร์มินัล

เป็นทางเลือก และคุ้มค่าเฉพาะเมื่อท่านติดตั้งเครื่องมือไคลเอนต์ mosquitto ไว้อยู่แล้ว:

mosquitto_sub -h 192.168.1.10 -u USER -P PASS -t 'ac/livingroom/#' -v

ท่านควรเห็น ac/livingroom/availability รายงานค่าเป็น online และเพย์โหลด JSON แบบเต็มบน ac/livingroom/state

หากไม่มีข้อมูลเข้ามาเลย ให้ข้ามไปที่หัวข้อการแก้ปัญหา

5. โครงสร้างหัวข้อ

ทุกอย่างแตกออกมาจากหัวข้อฐานที่ท่านสร้างไว้ในหัวข้อที่ 3 เมื่อหัวข้อฐานคือ ac/livingroom:

การปรับอากาศและการควบคุม

หัวข้อ ทิศทาง หน้าที่
ac/livingroom/power/set ท่านเผยแพร่ เปิดหรือปิดเครื่อง
ac/livingroom/mode/set ท่านเผยแพร่ โหมดการทำงาน
ac/livingroom/temp/set ท่านเผยแพร่ อุณหภูมิเป้าหมาย
ac/livingroom/fan/set ท่านเผยแพร่ ความเร็วพัดลม
ac/livingroom/vane/set ท่านเผยแพร่ ตำแหน่งบานปรับลมหรือการส่าย
ac/livingroom/zone/<1..8>/set ท่านเผยแพร่ เปิดหรือปิดโซนแดมเปอร์หนึ่งโซน
ac/livingroom/state โมดูลเผยแพร่ สถานะทั้งหมดในรูปออบเจ็กต์ JSON เดียว
ac/livingroom/availability โมดูลเผยแพร่ online หรือ offline

ระบบและการจัดการ

หัวข้อ ทิศทาง หน้าที่
ac/livingroom/system/set ท่านเผยแพร่ restart, upgrade หรือ factory
ac/livingroom/system/set_safemode ท่านเผยแพร่ Safe Mode on หรือ off
ac/livingroom/system/set_min_temp ท่านเผยแพร่ ขีดจำกัดอุณหภูมิเป้าหมายต่ำสุด
ac/livingroom/system/set_max_temp ท่านเผยแพร่ ขีดจำกัดอุณหภูมิเป้าหมายสูงสุด
ac/livingroom/system/set_modbus_rtu_id ท่านเผยแพร่ หมายเลขสเลฟ Modbus RTU
ac/livingroom/system/opt/rqt ท่านเผยแพร่ คำขอตัวเลือกในรูป JSON
ac/livingroom/system/opt/rps โมดูลเผยแพร่ การสะท้อนกลับของตัวเลือกที่ยอมรับแล้ว
ac/livingroom/system/info โมดูลเผยแพร่ ข้อมูลเทเลเมทรีของบริดจ์ในรูป JSON

สำหรับออโตเมชันส่วนใหญ่ ท่านต้องใช้เพียงสามอย่าง คือเผยแพร่ไปยังหัวข้อ .../set และสมัครรับ state และ availability

หากท่านมี Faikout ด้วย

ผลิตภัณฑ์ทั้งสองใช้แนวทางตรงกันข้ามกัน จึงควรดูเปรียบเทียบกัน

Faikin Faikout Faikin Ninja P1P2
รูปแบบหัวข้อ command/<host>/..., state/<host> <topic>/<name>/...
การตั้งค่าควบคุมหนึ่งอย่าง ข้อความ JSON control เดียวที่มีหลายฟิลด์ หนึ่งหัวข้อเล็ก ๆ ต่อหนึ่งการควบคุม
การอ่านสถานะ JSON บน state/<host> JSON บน <base>/state
การมีอยู่ของอุปกรณ์ state/<host> เพย์โหลด false <base>/availability เพย์โหลด offline
การตั้งค่า setting/<host> ในรูป JSON <base>/system/... หลายหัวข้อ
ความลึกของข้อมูล อุณหภูมิห้อง คอยล์ ภายนอก และกำลังไฟ เพิ่มเทอร์มิสเตอร์ภายนอก แรงดัน พัลส์ EV ชั่วโมงการทำงาน และรหัสข้อผิดพลาด
โซน ไม่รองรับ รองรับสูงสุด 8 โซนแดมเปอร์

6. การส่งคำสั่ง

เผยแพร่สตริงธรรมดาไปยังหัวข้อ .../set ที่เกี่ยวข้อง ไม่มีการห่อด้วย JSON เพย์โหลดคือค่าล้วน ๆ

power/set

เพย์โหลด ผลลัพธ์
ON เปิดเครื่อง โดยเรียกคืนโหมด อุณหภูมิ พัดลม และบานปรับลมล่าสุด
OFF ปิดเครื่อง

mode/set

เพย์โหลด ผลลัพธ์
heat ทำความร้อน
cool ทำความเย็น
dry ลดความชื้น
fan_only พัดลมอย่างเดียว ไม่ทำความร้อนหรือความเย็น
off ปิดเครื่อง

temp/set

อุณหภูมิเป้าหมายเป็นตัวเลข เช่น 24 ช่วง 16 ถึง 32 °C โดยปรับ ขั้นละ 1.0 °C ท่านสามารถจำกัดช่วงนี้ให้แคบลงได้ด้วย system/set_min_temp และ system/set_max_temp (หัวข้อที่ 11)

fan/set

ความเร็วที่ใช้ได้ขึ้นอยู่กับชุดภายใน โมดูลจะรายงานเฉพาะค่าที่เครื่องของท่านรองรับจริง หากส่งค่าที่ไม่มีอยู่ ระบบจะไม่สนใจ

เพย์โหลด คำอธิบาย
low ต่ำ
medium ปานกลาง
high สูง
auto อัตโนมัติ
low_auto ต่ำอัตโนมัติ (ระบบที่มีโซนและ Airbase)
medium_auto ปานกลางอัตโนมัติ (ระบบที่มีโซนและ Airbase)
high_auto สูงอัตโนมัติ (ระบบที่มีโซนและ Airbase)

กลุ่มที่พบบ่อยคือ:

  • 3 ระดับพร้อมอัตโนมัติ: low, medium, high, auto
  • 2 ระดับ: low, high
  • 4 ระดับสำหรับระบบโซน/Airbase: low, medium, low_auto, medium_auto
  • 6 ระดับสำหรับระบบโซน/Airbase: low, medium, high, low_auto, medium_auto, high_auto

vane/set

เพย์โหลด คำอธิบาย
1 ตำแหน่งที่ 1 บนสุด
2 ถึง 4 ตำแหน่งกลาง
5 ตำแหน่งที่ 5 ล่างสุด
swing การส่ายในแนวตั้งอย่างต่อเนื่อง

ตัวอย่าง

# On, cooling, 24 C, auto fan, swinging
mosquitto_pub -h 192.168.1.10 -t 'ac/livingroom/power/set' -m 'ON'
mosquitto_pub -h 192.168.1.10 -t 'ac/livingroom/mode/set'  -m 'cool'
mosquitto_pub -h 192.168.1.10 -t 'ac/livingroom/temp/set'  -m '24'
mosquitto_pub -h 192.168.1.10 -t 'ac/livingroom/fan/set'   -m 'auto'
mosquitto_pub -h 192.168.1.10 -t 'ac/livingroom/vane/set'  -m 'swing'

เนื่องจากการควบคุมแต่ละอย่างมีหัวข้อของตัวเอง ลำดับจึงไม่สำคัญ และท่านส่งเฉพาะรายการที่ต้องการได้

7. โซนของระบบท่อลม

หากมีคอนโทรลเลอร์ควบคุมโซนของ Daikin อยู่บนบัส P1/P2 Ninja จะเปิดและปิดแดมเปอร์แต่ละตัวได้

เผยแพร่ ON หรือ OFF ไปยัง ac/livingroom/zone/<n>/set โดยที่ <n> คือ 1 ถึง 8:

# Open zone 1, close zone 3
mosquitto_pub -h 192.168.1.10 -t 'ac/livingroom/zone/1/set' -m 'ON'
mosquitto_pub -h 192.168.1.10 -t 'ac/livingroom/zone/3/set' -m 'OFF'

เพย์โหลดสถานะจะรายงานกลับมาว่า:

คีย์ ชนิด ความหมาย
zone_count number จำนวนโซนที่ตรวจพบ ตั้งแต่ 1 ถึง 8
zone_1 … zone_8 boolean true คือเปิด false คือปิด
zone_name_1 … zone_name_8 string ชื่อที่ตั้งไว้บนคอนโทรลเลอร์ควบคุมโซน เช่น "Master Bed"

ใน Home Assistant แต่ละโซนที่ใช้งานอยู่จะถูกค้นพบอัตโนมัติเป็นสวิตช์ของตัวเอง จึงไม่ต้องตั้งค่าใด ๆ

ข้อควรทราบสองข้อ โซนจะปรากฏก็ต่อเมื่อมีคอนโทรลเลอร์ควบคุมโซนอยู่ ดังนั้นในระบบสปลิตธรรมดาจะไม่มีคีย์โซนเลย และการปิดทุกโซนพร้อมกันเป็นวิธีที่ทำให้ระบบท่อลมมีปัญหา ควรเปิดไว้อย่างน้อยหนึ่งโซน หรือปิดเครื่องไปเลยแทน

8. การอ่านสถานะ

โมดูลเผยแพร่ออบเจ็กต์ JSON ที่สมบูรณ์หนึ่งชุดไปยัง <base>/state ทุกครั้งที่มีการเปลี่ยนแปลง

เฉพาะเซ็นเซอร์ที่เครื่องของท่านรายงานจริงเท่านั้นที่จะปรากฏ Ninja จะตรวจจับสิ่งที่ชุดภายในและชุดภายนอกที่เชื่อมต่ออยู่เผยแพร่ออกมา และซ่อนส่วนที่เหลือ ดังนั้นเพย์โหลดของท่านจะสั้นกว่าตัวอย่างด้านล่าง และ Daikin สองเครื่องที่ต่างกันจะให้คีย์ที่ต่างกัน นี่เป็นเรื่องปกติ โปรดเขียนออโตเมชันโดยอิงกับคีย์ที่ท่านเห็นบนเครื่องของท่านเอง

{
  "power": "on",
  "mode": "cool",
  "action": "cooling",
  "temperature": 24,
  "fan": "auto",
  "vane": "swing",
  "room_temperature": 25.5,
  "outside_temperature": 32.0,
  "f_intake_temp": 25.0,
  "f_indoor_th1": 18.2,
  "f_indoor_th2": 24.8,
  "f_outdoor_th1": 32.0,
  "f_outdoor_th3": 75.4,
  "f_pe_pressure": 0.83,
  "f_pc_pressure": 2.40,
  "f_drain_pump": false,
  "f_electric_heater": false,
  "f_comp_operating": true,
  "operating": true,
  "f_fan_step": 3,
  "f_ev_pulses": 240,
  "f_id_op_hours": 1250,
  "f_error_present": false,
  "f_error_code": "",
  "f_indoor_model": "FBA100BVMA",
  "f_outdoor_model": "RZA100DV1",
  "zone_count": 4,
  "zone_1": true,
  "zone_2": true,
  "zone_3": false,
  "zone_4": false
}

คีย์ที่ควรรู้จักก่อนคือ:

คีย์ ความหมาย
power on หรือ off สิ่งที่ท่านสั่ง
mode โหมดที่ท่านสั่ง
action สิ่งที่เครื่องกำลังทำอยู่จริง ในขณะนี้: cooling, heating, idle เป็นต้น นี่คือค่าที่ควรเฝ้าดู ไม่ใช่ power
temperature ค่าเป้าหมายของท่าน ไม่ใช่อุณหภูมิห้อง
room_temperature อุณหภูมิห้องตามที่เครื่องวัดได้
operating ระบบกำลังทำงานอยู่หรือไม่
f_error_present / f_error_code แฟล็กและรหัสข้อผิดพลาดของ Daikin เอง เช่น "A9-01"

เครื่องอาจมีค่า "power": "on" พร้อมกับ "action": "idle" ได้ ซึ่งเป็นเรื่องปกติ เพราะเครื่องถึงอุณหภูมิที่ตั้งไว้แล้ว หากท่านต้องการทราบว่าเครื่องทำงานจริงหรือไม่ ให้ดูที่ action, operating หรือ f_comp_operating

โปรดสมัครรับ <base>/availability ด้วย ค่า offline ที่นั่นหมายความว่าโมดูล หลุดการเชื่อมต่อ ซึ่งต่างจากการที่เครื่องปรับอากาศถูกปิด

9. Home Assistant ผ่าน MQTT

เพิ่มการผสานรวม MQTT แล้วชี้ไปยังโบรกเกอร์เดียวกัน เท่านี้ก็เสร็จสิ้นการตั้งค่า Ninja จะประกาศตัวเองและ Home Assistant จะสร้างทุกอย่างให้

สิ่งที่ท่านจะได้รับ:

  • เอนทิตี climate พร้อมโหมด heat, cool, dry, fan_only และ off โหมดพัดลมของเครื่องท่าน ตำแหน่งการส่าย 1 ถึง 5 และ swing และการปรับขั้นละ 1.0 °C
  • เซ็นเซอร์และไบนารีเซ็นเซอร์ สำหรับทุกเทอร์มิสเตอร์ แรงดัน แอกชูเอเตอร์ ตัวนับชั่วโมง รหัสข้อผิดพลาด และสตริงรุ่นที่เครื่องของท่านรายงาน ส่วนใหญ่จะอยู่ภายใต้หมวด Diagnostic
  • สวิตช์ สำหรับแต่ละโซนแดมเปอร์ที่ใช้งานอยู่

Entity ID จะอิงตาม Friendly Name ดังนั้นเมื่อใช้ livingroom ท่านจะได้ climate.livingroom, sensor.livingroom_outside_temperature, switch.livingroom_zone_1 เป็นต้น โปรดตรวจสอบชื่อที่แน่นอนใน Developer tools > States ก่อนเขียน YAML

การ์ดสำหรับแดชบอร์ด

type: vertical-stack
cards:
  - type: thermostat
    entity: climate.livingroom

  - type: entities
    title: Zones
    entities:
      - entity: switch.livingroom_zone_1
        name: Living
      - entity: switch.livingroom_zone_2
        name: Master bed
      - entity: switch.livingroom_zone_3
        name: Study
      - entity: switch.livingroom_zone_4
        name: Kids

  - type: glance
    title: Right now
    columns: 3
    entities:
      - entity: sensor.livingroom_room_temperature
        name: Room
      - entity: sensor.livingroom_outside_temperature
        name: Outside
      - entity: binary_sensor.livingroom_compressor_operating
        name: Compressor

  - type: history-graph
    hours_to_show: 24
    entities:
      - sensor.livingroom_room_temperature
      - sensor.livingroom_outside_temperature
      - sensor.livingroom_od_pc_pressure

ตัวอย่างออโตเมชัน

ปิดเครื่องเมื่อบ้านเย็นสบายแล้ว โดยใช้ action แทน power เพื่อไม่ให้ทำงานขณะที่เครื่องยังทำงานอยู่:

alias: Living room off when settled
triggers:
  - trigger: state
    entity_id: climate.livingroom
    attribute: hvac_action
    to: idle
    for: "00:20:00"
conditions:
  - condition: numeric_state
    entity_id: sensor.livingroom_room_temperature
    below: 25
actions:
  - action: climate.turn_off
    target:
      entity_id: climate.livingroom
mode: single

การเฝ้าระวังข้อผิดพลาด

alias: Air conditioner fault
triggers:
  - trigger: state
    entity_id: binary_sensor.livingroom_ac_error_present
    to: "on"
actions:
  - action: notify.mobile_app_phone
    data:
      title: Air conditioner fault
      message: >-
        Error {{ states('sensor.livingroom_ac_error_code') }} on
        {{ state_attr('climate.livingroom','friendly_name') }}.
mode: single

รายการนี้คุ้มค่าที่จะตั้งไว้ รหัสข้อผิดพลาดคือรหัสเดียวกับที่ช่างเทคนิคอ่านได้จากคอนโทรลเลอร์ติดผนัง และการทราบรหัสก่อนโทรเรียกช่างช่วยประหยัดการเดินทางไปหนึ่งครั้ง

10. แพลตฟอร์มอื่น

หัวข้อชุดเดียวกันนี้ใช้ได้ทุกที่ เผยแพร่สตริงไปยัง <base>/…/set และสมัครรับ <base>/state

บรรทัดคำสั่ง mosquitto

# Watch everything for this device
mosquitto_sub -h 192.168.1.10 -u USER -P PASS -t 'ac/livingroom/#' -v

# Turn on and cool to 23
mosquitto_pub -h 192.168.1.10 -t 'ac/livingroom/power/set' -m 'ON'
mosquitto_pub -h 192.168.1.10 -t 'ac/livingroom/mode/set'  -m 'cool'
mosquitto_pub -h 192.168.1.10 -t 'ac/livingroom/temp/set'  -m '23'

# Open zone 1
mosquitto_pub -h 192.168.1.10 -t 'ac/livingroom/zone/1/set' -m 'ON'

Node-RED

ใช้โหนด MQTT in บน ac/livingroom/state โดยตั้งค่าเอาต์พุตเป็นออบเจ็กต์ JSON ที่แปลงค่าแล้ว จากนั้นอ่าน msg.payload.power, msg.payload.room_temperature เป็นต้น

หากต้องการส่ง ให้ใช้ MQTT out โดยเว้นช่องหัวข้อและเพย์โหลดไว้ว่าง เพื่อให้ค่ามาจากตัวข้อความ เพย์โหลดต้องเป็น สตริง จึงต้องแปลงตัวเลขก่อน

ตั้งค่าทั้งเครื่องในครั้งเดียว:

const base = "ac/livingroom";
return [
    { topic: base + "/power/set", payload: "ON" },
    { topic: base + "/mode/set",  payload: "cool" },
    { topic: base + "/temp/set",  payload: "24" },
    { topic: base + "/fan/set",   payload: "auto" }
];

สไลเดอร์บนแดชบอร์ดที่ควบคุมอุณหภูมิเป้าหมาย:

msg.topic = "ac/livingroom/temp/set";
msg.payload = String(msg.payload);
return msg;

เปิดเครื่องเฉพาะเมื่อขณะนี้ปิดอยู่:

const p = typeof msg.payload === 'string'
    ? JSON.parse(msg.payload)
    : msg.payload;
if (p.power !== "on") {
    return [{ topic: "ac/livingroom/power/set", payload: "ON" }];
}
return null;

การสมัครรับ ac/livingroom/availability เป็นวิธีที่ประหยัดในการทำให้แดชบอร์ดเป็นสีเทาเมื่อโมดูลหลุดการเชื่อมต่อ

openHAB

เพิ่ม Thing ของโบรกเกอร์ MQTT จากนั้นเพิ่ม Generic MQTT Thing พร้อมแชนเนลที่ชี้ไปยังหัวข้อต่าง ๆ ใช้แชนเนลชนิดสวิตช์บน ac/livingroom/power/set ที่ใช้ค่า ON/OFF แชนเนลชนิดตัวเลขบน ac/livingroom/temp/set และแชนเนลสถานะที่อ่านจาก ac/livingroom/state ด้วยการแปลงแบบ JSONPATH เช่น $.room_temperature

11. การจัดการระบบและตัวเลือก

รายการเหล่านี้อยู่ภายใต้ <base>/system/ ส่วนใหญ่จะรีบูตโมดูล จึงไม่ควรนำไปผูกกับสิ่งที่ทำงานบ่อย ๆ

system/set

เพย์โหลด ผลลัพธ์
restart รีบูตโมดูลหลังจากประมาณสามวินาที
upgrade ตรวจหาการอัปเดตเฟิร์มแวร์ผ่านอากาศทันที
factory ล้างการตั้งค่าที่บันทึกไว้ทั้งหมด รีเซ็ตกลับสู่ค่าจากโรงงาน และรีบูต

factory จะล้างการตั้งค่า WiFi และ MQTT ของท่านด้วย โมดูลจึงจะกลับมาที่เครือข่ายตั้งค่าของตัวเองและต้องกำหนดค่าใหม่ทั้งหมด ควรใช้เป็นทางเลือกสุดท้าย

ขีดจำกัดอุณหภูมิ

หัวข้อ เพย์โหลด ผลลัพธ์
system/set_min_temp 16 ถึง 32 กำหนดค่าเป้าหมายต่ำสุดที่ทุกคนเลือกได้ มีการรีบูต
system/set_max_temp 16 ถึง 32 กำหนดค่าเป้าหมายสูงสุดที่ทุกคนเลือกได้ มีการรีบูต

มีประโยชน์ในบ้านเช่าหรือสำนักงาน คือจำกัดช่วงไว้แล้วจะไม่มีใครตั้ง 16 °C ในเดือนกรกฎาคมได้

Safe Mode

system/set_safemode พร้อมค่า on หรือ off มีการรีบูต

Modbus RTU ID

system/set_modbus_rtu_id พร้อมตัวเลขตั้งแต่ 1 ถึง 254 สำหรับการติดตั้งระบบบริหารจัดการอาคารที่ใช้บิลด์ RS485 มีการรีบูต

ตัวเลือกผ่าน MQTT

system/opt/rqt รับออบเจ็กต์ JSON และให้ท่านเปลี่ยนการตั้งค่าหลายอย่างพร้อมกันได้โดยไม่ต้องใช้หน้าเว็บ:

{
  "options": {
    "homekit": "On",
    "mode": "All",
    "safemode": "Off",
    "webpanel": "On"
  }
}
คีย์ ค่า ความหมาย
homekit On, Off รองรับ Apple Home
mode All, NoHeat, NoAuto เลือกว่าจะเปิดเผยโหมดใดบ้าง NoHeat เหมาะกับการติดตั้งที่ทำความเย็นอย่างเดียว
safemode On, Off Safe Mode
webpanel On, Off หน้าเว็บในตัว

ค่าที่ระบบยอมรับจะถูกสะท้อนกลับมาบน system/opt/rps ดังนั้นโปรดสมัครรับที่นั่นเพื่อยืนยัน แทนการคาดเดา

การปิด webpanel จะตัดช่องทางที่ท่านจะกลับเข้ามาเอง ควรทำก็ต่อเมื่อท่านแน่ใจว่า MQTT ทำงานได้

system/info

เผยแพร่เป็นระยะ:

{
  "connection_state": "online",
  "safe_mode": "Off",
  "reset_reason": "Software reset via ESP_RESTART",
  "web_panel": "On",
  "free_heap": "68.45",
  "rssi": "-62",
  "bssid": "AA:BB:CC:DD:EE:FF",
  "up_time": 172800,
  "min_temp": 16,
  "max_temp": 32,
  "protocol_ver": "P1P2"
}

rssi คือค่าที่ควรเฝ้าดู หากแย่กว่าประมาณ -80 dBm ท่านควรย้ายโมดูลออกจากกล่องโลหะก่อนจะไปโทษสิ่งอื่น

12. รายการอ้างอิงเซ็นเซอร์

ทุกอย่างด้านล่างนี้ ตรวจจับโดยอัตโนมัติ หากเครื่องของท่านไม่รายงานค่าใด คีย์นั้นจะไม่ปรากฏในเพย์โหลดสถานะ และจะไม่มีการสร้างเอนทิตีใน Home Assistant รายการที่สั้นไม่ใช่ความผิดปกติ

รายการหลัก

คีย์ ชื่อ หน่วย คำอธิบาย
room_temperature Room Temperature °C อุณหภูมิอากาศภายในห้อง
outside_temperature Outside Temperature °C อุณหภูมิอากาศภายนอก จากเทอร์มิสเตอร์ภายนอกตัวที่ 1
f_intake_temp Intake Temperature °C อุณหภูมิอากาศกลับที่ชุดภายใน

เทอร์มิสเตอร์ของชุดภายใน

คีย์ ชื่อ คำอธิบาย
f_indoor_th1 Indoor TH1 ท่อน้ำยาเหลว
f_indoor_th2 Indoor TH2 ท่อแก๊ส
f_indoor_th3 Indoor TH3 แผงแลกเปลี่ยนความร้อน
f_indoor_th4 … f_indoor_th6 Indoor TH4 to TH6 ขึ้นอยู่กับรุ่น
f_return_air_temp_1f Return Air Temp 1F อุณหภูมิอากาศกลับที่ถอดรหัสแล้ว หากรองรับ
f_coil_temp_1f Coil Temp 1F อุณหภูมิคอยล์ภายในที่ถอดรหัสแล้ว หากรองรับ

เทอร์มิสเตอร์และแรงดันของชุดภายนอก

คีย์ ชื่อ หน่วย คำอธิบาย
f_outdoor_th1 Outdoor TH1 °C อากาศภายนอก
f_outdoor_th2 Outdoor TH2 °C แผงแลกเปลี่ยนความร้อนภายนอก
f_outdoor_th3 Outdoor TH3 °C ท่อจ่าย
f_outdoor_th4 Outdoor TH4 °C ท่อดูด
f_outdoor_th5, f_outdoor_th6 Outdoor TH5, TH6 °C ขึ้นอยู่กับรุ่น
f_pe_pressure OD Pe Pressure MPa แรงดันด้านต่ำ
f_pc_pressure OD Pc Pressure MPa แรงดันด้านสูง

อุณหภูมิท่อจ่ายและแรงดันทั้งสองค่ารวมกัน คือสิ่งที่ใกล้เคียงการตรวจสุขภาพชุดภายนอกแบบเรียลไทม์มากที่สุด หากท่านพล็อตกราฟตลอดหนึ่งฤดูกาล ค่าที่ผิดปกติจะโดดเด่นออกมาก่อนที่ระบบจะตัดการทำงานเป็นเวลานาน

แอกชูเอเตอร์และสถานะการทำงาน

คีย์ ชื่อ ชนิด คำอธิบาย
f_comp_operating Compressor Operating boolean คอมเพรสเซอร์ภายนอกกำลังทำงาน
f_drain_pump ID Drain Pump boolean ปั๊มระบายน้ำทิ้งของชุดภายใน
f_electric_heater ID Electric Heater boolean ฮีตเตอร์ไฟฟ้าเสริม
f_humidifier ID Humidifier boolean เครื่องเพิ่มความชื้นของชุดภายใน
f_anti_freezing ID Anti Freezing boolean การป้องกันการเกิดน้ำแข็งกำลังทำงาน
f_solenoid_valve OD Solenoid Valve boolean โซลินอยด์วาล์วของชุดภายนอก
f_active_1f Loop Active 1F boolean ตัวบ่งชี้ว่าลูปกำลังทำงาน
f_fan_step OD Fan Step step ระดับสเต็ปของพัดลมชุดภายนอก
f_ev_pulses ID EV Pulses pulse ระยะเปิดของวาล์วขยายตัวชุดภายใน
f_ev1_pulses OD EV1 Pulses pulse ระยะเปิดของวาล์วขยายตัวชุดภายนอก

ชั่วโมงการทำงานและข้อผิดพลาด

คีย์ ชื่อ หน่วย คำอธิบาย
f_id_op_hours ID Op Hours h ชั่วโมงการทำงานของชุดภายใน
f_id_fan_hours ID Fan Hours h ชั่วโมงการทำงานของพัดลมชุดภายใน
f_id_pwr_hours ID Pwr Hours h ชั่วโมงที่ชุดภายในมีไฟเลี้ยง
f_error_present AC Error Present — แฟล็กข้อผิดพลาดที่กำลังเกิดขึ้น
f_error_code AC Error Code — รหัสข้อผิดพลาดของ Daikin เช่น "A9-01", "E7-57" ว่างเปล่าเมื่อไม่มีปัญหา
f_has_error_history Has Error History — เครื่องเก็บประวัติข้อผิดพลาดไว้หรือไม่
f_indoor_model Indoor Model — สตริงรุ่นของชุดภายใน
f_outdoor_model Outdoor Model — สตริงรุ่นของชุดภายนอก

ในกรณีที่เครื่องเก็บประวัติข้อผิดพลาดไว้ แต่ละเหตุการณ์ที่บันทึกจะมีหมายเลขแถว รหัส วันที่ และหมายเลขเครื่อง:

[
  {"row": 1, "code": "A9-01", "date": "17/01/24", "unit": 0},
  {"row": 2, "code": "E7-57", "date": "10/11/23", "unit": 0},
  {"row": 3, "code": "C2-04", "date": "05/08/23", "unit": 0}
]

เทเลเมทรีของโมดูล

คีย์ ชื่อ หน่วย คำอธิบาย
up_time Up Time s นับตั้งแต่รีบูตครั้งล่าสุด
free_heap Free Heap % RAM ที่ว่าง
rssi RSSI dBm ความแรงสัญญาณ WiFi
bssi BSSI — BSSID ของแอ็กเซสพอยต์ที่เชื่อมต่ออยู่
reset_reason Reset Reason — สาเหตุที่รีสตาร์ตครั้งล่าสุด
protocol_ver Protocol Version — โปรโตคอลที่ใช้งานอยู่ คือ P1P2
min_temp, max_temp Target limits °C ขีดจำกัดค่าตั้งอุณหภูมิที่กำหนดไว้
modbus_rtu_id Modbus RTU ID — หมายเลขสเลฟที่กำหนดไว้

13. การแก้ปัญหา

ไม่มีป้าย MQTT connected บนหน้าเว็บ ตรวจสอบโฮสต์และพอร์ต จากนั้นตรวจชื่อผู้ใช้และรหัสผ่าน หากโบรกเกอร์อยู่คนละ VLAN หรือคนละซับเน็ตกับโมดูล นั่นมักเป็นสาเหตุที่แท้จริง

ป้ายแสดงว่าเชื่อมต่อแล้ว แต่ไม่มีอะไรปรากฏใน Home Assistant ยืนยันว่าการผสานรวม MQTT ของ Home Assistant ชี้ไปยังโบรกเกอร์เดียวกัน การมีโบรกเกอร์สองตัวในเครือข่ายเดียวเป็นความผิดพลาดที่พบบ่อยและทำให้สับสน จากนั้นตรวจสอบว่าเปิดใช้ discovery ในการตั้งค่าของโมดูลแล้ว

เซ็นเซอร์บางตัวหายไป เป็นเรื่องปกติ ระบบเผยแพร่เฉพาะสิ่งที่เครื่องที่เชื่อมต่ออยู่รายงานเท่านั้น และระบบสปลิตขนาดเล็กจะแสดงข้อมูลน้อยกว่า VRV มาก ไม่ใช่ความผิดปกติ

ไม่มีสวิตช์โซน โซนต้องมีคอนโทรลเลอร์ควบคุมโซนของ Daikin อยู่บนบัส P1/P2 หากไม่มี ก็ไม่มีอะไรให้ควบคุม

คำสั่งไม่ทำงาน เพย์โหลดเป็นสตริงธรรมดาและคำนึงถึงตัวพิมพ์เล็กใหญ่ตามที่ระบุไว้ คือ ON และ OFF ต้องเป็นตัวพิมพ์ใหญ่สำหรับการเปิดปิดเครื่องและโซน ส่วนชื่อโหมดต้องเป็นตัวพิมพ์เล็ก การส่งตัวเลขแทนสตริงสำหรับอุณหภูมิจะล้มเหลวในไคลเอนต์บางตัว รวมถึง Node-RED

อุณหภูมิไม่ไปยังค่าที่ต้องการ ตรวจสอบ min_temp และ max_temp ใน system/info อาจมีผู้จำกัดช่วงไว้

หลุดการเชื่อมต่อบ่อย ดูค่า rssi ใน system/info ประมาณ -80 dBm หรือแย่กว่านั้นถือว่าก้ำกึ่ง ให้ย้ายโมดูลออกมานอกกล่องโลหะ

เครื่องเปิดอยู่แต่ไม่มีอะไรเกิดขึ้น ดูที่ action และ f_comp_operating หาก action เป็น idle แสดงว่าถึงอุณหภูมิที่ตั้งไว้แล้ว หากคอมเพรสเซอร์ไม่เคยทำงานและ f_error_present เป็น true ให้อ่านค่า f_error_code แล้วแจ้งรหัสนั้นแก่ช่างผู้ติดตั้งของท่าน

ทุกอย่างหยุดทำงานหลังเปลี่ยนการตั้งค่า การเปลี่ยนชื่อ Topic หรือ Friendly Name จะเปลี่ยนชื่อทุกหัวข้อ ออโตเมชันของท่านยังชี้ไปยังหัวข้อเดิมอยู่

14. สรุปอ้างอิงฉบับย่อ

หัวข้อฐานคือ ac/livingroom โปรดแทนที่ด้วยของท่าน

การอ่าน (สมัครรับ)

หัวข้อ เนื้อหา
ac/livingroom/state สถานะ JSON แบบเต็ม
ac/livingroom/availability online / offline
ac/livingroom/system/info เทเลเมทรีของโมดูลในรูป JSON
ac/livingroom/system/opt/rps การสะท้อนกลับของตัวเลือกที่ยอมรับแล้ว

การควบคุม (เผยแพร่)

หัวข้อ เพย์โหลด
ac/livingroom/power/set ON, OFF
ac/livingroom/mode/set heat, cool, dry, fan_only, off
ac/livingroom/temp/set 16 ถึง 32
ac/livingroom/fan/set low, medium, high, auto, low_auto, medium_auto, high_auto
ac/livingroom/vane/set 1 ถึง 5, swing
ac/livingroom/zone/1/set … zone/8/set ON, OFF

ระบบ (เผยแพร่)

หัวข้อ เพย์โหลด
ac/livingroom/system/set restart, upgrade, factory
ac/livingroom/system/set_safemode on, off
ac/livingroom/system/set_min_temp 16 ถึง 32
ac/livingroom/system/set_max_temp 16 ถึง 32
ac/livingroom/system/set_modbus_rtu_id 1 ถึง 254
ac/livingroom/system/opt/rqt {"options":{"homekit":"On","mode":"All"}}

คีย์ที่ควรเฝ้าดู

คีย์ เหตุผล
action สิ่งที่เครื่องกำลังทำอยู่จริง ไม่ใช่สิ่งที่ท่านสั่ง
room_temperature อุณหภูมิห้องจริง
f_comp_operating คอมเพรสเซอร์กำลังทำงานหรือไม่
f_error_present, f_error_code ข้อผิดพลาด ในรูปรหัสของ Daikin เอง
rssi ระยะเผื่อสัญญาณ WiFi ใน system/info

แหล่งข้อมูล: เอกสารโปรโตคอล MQTT ของ Faikin Ninja P1P2 พฤติกรรมที่อธิบายไว้ตรงกับเฟิร์มแวร์ ณ เดือนสิงหาคม 2026 หน้าเว็บของโมดูลท่านเองและค่า system/info ที่เผยแพร่ออกมา ถือเป็นข้อมูลที่ถูกต้องสำหรับเวอร์ชันที่ท่านติดตั้งอยู่ ความพร้อมใช้งานของเซ็นเซอร์แตกต่างกันไปตามชุดภายในและชุดภายนอก