คู่มือ MQTT

Faikin Australia

Faikin Faikout — คู่มือ MQTT

การควบคุมและติดตามการทำงานของ Faikin Faikout ผ่าน MQTT ตั้งแต่การตั้งค่าครั้งแรกไปจนถึงข้อมูลอ้างอิงทั้งหมดเกี่ยวกับ topic คำสั่ง และการตั้งค่า

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

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

คู่มือนี้ครอบคลุมโมดูล WiFi Faikout ที่ทำงานด้วยเฟิร์มแวร์ของ RevK (อุปกรณ์นี้ใช้ชื่อแบรนด์ว่า Faikout ท่านอาจยังเห็นชื่อเดิมว่า Faikin อยู่บ้าง) คู่มือนี้ใช้ได้กับยูนิตทั้งแบบ S21, X50A และ CN_WIRED เนื่องจากเฟิร์มแวร์จะตรวจหาโปรโตคอลให้โดยอัตโนมัติ ตลอดทั้งเอกสาร ชื่อโฮสต์ตัวอย่างคือ GuestAC และ IP ของโบรกเกอร์ตัวอย่างคือ 192.168.1.10 โปรดเปลี่ยนทั้งสองค่าให้เป็นของท่านเอง

1. สิ่งที่ MQTT มอบให้ท่าน

ทุกอย่างทำงานภายในเครือข่ายของท่าน Faikout ใช้ MQTT บนเครือข่ายของท่านเอง โดยไม่ต้องมีบัญชีคลาวด์และไม่ต้องพึ่งพาอินเทอร์เน็ต ผ่าน MQTT ท่านสามารถ:

  • ควบคุมยูนิต: เปิด/ปิด โหมด อุณหภูมิที่ตั้งไว้ ความเร็วพัดลม การแกว่งของบานเกล็ด powerful/econo
  • อ่านข้อมูลการทำงานแบบสดที่รีโมตอินฟราเรดไม่แสดง: อุณหภูมิห้อง คอยล์/น้ำยา อากาศที่ดูดเข้า และอุณหภูมิภายนอก รวมถึงรุ่นและสถานะการทำงาน
  • ขับเคลื่อนชั้นการทำงาน Faikout Auto: ช่วงอุณหภูมิเป้าหมาย ตารางเวลา และค่าอ้างอิงอุณหภูมิจากภายนอก
  • เชื่อมต่อกับ Home Assistant (การค้นหาอัตโนมัติในตัว), openHAB, Node-RED, Domoticz, ioBroker และสิ่งอื่นใดก็ตามที่รองรับ MQTT

การควบคุมผ่าน MQTT ทำงานควบคู่ไปกับเว็บอินเทอร์เฟซในตัวและรีโมตอินฟราเรด การเปลี่ยนแปลงจากแหล่งใดก็ตามจะปรากฏในทุกที่ภายในไม่กี่วินาที

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

ท่านจำเป็นต้องมี:

  • อุปกรณ์ Faikout ที่ติดตั้งแล้วและเชื่อมต่อกับ WiFi 2.4GHz ของท่านเรียบร้อยแล้ว (ดูคู่มือการตั้งค่า) ท่านสามารถเข้าถึงได้ที่ GuestAC.local ในเบราว์เซอร์
  • โบรกเกอร์ MQTT บนเครือข่ายเดียวกัน ตัวเลือกที่นิยมคือ Mosquitto add-on ภายใน Home Assistant หรือ Mosquitto แบบติดตั้งแยกบน Raspberry Pi, NAS หรือเซิร์ฟเวอร์
  • ที่อยู่ IP หรือชื่อโฮสต์ ของโบรกเกอร์ และชื่อผู้ใช้กับรหัสผ่าน หากโบรกเกอร์ต้องการการยืนยันตัวตน (โบรกเกอร์ของ Home Assistant โดยปกติจะต้องการ)

ควรเก็บโบรกเกอร์ไว้บนเครือข่ายที่ท่านควบคุมได้ MQTT ของ Faikout เป็นการรับส่งข้อมูลภายในแบบธรรมดาและไม่ได้ออกแบบมาให้เปิดเผยสู่อินเทอร์เน็ต

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

  1. เข้าไปที่ GuestAC.local และเปิด WiFi settings (หรือกดปุ่มตั้งค่าของอุปกรณ์ค้างไว้ จากนั้นเชื่อมต่อกับจุดเข้าถึง Daikin/Faikout ของอุปกรณ์หากยังไม่ได้เชื่อมต่อกับ WiFi ของท่าน)
  2. ในส่วน MQTT ให้กรอก Host (IP หรือชื่อโฮสต์ของโบรกเกอร์ เช่น 192.168.1.10) และหากโบรกเกอร์ของท่านใช้ ก็กรอก Username และ Password ด้วย
  3. ตรวจสอบให้แน่ใจว่าได้ตั้ง Hostname เป็นชื่อที่จดจำได้ เช่น GuestAC ชื่อนี้จะกลายเป็นส่วนหนึ่งของทุก topic ใน MQTT ดังนั้นควรเลือกชื่อก่อนสร้างระบบอัตโนมัติ
  4. บันทึก Faikout จะเชื่อมต่อใหม่และเริ่มเผยแพร่ข้อมูล

การตั้งค่าการเชื่อมต่อพื้นฐานคือ mqtthost (มาตรฐานไลบรารีของ RevK) ชื่อผู้ใช้และรหัสผ่านจะกรอกในหน้าเดียวกัน ท่านยังสามารถเปลี่ยนค่าเหล่านี้ในภายหลังผ่าน MQTT ได้เองเมื่อเชื่อมต่อแล้ว (ดูข้อมูลอ้างอิงการตั้งค่า)

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

สมัครรับ (subscribe) ทุกอย่างสำหรับอุปกรณ์นั้น และเฝ้าดูสถานะที่ถูกเก็บไว้ (retained):

mosquitto_sub -h 192.168.1.10 -u USER -P PASS -t 'state/GuestAC/#' -v

ท่านควรเห็นข้อความ state/GuestAC แบบ retained เพย์โหลดของข้อความนั้นจะรายงาน online เป็น true เมื่อเครื่องปรับอากาศกำลังสื่อสารกับโมดูล ส่วน topic state/GuestAC เปล่า ๆ คือสถานะการมีอยู่ของอุปกรณ์เอง: เพย์โหลดเป็น false หมายความว่าตัว Faikout เองออฟไลน์ (นี่คือข้อความ will/birth ของ MQTT)

หากไม่มีอะไรปรากฏขึ้น ให้ข้ามไปยังส่วนการแก้ไขปัญหา

5. โครงสร้างของ topic

Faikout ใช้โครงสร้าง topic มาตรฐานของไลบรารี RevK: prefix/hostname/suffix เมื่อชื่อโฮสต์เป็น GuestAC:

ประเภท Topic ความหมาย
คำสั่ง command/GuestAC/<command> สั่งให้อุปกรณ์ทำบางสิ่งทันที (เช่น เปิดเครื่อง ตั้งโหมด)
การตั้งค่า (JSON) setting/GuestAC เพย์โหลดเป็น JSON ของการตั้งค่าหนึ่งรายการหรือมากกว่า เช่น {"reporting":60} เพย์โหลดเปล่าจะทำให้อุปกรณ์เผยแพร่การตั้งค่าปัจจุบันกลับมา
การตั้งค่า (เดี่ยว) setting/GuestAC/<name> ตั้งค่าหนึ่งรายการ เพย์โหลดเป็นค่าเปล่า ๆ เช่น topic setting/GuestAC/reporting เพย์โหลด 30
สถานะ state/GuestAC/<aspect> สถานะแบบ retained เผยแพร่เป็นระยะและเมื่อมีการเปลี่ยนแปลง state/GuestAC ที่ไม่มี suffix คือสถานะของตัวอุปกรณ์เอง (false = ออฟไลน์)
เหตุการณ์ event/GuestAC/<x> สิ่งที่เกิดขึ้นแบบครั้งเดียว ไม่ถูกเก็บไว้ (not retained)
ข้อมูล info/GuestAC/<x> ข้อความให้ข้อมูลที่ไม่ผูกกับเหตุการณ์ใดเหตุการณ์หนึ่ง
ข้อผิดพลาด error/GuestAC/<x> ข้อผิดพลาดจะถูกรายงานที่นี่

สำหรับการทำระบบอัตโนมัติส่วนใหญ่ ท่านต้องการเพียงสองอย่างนี้: เผยแพร่ไปยัง command/GuestAC/control และสมัครรับ state/GuestAC

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

เผยแพร่ไปยัง command/GuestAC/<command> คำสั่งทั่วไปไม่ต้องมีเพย์โหลด ส่วนบางคำสั่งรับอาร์กิวเมนต์เป็นเพย์โหลด

คำสั่ง เพย์โหลด ผลลัพธ์
on / off ไม่มี เปิดหรือปิดเครื่อง
heat cool auto fan dry ไม่มี เปลี่ยนโหมด
low medium high ไม่มี เปลี่ยนความเร็วพัดลม
temp ตัวเลข ตั้งอุณหภูมิเป้าหมาย เช่น เพย์โหลด 21
status ไม่มี บังคับให้รายงานสถานะทันที
control JSON ตั้งค่าการควบคุมหลายอย่างพร้อมกัน (ดูส่วนถัดไป)
send สตริง / อาร์เรย์ ขั้นสูง: บังคับส่งข้อความโปรโตคอลดิบ เช่น S21 D62000 รับเป็นสตริง JSON หรืออาร์เรย์ JSON ของสตริง ไบต์ที่มีบิตสูง (0x80 ถึง 0xFF) จะเขียนเป็น JSON unicode escape ใช้สำหรับการดีบักโปรโตคอลเท่านั้น

ตัวอย่าง:

# Power on
mosquitto_pub -h 192.168.1.10 -t 'command/GuestAC/on' -n

# Switch to cooling
mosquitto_pub -h 192.168.1.10 -t 'command/GuestAC/cool' -n

# Set target to 21 C
mosquitto_pub -h 192.168.1.10 -t 'command/GuestAC/temp' -m '21'

7. ข้อความ control (ตัวหลัก)

command/GuestAC/control รับเพย์โหลด JSON และเป็นวิธีที่เรียบร้อยที่สุดในการตั้งค่าหลายอย่างพร้อมกัน ชื่อฟิลด์เดียวกันนี้ปรากฏในสถานะ JSON ด้วย ดังนั้นสิ่งที่ท่านส่งจึงสะท้อนสิ่งที่ท่านอ่าน

ฟิลด์ ชนิด ความหมาย
power boolean เปิด / ปิด
mode H C A D F Heat, Cool, Auto, Dry, Fan
temp number อุณหภูมิเป้าหมายเป็น °C
fan A Q 15 Auto, Quiet/Night หรือระดับที่ตั้งเอง 1 ถึง 5
swingv boolean การแกว่งบานเกล็ดแนวตั้ง
swingh boolean การแกว่งบานเกล็ดแนวนอน
powerful boolean โหมด powerful/turbo boost (หากยูนิตรองรับ)
econo boolean โหมดประหยัด (หากรองรับ)
streamer boolean streamer/การฟอกอากาศ (หากรองรับ)
target number หรือ [min,max] อุณหภูมิเป้าหมายค่าเดียว หรือ อาร์เรย์ min/max ที่มีสององค์ประกอบ อาร์เรย์จะบังคับให้เข้าโหมด Faikout Auto
env number ค่าอ้างอิงอุณหภูมิห้องจากภายนอกที่ Faikout Auto ใช้

ตัวอย่าง: ทำความเย็นที่ 24°C ด้วยพัดลมอัตโนมัติ เปิดการแกว่งแนวตั้ง:

mosquitto_pub -h 192.168.1.10 -t 'command/GuestAC/control' \
  -m '{"power":true,"mode":"C","temp":24,"fan":"A","swingv":true}'

หมายเหตุ: powerful, econo, streamer และฟังก์ชันเสริมอื่น ๆ ที่คล้ายกันขึ้นอยู่กับรุ่น S21 เป็นการวิศวกรรมย้อนกลับและไม่เหมือนกันทุกยูนิต ดังนั้นสวิตช์ที่ยูนิตของท่านไม่มีก็จะถูกเพิกเฉยไป สถานะ JSON จะบอกท่านว่ายูนิตของท่านเปิดเผยการควบคุมใดได้จริง

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

Faikout เผยแพร่สถานะไปยัง topic สามตระกูล:

  • state/GuestAC คือสถานะสำหรับมนุษย์/ระบบอัตโนมัติ เผยแพร่ทุก ๆ reporting วินาที (ค่าเริ่มต้น 60) และเมื่อมีการเปลี่ยนแปลงที่สำคัญ ตั้ง livestatus เป็นเปิดเพื่อเผยแพร่ทุกการเปลี่ยนแปลงแบบเรียลไทม์ด้วย
  • Faikout/... เผยแพร่ประมาณนาทีละครั้ง และมีไว้สำหรับเครื่องมือ faikoutlog เพื่อจัดเก็บลงในฐานข้อมูล MySQL/MariaDB สำหรับการทำกราฟ
  • <MAC>/... คือฟีดการค้นหาอัตโนมัติของ Home Assistant เผยแพร่เมื่อเปิดใช้งานการรองรับ HA (ดูส่วนที่ 9)

สถานะ JSON ของ state รวมทุกอย่างจากตาราง control ด้านบน (ดังนั้นท่านสามารถอ่านค่ากลับมาได้ ทั้ง power, mode, temp, fan เป็นต้น) บวกกับฟิลด์แบบอ่านอย่างเดียวเหล่านี้:

ฟิลด์ ความหมาย
online เครื่องปรับอากาศเชื่อมต่อและตอบสนองอยู่
heat ขณะนี้อยู่ในสถานะทำความร้อน
slave เราไม่ได้เป็นตัวหลัก (master) สำหรับ heat/cool ดังนั้นโหมดที่ร้องขอไม่สามารถนำมาใช้ได้
antifreeze อยู่ในโหมดป้องกันการแข็งตัว จึงไม่ได้ทำงานตามปกติ
model ชื่อรุ่น หากทราบ
home อุณหภูมิห้อง (ค่าอ้างอิงจากรีโมตหรือที่วัดได้)
outside อุณหภูมิภายนอก หากยูนิตรายงาน
inlet อุณหภูมิอากาศที่ดูดเข้า (return air) หากทราบ
liquid อุณหภูมิน้ำยาทำความเย็นที่ป้อนเข้า หากทราบ
control เราอยู่ภายใต้การควบคุมจากภายนอก/อัตโนมัติ

รูปแบบการบันทึกฐานข้อมูล: ในฟีด Faikout/ แต่ละค่าจะถูกสรุปตลอดช่วงเวลานั้น หากค่าไม่เปลี่ยนแปลงก็จะรายงานเป็นค่าเดียว หากเปลี่ยนแปลง ค่าตัวเลขจะกลายเป็นอาร์เรย์ [min, average, max] และค่า boolean จะกลายเป็นเศษส่วน 0.01.0 ของสัดส่วนที่ค่าเป็นจริงในช่วงเวลานั้น ตั้ง fixstatus เป็นเปิดเพื่อใช้รูปแบบอาร์เรย์/เศษส่วนเสมอ ไม่ว่ากรณีใด

9. Home Assistant ผ่าน MQTT

Faikout มีการค้นหาอัตโนมัติของ Home Assistant ในตัว และเปิดใช้งานเป็นค่าเริ่มต้น (การตั้งค่า haenable ค่าเริ่มต้นเปิด) เมื่อโมดูลสื่อสารกับโบรกเกอร์ตัวเดียวกับ Home Assistant แล้ว เอนทิตี climate จะปรากฏขึ้นเอง

การตั้งค่า:

  1. เรียกใช้โบรกเกอร์ MQTT ที่ Home Assistant ใช้ วิธีที่ง่ายที่สุดคือ Mosquitto broker add-on ใน Home Assistant OS พร้อมกับเพิ่ม MQTT integration
  2. สร้าง ผู้ใช้ MQTT ใน Home Assistant สำหรับอุปกรณ์ (ผู้ใช้ HA ทั่วไปใช้งานได้กับ Mosquitto add-on)
  3. ในหน้าตั้งค่าของ Faikout ให้ตั้ง MQTT host เป็น IP ของ Home Assistant และกรอกชื่อผู้ใช้และรหัสผ่านนั้น
  4. ภายในหนึ่งนาที Home Assistant จะค้นพบอุปกรณ์ (เผยแพร่ภายใต้ topic <MAC>/...) และเพิ่มการ์ด climate โดยไม่ต้องใช้ YAML

การตั้งค่าที่เกี่ยวกับ HA ที่มีประโยชน์ (ตั้งผ่าน MQTT หรือหน้าเว็บ Advanced):

การตั้งค่า ค่าเริ่มต้น ผล
haenable เปิด การค้นหาอัตโนมัติของ Home Assistant (เฟิร์มแวร์รุ่นเก่าเรียกว่า ha)
haswitches ปิด เปิดเผยสวิตช์เพิ่มเติม (เช่น powerful, econo) เป็นเอนทิตี HA แยกต่างหาก
ha1c ปิด บังคับให้ปรับทีละ 1°C ในการควบคุมอุณหภูมิของ HA
hafanrpm ปิด รายงานความเร็วพัดลมเป็น RPM แทน Hz
hacomprpm ปิด รายงานความเร็วคอมเพรสเซอร์เป็น RPM แทน Hz
hadomain local โดเมนภายในที่ใช้สำหรับลิงก์ HA เว้นว่างเพื่อใช้ IP
nohvacaction ปิด หยุดรายงาน hvac_action สำหรับ Faikout Auto ใน HA
nohomepreset ปิด ไม่ใส่รายการ "home" ในรายการพรีเซ็ตของ HA

YAML สำหรับแดชบอร์ดและการ์ดเอนทิตี

ท่านไม่จำเป็นต้องใช้ YAML เพื่อสร้างเอนทิตี การค้นหาอัตโนมัติจะสร้างเอนทิตี climate พร้อมกับเซนเซอร์อุณหภูมิให้เอง YAML ด้านล่างมีไว้สำหรับการจัดวางบนแดชบอร์ด Lovelace

รหัสเอนทิตีมาจากชื่อโฮสต์ ดังนั้นอุปกรณ์ชื่อ GuestAC จะให้ climate.guestac และเซนเซอร์อย่างเช่น sensor.guestac_temperature ส่วน slug ที่แน่นอนจะแตกต่างกันไปตามเวอร์ชันเฟิร์มแวร์และการตั้งค่าชื่อของ HA ของท่าน ดังนั้นให้ยืนยันได้ที่ Settings → Devices & Services → MQTT → (อุปกรณ์ของท่าน) หรือ Developer Tools → States และปรับรหัสด้านล่างให้ตรงกัน

การ์ดเอนทิตี เพิ่มการ์ดลงในแดชบอร์ดใด ๆ ด้วย Add card → Manual แล้ววาง:

type: entities
title: Guest AC
show_header_toggle: false
entities:
  - entity: climate.guestac          # adjust IDs to match your install
    name: Air conditioner
  - type: section
    label: Live temperatures
  - entity: sensor.guestac_temperature
    name: Room
  - entity: sensor.guestac_outside_temperature
    name: Outside
  - entity: sensor.guestac_inlet_temperature
    name: Inlet
  - entity: sensor.guestac_liquid_temperature
    name: Liquid / coil

มุมมองแดชบอร์ดแบบเต็ม เปิดแดชบอร์ด Edit → (จุดสามจุด) → Raw configuration editor แล้วเพิ่มสิ่งนี้เป็นมุมมองใหม่ภายใต้ views::

title: Climate
path: climate
icon: mdi:air-conditioner
cards:
  - type: thermostat
    entity: climate.guestac          # adjust IDs to match your install

  - type: entities
    title: Guest AC
    entities:
      - entity: climate.guestac
        name: Controls
      - type: section
        label: Live temperatures
      - entity: sensor.guestac_temperature
        name: Room
      - entity: sensor.guestac_outside_temperature
        name: Outside
      - entity: sensor.guestac_inlet_temperature
        name: Inlet
      - entity: sensor.guestac_liquid_temperature
        name: Liquid / coil

  - type: history-graph
    title: Temperatures (24 h)
    hours_to_show: 24
    entities:
      - sensor.guestac_temperature
      - sensor.guestac_outside_temperature

หากท่านต้องการสร้างการ์ดเดียวแบบกราฟิกมากกว่า การ์ด "Climate" ของ Mushroom และการ์ด Thermostat ในตัว ต่างก็ผูกเข้ากับ climate.guestac ได้โดยตรง

ทางเลือกที่ง่ายกว่า ไม่ใช้ MQTT Faikout ยังจำลอง API ภายในของ Daikin เอง และตอบสนองการค้นหา UDP แบบ BRP-compatible (การตั้งค่า udpdiscovery) หากท่านไม่ต้องการเรียกใช้โบรกเกอร์ MQTT ท่านสามารถเพิ่ม Daikin integration ในตัวของ Home Assistant แทน แล้วชี้ไปยังที่อยู่ IP ของ Faikout สำหรับผู้ใช้ที่ไม่เชี่ยวชาญด้านเทคนิค นี่เป็นเส้นทางเข้าสู่ HA ที่ยุ่งยากน้อยที่สุด ส่วนเส้นทาง MQTT ควรเก็บไว้ใช้เมื่อท่านต้องการฟีเจอร์ที่ Daikin integration ไม่เปิดเผย หรือเมื่อท่านกำลังเชื่อมต่อกับสิ่งอื่นที่ไม่ใช่ HA

Apple Home / Alexa / Google สิ่งเหล่านี้ไม่ได้สื่อสาร MQTT โดยตรง แต่บริดจ์จะช่วยปิดช่องว่างนั้น Home Assistant ทำหน้าที่บริดจ์ทั้งสามตัว สำหรับครัวเรือนที่ใช้ Apple อย่างเดียวโดยไม่มี HA นั้น Homebridge พร้อมปลั๊กอิน MQTT (เช่น EasyMQTT) จะนำ Faikout เข้าสู่แอป Home บน iOS และ Siri ที่มีในตัว วิธีนี้เป็นที่นิยมใช้กันแต่เป็นเซิร์ฟเวอร์ที่ต้องตั้งค่าและดูแลเอง จึงควรเตรียมพร้อมสำหรับการตั้งค่าบ้าง

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

สอง topic เดิม (command/GuestAC/control สำหรับเขียน, state/GuestAC สำหรับอ่าน) ใช้งานได้ทุกที่

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

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

# Ask the device to report its current settings (empty payload)
mosquitto_pub -h 192.168.1.10 -t 'setting/GuestAC' -n

# Change one setting
mosquitto_pub -h 192.168.1.10 -t 'setting/GuestAC/reporting' -m '30'

# Full control
mosquitto_pub -h 192.168.1.10 -t 'command/GuestAC/control' \
  -m '{"power":true,"mode":"H","temp":21,"fan":2}'

Node-RED

  • เพื่อควบคุม: ใช้ node mqtt out ที่มี topic command/GuestAC/control ป้อน msg.payload ที่เป็นอ็อบเจกต์ JSON (ใช้ node template หรือ function หรือ node change ที่ตั้งเพย์โหลดเป็นค่า JSON)
  • เพื่อติดตาม: ใช้ node mqtt in บน state/GuestAC จากนั้นใช้ node json เพื่อแปลงเป็นอ็อบเจกต์ที่ท่านสามารถนำไปจัดเส้นทางได้ (เช่น payload.home, payload.power)

openHAB

ใช้ MQTT binding ทั่วไป สร้าง MQTT Thing สำหรับโบรกเกอร์ จากนั้นสร้างช่องสัญญาณ (channels) เช่น:

  • ช่อง Switch ที่มี commandTopic = command/GuestAC/control โดยจัดรูปแบบค่าเป็น {"power":%s}
  • ช่อง Number ที่มี stateTopic = state/GuestAC และการแปลง JSONPATH อย่างเช่น $.home เพื่ออ่านอุณหภูมิห้อง

รูปแบบเดียวกันนี้ (เผยแพร่ JSON ไปยัง command/.../control แปลง JSON จาก state/...) นำไปใช้กับ Domoticz, ioBroker, Jeedom, FHEM, Homey, Hubitat และ Gladys ได้

11. Faikout Auto ผ่าน MQTT

Faikout Auto เป็นชั้นการควบคุมเพิ่มเติมที่รักษาช่วงอุณหภูมิเป้าหมายไว้ โดยปรับยูนิตไปมาระหว่าง heat/cool/off และอาจเลือกใช้เซนเซอร์อุณหภูมิภายนอกแทนเซนเซอร์ของเครื่องปรับอากาศเองก็ได้ ท่านสามารถขับเคลื่อนได้สามวิธี: จากเว็บ UI จากเซนเซอร์ BLE หรือผ่าน MQTT เส้นทาง MQTT มีดังต่อไปนี้

A. ส่งค่าที่อ่านได้จากระบบอัตโนมัติของท่านเอง

ส่งข้อความ control ที่มี env (และอาจมี target ด้วย) จากนั้นยูนิตจะถือว่าตัวเองอยู่ภายใต้การควบคุมจากระยะไกล:

mosquitto_pub -h 192.168.1.10 -t 'command/GuestAC/control' \
  -m '{"env":22.4,"target":[20,22]}'
  • env คืออุณหภูมิห้องปัจจุบันจากเซนเซอร์ของท่าน ต้องส่งซ้ำในทุกข้อความควบคุม และอย่างน้อยทุก ๆ tcontrol วินาที (ค่าเริ่มต้น 600) หากหมดเวลา ยูนิตจะกลับออกจากโหมดควบคุมระยะไกล/อัตโนมัติ
  • target ในรูปอาร์เรย์ [min,max] (หรือตัวเลขเดียวพร้อม margin) จะบังคับให้เข้าโหมด Faikout Auto และกำหนดช่วงความสบาย

B. ให้ Faikout สมัครรับ topic ของเซนเซอร์

แทนที่จะส่งค่าไป ให้บอก Faikout ติดตาม topic MQTT ที่มีอยู่แล้ว:

การตั้งค่า ความหมาย
autotopic topic MQTT ที่จะสมัครรับเพื่อใช้เป็นอุณหภูมิอ้างอิง
autopayload ชื่อฟิลด์ภายในเพย์โหลด JSON ของ topic นั้นที่เก็บค่าอุณหภูมิ

สำคัญ: เพย์โหลดบน autotopic ต้องเป็น JSON ที่มีฟิลด์ตามชื่อที่ระบุ topic ที่เผยแพร่ตัวเลขเปล่า ๆ (เช่น topic สถานะ ESPHome ธรรมดา) จะไม่สามารถแปลงค่าได้ ให้ห่อด้วย JSON หรือใช้เส้นทาง A

C. ติดตามเซนเซอร์ภายนอกแต่ให้เปิด/ปิดเป็นแบบเอง

คำขอที่พบบ่อย: ควบคุมตามค่าที่อ่านได้จากภายนอกที่แม่นยำ แต่ไม่ให้ยูนิตเปิดหรือปิดตัวเอง ข้อควรระวังคือการส่ง env ทำให้ยูนิตเข้าสู่สถานะ "ระยะไกล" และเมื่ออยู่ในสถานะระยะไกล จะถือว่าใช้กำลังไฟอัตโนมัติหาก autoptemp ไม่เป็นศูนย์ (ค่าเริ่มต้น 0.5) ดังนั้น:

  • ตั้ง autop ปิด และ autoptemp 0 (หยุดการเปิด/ปิดกำลังไฟอัตโนมัติ)
  • คง tempadjust ไว้ที่ เปิด (นี่คือสิ่งที่ทำให้ยูนิตเล็งไปที่ค่าอ้างอิงของท่านจริง ๆ โดยปรับอุณหภูมิที่ตั้งไว้ตาม reference - measured)
  • อย่าส่งอาร์เรย์ target (อาร์เรย์จะบังคับให้เกิดพฤติกรรมช่วง/กำลังไฟแบบ Auto เต็มรูปแบบ) ส่งเพียง {"env": 22.4} เท่านั้น
mosquitto_pub -h 192.168.1.10 -t 'setting/GuestAC' -m '{"autop":false,"autoptemp":0}'
mosquitto_pub -h 192.168.1.10 -t 'command/GuestAC/control' -m '{"env":22.4}'

การควบคุมโหมด auto ที่ท่านส่งในข้อความ control ได้ด้วย

สิ่งเหล่านี้สะท้อนการตั้งค่าและจะถูกรายงานกลับในสถานะเมื่อไม่ได้อยู่ภายใต้การควบคุมระยะไกล:

ฟิลด์ ความหมาย
autor ส่วนเผื่อ auto ทั้งสองด้านของเป้าหมาย 0.0 หมายถึงปิด
autot อุณหภูมิเป้าหมายของ auto
autob รหัสเซนเซอร์ BLE ที่ใช้เป็นค่าอ้างอิง
auto0 เวลาปิดเครื่อง HH:MM 00:00 หมายถึงไม่ปิด
auto1 เวลาเปิดเครื่อง HH:MM 00:00 หมายถึงไม่เปิด

12. ข้อมูลอ้างอิงการตั้งค่า

การตั้งค่าอ่านและเขียนผ่าน MQTT ได้สองรูปแบบ:

  • ทั้งหมดพร้อมกัน / อ่านกลับ: เผยแพร่ JSON ไปยัง setting/GuestAC เช่น {"reporting":30,"livestatus":true} เพย์โหลดเปล่าจะทำให้อุปกรณ์เผยแพร่การตั้งค่าปัจจุบัน
  • ทีละรายการ: เผยแพร่ค่าเปล่า ๆ ไปยัง setting/GuestAC/<name> เช่น topic setting/GuestAC/livestatus เพย์โหลด true

ชื่อด้านล่างคือชื่อแบบ MQTT (หน้าเว็บ Advanced จัดกลุ่มไว้ แต่ผ่าน MQTT จะเขียนเป็นคำเดียว) นี่เป็นชุดย่อยที่ใช้งานได้ การ dump การตั้งค่าของอุปกรณ์เอง (ส่งเพย์โหลดเปล่าไปยัง setting/GuestAC) คือรายการที่ถือเป็นทางการสำหรับเฟิร์มแวร์ของท่าน

การเชื่อมต่อและการรายงาน

การตั้งค่า ค่าเริ่มต้น ความหมาย
hostname ชื่ออุปกรณ์ ใช้เป็นคำนำหน้า topic และที่อยู่ .local
mqtthost โฮสต์หรือ IP ของโบรกเกอร์ MQTT (พร้อมฟิลด์ชื่อผู้ใช้/รหัสผ่านในหน้าตั้งค่า)
reporting 60 ช่วงเวลาการรายงานสถานะเป็นวินาที
livestatus ปิด เผยแพร่ state/ ในทุกการเปลี่ยนแปลงแบบเรียลไทม์
fixstatus ปิด ใช้รูปแบบ min/ave/max (และ 0.0–1.0) ในการบันทึกเสมอ
otaauto เปิด อัปเดตเฟิร์มแวร์อัตโนมัติ (ราว ๆ สัปดาห์ละครั้ง ต้องใช้อินเทอร์เน็ต)
webcontrol เปิด เปิดใช้งานหน้าควบคุมผ่านเว็บ
websettings เปิด เปิดใช้งานหน้าตั้งค่าผ่านเว็บ

Home Assistant

ดูส่วนที่ 9: haenable, haswitches, ha1c, hafanrpm, hacomprpm, hadomain, udpdiscovery, nohvacaction, nohomepreset

Faikout Auto

การตั้งค่า ค่าเริ่มต้น ความหมาย
autoe เปิด เปิดใช้งานการทำงานตามเวลาและกำลังไฟแบบอัตโนมัติ
autop ปิด เปิดใช้งานการเปิด/ปิดกำลังไฟอัตโนมัติ
autoptemp 0.5 เปิด/ปิดกำลังไฟเมื่ออุณหภูมิเบี่ยงเบนจากช่วงมากเท่านี้
autot อุณหภูมิเป้าหมายของ auto
autor ส่วนเผื่อ auto ทั้งสองด้านของ autot (0 = ปิด)
autob รหัสเซนเซอร์ BLE สำหรับค่าอ้างอิง
auto0 / auto1 00:00 เวลาปิด / เปิดตามตารางที่กำหนด (HHMM) เท่ากันหรือ 00:00 จะปิดการใช้งาน
autofmax 5 ระดับพัดลมสูงสุดเมื่อเริ่มต้นห่างจากเป้าหมายมาก
autolcontrol ปิด สลับ LED ตามการกระทำ HVAC ปัจจุบัน
autotopic topic ที่จะติดตามเพื่อใช้เป็นอุณหภูมิอ้างอิง
autopayload ชื่อฟิลด์ JSON ใน topic นั้นสำหรับอุณหภูมิอ้างอิง
tempadjust เปิด ปรับอุณหภูมิที่ตั้งไว้ตามความต่างระหว่างเซนเซอร์ของ Daikin กับค่าอ้างอิงของท่าน
temptrack ปิด อ้างอิงอุณหภูมิที่ตั้งไว้จากอุณหภูมิที่ Daikin วัดได้ แทนเป้าหมายที่ร้องขอ
tempnoflap 0 จำนวนวินาทีขั้นต่ำระหว่างการเปลี่ยนอุณหภูมิเป้าหมาย
thermostat ปิด โหมดเทอร์โมสตัทอย่างง่าย: ทำความร้อนจนถึงสูงสุด แล้วปล่อยให้ลดลงถึงต่ำสุด (hysteresis)
tcontrol 600 เวลาหมดอายุ (วินาที) ของข้อความ env/control ก่อนกลับออกจากโหมดระยะไกล
tmin / tmax 16 / 32 อุณหภูมิที่ตั้งได้ต่ำสุด / สูงสุดของระบบ
thermref 50 เปอร์เซ็นต์ของอุณหภูมิที่ดูดเข้า (เทียบกับอุณหภูมิห้อง) ที่ยูนิตของท่านใช้เป็นค่าอ้างอิง

การปรับแต่งละเอียดของพฤติกรรมการคาดการณ์และช่วงอุณหภูมิ (pushtemp, switchtemp, coolover, coolback, heatover, heatback, tpredicts, tpredictt, tsample, tcoolmin, theatmax, frosttemp, minoutside) มีบันทึกไว้ในคู่มือ Advanced และไม่ค่อยจำเป็นต้องเปลี่ยน

การลบล้างความสามารถ

หากเฟิร์มแวร์เสนอการควบคุมที่ยูนิตของท่านไม่มีจริง (หรือในทางกลับกัน) การตั้งค่า no... จะบอกว่าให้ซ่อนอะไร เช่น nopowerful, noecono, nostreamer, noswingv, noswingh, noquiet, nodemand, nofaikoutauto ส่วนการตั้งค่าบังคับโปรโตคอล nos21, nox50a, nocnwired จะหยุดไม่ให้พยายามใช้โปรโตคอลนั้นหากการตรวจหาอัตโนมัติเลือกผิด

ดีบัก

การตั้งค่า ความหมาย
debug ดีบักแบบละเอียด สำหรับ S21 จะแสดงบรรทัดสรุปการตอบสนองการ poll หนึ่งบรรทัด (poll ฟิลด์มากขึ้นด้วย จึงช้าลง)
dump ส่งออกการสื่อสารแบบ serial ดิบบน MQTT
snoop โหมดฟังอย่างเดียวสำหรับการวิเคราะห์โปรโตคอล

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

ไม่มีอะไรปรากฏบน MQTT / อุปกรณ์แสดงออฟไลน์ ตรวจสอบ topic state/GuestAC เปล่า ๆ: false หมายความว่าตัว Faikout เองไม่ได้เชื่อมต่อกับโบรกเกอร์ จากนั้นตรวจสอบว่า IP/ชื่อโฮสต์ของโบรกเกอร์ในการตั้งค่าเข้าถึงได้ ชื่อผู้ใช้และรหัสผ่าน MQTT ถูกต้อง โบรกเกอร์กำลังรับฟังอยู่ (โดยปกติพอร์ต 1883 บน LAN) และโมดูลอยู่บน WiFi 2.4GHz ของท่าน (ไม่ใช้ 5GHz) ยืนยันว่า GuestAC.local โหลดได้ในเบราว์เซอร์เพื่อพิสูจน์ว่า WiFi ปกติดี จากนั้นปัญหาจะอยู่ที่ข้อมูลรับรอง MQTT หรือการเข้าถึงโบรกเกอร์

ยูนิตเปิดตัวเองอยู่เรื่อย ๆ การส่ง env ในข้อความ control ทำให้ยูนิตอยู่ภายใต้การควบคุมระยะไกล และเมื่ออยู่ในสถานะระยะไกล จะถือว่าใช้กำลังไฟอัตโนมัติหาก autoptemp ไม่เป็นศูนย์ (ค่าเริ่มต้น 0.5) หากต้องการให้เปิด/ปิดเป็นแบบเอง ให้ตั้ง autop ปิด และ autoptemp 0 คง tempadjust ไว้ที่เปิด และส่งเพียง {"env": ...} โดยไม่มีอาร์เรย์ target ดูส่วนที่ 11C

Faikout หลุดออกจากโหมด Auto หลังผ่านไปสักพัก ข้อความ env/control จะหมดเวลาหลังจาก tcontrol วินาที (ค่าเริ่มต้น 600) ให้ส่ง env ซ้ำในทุกข้อความควบคุมและตามตารางเวลาที่สั้นกว่าเวลาหมดอายุ

autotopic ไม่ทำงาน topic ที่สมัครรับต้องมี JSON ที่มีฟิลด์ตามชื่อที่ระบุใน autopayload เพย์โหลดที่เป็นตัวเลขเปล่าจะไม่สามารถแปลงค่าได้ ให้เผยแพร่เป็น JSON หรือส่งค่าด้วยตัวท่านเองด้วยข้อความควบคุม env (ส่วนที่ 11A)

Home Assistant ไม่แสดงอุปกรณ์ haenable ต้องเปิด (ค่าเริ่มต้นเปิด) ต้องติดตั้ง HA MQTT integration พร้อมเปิดใช้งานการค้นหา และอุปกรณ์ต้องอยู่บนโบรกเกอร์เดียวกับ HA ยืนยันว่ามีข้อความการค้นหาเข้ามาโดยสมัครรับ <MAC>/# (ที่อยู่ MAC ของโมดูล) หากท่านไม่ต้องการใช้ MQTT เลย ให้ใช้ Daikin integration ในตัวพร้อม IP ของ Faikout แทน

สถานะดูเก่า ข้อความ state/ เป็นแบบ retained ดังนั้นไคลเอนต์จึงสามารถแสดงค่าล่าสุดได้หลังจากรีสตาร์ต หากท่านเห็นข้อมูลเก่าจริง ๆ ให้ล้างข้อความ retained บน topic นั้น และเปิด livestatus เพื่ออัปเดตทันทีเมื่อมีการเปลี่ยนแปลง

การควบคุมบางอย่างไม่ทำงาน S21 เป็นการวิศวกรรมย้อนกลับและแตกต่างกันตามรุ่น powerful, econo, demand และที่คล้ายกันอาจไม่มีในยูนิตของท่านและจะถูกเพิกเฉยไป สถานะ JSON จะแสดงว่ายูนิตของท่านเปิดเผยการควบคุมใดได้จริง

14. ตารางสรุปอ้างอิงอย่างย่อ

เปลี่ยน GuestAC เป็นชื่อโฮสต์ของท่าน และ 192.168.1.10 เป็นโบรกเกอร์ของท่าน

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

Topic สิ่งที่ท่านได้รับ
state/GuestAC สถานะ JSON แบบ retained: power, mode, temp, home, outside, online, ...
state/GuestAC เพย์โหลด false หมายความว่าตัว Faikout เองออฟไลน์
setting/GuestAC เผยแพร่เพย์โหลดเปล่าแล้วอุปกรณ์จะตอบกลับด้วยการตั้งค่าปัจจุบัน

คำสั่ง (เผยแพร่ไปยัง command/GuestAC/...)

Topic เพย์โหลด
command/GuestAC/on, command/GuestAC/off ไม่มี
command/GuestAC/heat cool auto fan dry ไม่มี
command/GuestAC/low medium high ไม่มี
command/GuestAC/temp 21
command/GuestAC/status ไม่มี (บังคับให้รายงานสถานะ)
command/GuestAC/control JSON (ดูด้านล่าง)

เพย์โหลด control

{"power":true,"mode":"C","temp":24,"fan":"A","swingv":true}
ฟิลด์ ค่า
power true / false
mode H C A D F (heat, cool, auto, dry, fan)
temp ตัวเลข, °C
fan A Q 15 (auto, quiet, ระดับที่ตั้งเอง)
swingv swingh powerful econo streamer true / false
target ตัวเลข หรือ [min,max] (อาร์เรย์จะบังคับให้เข้า Faikout Auto)
env ตัวเลข (ค่าอ้างอิงภายนอกสำหรับ Faikout Auto)

การตั้งค่า (เผยแพร่ไปยัง setting/GuestAC...)

Topic เพย์โหลด
setting/GuestAC {"reporting":30,"livestatus":true} (หลายรายการพร้อมกัน)
setting/GuestAC/reporting 30 (ทีละรายการ)

เซนเซอร์ภายนอก ให้เปิด/ปิดเป็นแบบเอง

Topic เพย์โหลด
setting/GuestAC {"autop":false,"autoptemp":0}
command/GuestAC/control {"env":22.4} — ส่งซ้ำภายใน tcontrol (600 วินาที)

แหล่งที่มา: เฟิร์มแวร์และคู่มือ RevK ESP32-Faikout (README, Setup, Controls, Advanced) และ ESP/main/settings.def บน Codeberg (codeberg.org/RevK/ESP32-Faikout) พฤติกรรมที่อธิบายไว้ตรงกับเฟิร์มแวร์ ณ เดือนมิถุนายน 2026 การ dump การตั้งค่าของอุปกรณ์เองคือข้อมูลที่ถือเป็นทางการสำหรับเวอร์ชันที่ท่านติดตั้ง