Introduction
รอบตัวเรามีระบบมากมายในบ้านที่ช่วยควบคุมและจัดการสภาพแวดล้อม ตั้งแต่ระบบทำความร้อน การตรวจสอบอุณหภูมิ ไปจนถึงการจัดการไฟ และอื่นๆ ระบบพวกนี้แหละที่ทำให้ชีวิตเราง่ายขึ้น
ถึงแม้ว่าเราจะควบคุมระบบส่วนใหญ่ผ่านแอพบน PC หรือมือถือได้ แต่ระบบพวกนี้มักจะถูกล็อกไว้ และบางทีการมีแอพหลายตัวก็ไม่สะดวกเอาเสียเลย นั่นแหละคือจุดที่แพลตฟอร์มแบบบูรณาการเข้ามาช่วย โดยเป็นศูนย์กลางสำหรับแดชบอร์ดที่เราปรับแต่งเองทั้งหมด
แต่ที่สำคัญกว่านั้น บางครั้งเราก็อยากรวมข้อมูลจากแอพพลิเคชั่นต่างๆ เพื่อไปกระตุ้นการทำงานของระบบอื่นๆ และถ้าน้องเป็นคนชอบเล่น Arduino แบบพี่ล่ะก็ น้องคงอยากจะบูรณาการทุกอย่างเข้ากับโปรเจค Arduino ของน้องแน่ๆ
Arduino Cloud เป็นทางออกที่เจ๋งมากสำหรับเรื่องนี้ แต่การเชื่อมต่อกับแพลตฟอร์มภายนอกอาจจะยุ่งยากนิดนึง โดยเฉพาะกับผลิตภัณฑ์เชิงพาณิชย์หลายตัวที่ขาดการเชื่อมต่อโดยตรง นั่นแหละคือจุดที่ Node-RED มาช่วยเราได้! มันช่วยเราเปลี่ยนเส้นทางและจัดการการสื่อสารระหว่างผลิตภัณฑ์พาณิชย์พวกนั้นกับ Arduino Cloud
โปรเจคนี้เป็นส่วนหนึ่งของซีรี่ส์ที่พี่สร้างขึ้นเพื่อโชว์วิธีจัดการระบบในบ้านของพี่ด้วยการเชื่อมต่อเข้ากับ Arduino Cloud นอกจากโปรเจคนี้แล้ว พี่ยังทำการเชื่อมต่อสวิตช์ TP Link และมิเตอร์พลังงาน Tuya อีกด้วย น้องๆ ไปดูได้นะ!
มาเดินทางสู่ระบบอัตโนมัติในบ้านที่ราบรื่นและสนุกมากขึ้นด้วย Arduino Cloud และ Node-RED กันเถอะ!
Arduino Cloud คืออะไร?
Arduino Cloud เป็นแพลตฟอร์มที่ทำให้กระบวนการพัฒนา, ปล่อยใช้งาน, และจัดการอุปกรณ์ IoT ง่ายขึ้น มันรองรับฮาร์ดแวร์หลากหลาย รวมถึงบอร์ด Arduino, ESP32 และบอร์ดที่ใช้ ESP8266 ทำให้ผู้สร้างสรรค์, คนรัก IoT และมืออาชีพสามารถสร้างโปรเจคที่เชื่อมต่อกันได้โดยไม่ต้องมีความเชี่ยวชาญด้านโค้ด
เครื่องมือ IoT Cloud ของแพลตฟอร์มช่วยให้จัดการและตรวจสอบอุปกรณ์ที่เชื่อมต่อได้ง่ายผ่านแดชบอร์ดที่ปรับแต่งได้ ซึ่งแสดงภาพข้อมูลของอุปกรณ์แบบเรียลไทม์ แดชบอร์ดสามารถเข้าถึงจากระยะไกลผ่านแอพมือถือ Arduino IoT Cloud Remote ที่มีให้ทั้งบน Android และ iOS ทำให้ผู้ใช้จัดการอุปกรณ์ของพวกเขาได้จากที่ไหนก็ได้
Node-RED คืออะไร?
Node-RED เป็นเครื่องมือการเขียนโปรแกรมแบบ visual แบบโอเพ่นซอร์ส ออกแบบมาเพื่อเชื่อมต่อและทำให้อุปกรณ์, บริการ และ API ทำงานอัตโนมัติ มันมีตัวแก้ไขโฟลว์บนเบราว์เซอร์ที่ให้ผู้ใช้สร้างโฟลว์โดยการลากและวางโหนดลงบนแคนวาสแล้วเชื่อมต่อเข้าด้วยกัน แต่ละโหนดแสดงถึงฟังก์ชันการทำงานหรือบริการเฉพาะ เช่น การรับ/ส่งข้อมูล, การแปลงข้อมูล, หรือการสื่อสารกับระบบภายนอก ด้วยอินเทอร์เฟซที่ใช้งานง่ายและไลบรารีโหนดสำเร็จรูปที่หลากหลาย Node-RED ทำให้ผู้ใช้สร้างเวิร์กโฟลว์ที่ซับซ้อนได้อย่างรวดเร็วและง่ายดายโดยไม่ต้องเขียนโค้ดแบบดั้งเดิม มันได้รับความนิยมเป็นพิเศษในโดเมน Internet of Things (IoT) ซึ่งช่วยให้การบูรณาการเซ็นเซอร์, อุปกรณ์ และบริการคลาวด์ต่างๆ ง่ายขึ้น ทำให้ผู้ใช้สามารถสร้างแอปพลิเคชัน IoT และระบบอัตโนมัติที่ทรงพลังได้
Honeywell Evohome คืออะไร?
Honeywell Evohome เป็นระบบทำความร้อนอัจฉริยะสำหรับบ้านที่ให้การควบคุมแต่ละห้องเพื่อความสบายและประสิทธิภาพการใช้พลังงานสูงสุด ประกอบด้วยหน่วยควบคุมกลาง, ตัวควบคุมหม้อน้ำไร้สาย และแอพมือถือสำหรับควบคุมระยะไกล Evohome อนุญาตให้ผู้ใช้สร้างตารางการทำความร้อนที่ปรับแต่งเองสำหรับแต่ละห้องหรือโซนในบ้าน ทำให้สามารถควบคุมอุณหภูมิได้อย่างแม่นยำและลดการสูญเสียพลังงาน ระบบใช้การสื่อสารไร้สายเพื่อสื่อสารกับตัวควบคุมหม้อน้ำ ทำให้มีความยืดหยุ่นในการติดตั้งและการควบคุม ด้วยฟีเจอร์เช่น geofencing และการเรียนรู้แบบปรับตัว Evohome จะปรับการตั้งค่าการทำความร้อนอย่างชาญฉลาดตามการมีอยู่ของคนและความชอบของผู้ใช้ สุดท้ายแล้วก็เป็นโซลูชันการทำความร้อนที่สะดวกและคุ้มค่าให้กับเจ้าของบ้าน
สิ่งที่ต้องมีก่อนเริ่มงาน
น้องต้องเตรียม:
- ระบบฮีตติ้ง Honeywell Evohome
- บัญชี Arduino Cloud (https://cloud.arduino.cc)
- Node-RED ที่ติดตั้งและรันอยู่ (จะรันบนเครื่องตัวเองหรือบน Cloud ก็ได้) เรื่องการติดตั้ง Node-RED น้องไปหาอ่านเพิ่มเติมได้เองนะ
สิ่งที่ไม่ต้องมี:
- บอร์ด Arduino, ESP32 หรือ ESP8266 ใดๆ เลย (จัดไปวัยรุ่น งานนี้ใช้ Cloud ล้วนๆ)
ขั้นตอนการทำงาน
1. ไปขอข้อมูลเชื่อมต่อ (credentials) จาก Honeywell getconnected มา
2. สร้าง Device กับ Thing ใน Arduino Cloud
3. สร้าง Flow ใน Node-RED
4. สร้าง Dashboard ใน Arduino Cloud
5. ทดสอบทุกอย่างให้เรียบร้อย
1. ขอข้อมูลเชื่อมต่อจาก Honeywell getconnected
ขั้นตอนตรงไปตรงมามาก น้องแค่ต้องสร้างบัญชี developer ของ Honeywellhome แล้วสร้างแอปพลิเคชันขึ้นมา
1. ไปที่ https://developer.honeywellhome.com
2. สมัครสมาชิก (ถ้ายังไม่มีบัญชี)
3. ล็อกอินเข้าไป แล้วไปที่แท็บ "MY APPS"
4. คลิกที่ "CREATE NEW APP"
5. ตั้งชื่อแอป ("App Name")
6. ใส่ callback URL
หมายเหตุ: ถ้าไม่มี URL จริงๆ ใช้ http://localhost ไปก่อนก็ได้
7. เก็บค่า key กับ secret ไว้ให้ดี เราจะใช้มันในขั้นตอนต่อไป
เอกสารเต็มๆ จาก Honeywell อยู่ที่นี่
2. สร้าง Device ใน Arduino Cloud
สร้าง Device
ไปที่ส่วน Devices ของ Arduino IoT Cloud แล้วคลิก ADD
เลือก "Any Device" แล้วทำตามขั้นตอนในตัวช่วยสร้าง (wizard) ไปเลย
หมายเหตุ: เก็บค่า Device ID กับ Secret Key ไว้ให้ดี ถึงเราจะไม่ใช้มันในโปรเจคนี้ (เพราะจะใช้ API key แทน) แต่มันอาจมีประโยชน์ในงานอื่นๆ นะ
สร้าง Thing
ในรายการ Devices ให้หา device ที่พึ่งสร้าง แล้วคลิก "CREATE THING" แล้วตั้งชื่อให้มัน
สร้าง Variables
สำคัญมาก: การตั้งค่า EvoHome ของแต่ละคนไม่เหมือนกัน บางคนอาจมีเซ็นเซอร์วัดอุณหภูมิหลายตัว, ตั้งค่าจุดเป้าหมาย (set point) หลายจุด, การกระทำต่างๆ ฯลฯ ดังนั้น น้องต้องปรับคำแนะนำต่อไปนี้ให้เข้ากับระบบของตัวเองนะ
ในกรณีของพี่ มี 2 โซน แต่ละโซนมีวาล์วไฟฟ้าควบคุมโดยเทอร์โมสตัท โซนมีชื่อว่า: 'salon' และ 'arriba'
แต่ละโซนมี:
- อุณหภูมิปัจจุบัน
- อุณหภูมิจุดตั้งเป้า (set point)
สำหรับ set point เราจะต้องใช้ตัวแปรสองตัว ตัวแรกจะเก็บข้อมูลที่อ่านมาจากแพลตฟอร์ม (<zone>_target) ตัวที่สองคือ set point ที่เราสามารถกำหนดค่าได้ (<zone>_set_point)
เพิ่มตัวแปรโดยคลิกปุ่ม ADD พอทำเสร็จ รายการตัวแปรของน้องควรหน้าตาประมาณนี้

ขอ Arduino Cloud API key
ไปที่ https://cloud.arduino.cc/home/api-keys
คลิก "CREATE API KEY" แล้วตั้งชื่อให้มัน
จด Client ID กับ Client Secret ไว้ให้ดี หรือดาวน์โหลดไฟล์ PDF เก็บไว้ เราจะใช้ข้อมูลนี้ใน Node-RED node
3. สร้าง Flow ใน Node-RED
เข้าไปยัง Node-RED instance ของน้อง (ปกติคือ `http://<YOUR_IP>:1880`) แล้วนำเข้าโค้ด:
1. เลือก `Import` ในเมนู
a. วางโค้ดที่หาได้จากไฟล์ flows.json ในโปรเจค github นี้
b. คลิก `Import`
2. ตั้งค่า EvoHome nodes โดยใช้ Honeywell API key ที่น้องสร้างไว้ก่อนหน้า
3. ตั้งค่า Arduino Cloud nodes
a. ตั้งค่าการเชื่อมต่อกับ Arduino Cloud โดยใช้ API key ที่สร้างไว้ในขั้นตอนก่อนหน้า
b. ใส่ข้อมูล Thing และ property ของน้องลงไป

4. คลิกที่ Deploy (มุมขวาบนของหน้าจอ) จัดไปวัยรุ่น!
รายละเอียดเทคนิคแบบจัดเต็ม
ระบบทำความร้อน EvoHome จาก Honeywell นี่มันระบบระดับพรีเมียมราคาแพงหูฉี่ ที่ล็อกผู้ใช้ให้ติดอยู่ในระบบแอปของตัวเองเป๊ะๆ โปรเจคนี้แหละที่จะปลดโซ่ตรวนนั้น! โดยใช้ Node-RED เป็นสะพานเชื่อม เราจะสามารถเข้าถึง Web API ลับๆ ของ EvoHome ได้ แยกเอาอุณหภูมิของทุกๆ ห้องในบ้านเราออกมาได้อย่างแม่นยำ แล้วส่งข้อมูลเหล่านั้นขึ้นไปยัง Arduino IoT Cloud อันทรงพลังเพื่อสร้างแดชบอร์ดแบบที่เราอยากได้!
การยืนยันตัวตนและดึงข้อมูลจาก API
EvoHome ไม่ได้เปิดพอร์ตแบบง่ายๆ อย่าง `192.168.x.x` ให้เราเล่นหรอกนะ ข้อมูลทั้งหมดอยู่บนเซิร์ฟเวอร์คลาวด์ของ Honeywell ต่างหาก กระบวนการที่ Node-RED จัดการมีดังนี้:
- ทำการ Handshake แบบ HTTPS TLS กับเซิร์ฟเวอร์ยืนยันตัวตนของ Honeywell
- ส่งคำขอ `POST` ที่ซับซ้อน พร้อมกับ Client ID และ Secret ของแอปพลิเคชันเราในรูปแบบ JSON payload ที่ปลอดภัย เพื่อขอรับ `access_token` มา
- เมื่อได้โทเค็นมาแล้ว ก็ส่งคำขอ `GET` เพื่อดึงข้อมูล JSON array ขนาดใหญ่ที่ซ้อนกันอยู่ ซึ่งมีสถานะของวาล์วเครื่องทำความร้อน โซน และจุดตั้งค่าทุกจุดในบ้าน
โหนดใน Node-RED อย่าง `http request` และ `json` จะถูกตั้งค่าให้จัดการขั้นตอนการยืนยันตัวตนและแยกวิเคราะห์ข้อมูลตอบกลับที่ซับซ้อนนั้น เพื่อดึงข้อมูลสำคัญ (เช่น `livingRoomTemp` และ `setpointTemp`) ออกมาแล้วส่งต่อไปยัง Arduino Cloud
การเชื่อมต่อไปยัง Arduino IoT Cloud
เมื่อดึงข้อมูลจาก Honeywell สำเร็จแล้ว ข้อมูลจะถูกส่งเข้าไปยัง Arduino Cloud ผ่านโหนดอย่างเป็นทางการของ Node-RED โหนดนี้จะใช้คีย์ API (Client ID และ Secret) ของ Arduino Cloud ที่เราสร้างไว้ก่อนหน้า เพื่อสร้างการเชื่อมต่อที่ปลอดภัย มันจะทำการจับคู่ข้อมูลจาก EvoHome (เช่น อุณหภูมิปัจจุบัน, จุดตั้งค่าเป้าหมาย) กับตัวแปรที่ตรงกันใน Arduino Cloud Thing ของเรา จากนั้นโหนดก็จะส่งข้อมูลอัพเดตเหล่านั้นผ่าน API ของ Cloud ทำให้แดชบอร์ดกราฟิกบนสมาร์ทโฟนของเราอัพเดตแบบเรียลไทม์ทั่วโลกเลยทีเดียว สู้งานนะน้อง!
สิ่งที่ต้องมี
- Node-RED: ต้องรันอยู่บนเครื่องในเครือข่าย (เช่น Raspberry Pi) หรือบนเซิร์ฟเวอร์คลาวด์
- ระบบ Honeywell EvoHome ที่ใช้งานอยู่ พร้อมเปิดใช้งาน Connected Gateway และมีข้อมูลสำหรับเชื่อมต่อ API
- บัญชี Arduino IoT Cloud (แผนฟรีก็เพียงพอสำหรับติดตามไม่กี่จุดแล้ว แต่ถ้าอยากติดตามเครื่องทำความร้อนเป็นสิบๆ จุดพร้อมกัน แผน Maker น่าจะเหมาะกว่า)
4. สร้างแดชบอร์ดบน Arduino Cloud
ไปที่ส่วน Dashboards แล้วคลิก CREATE
จะสร้าง Widget แบบไหนก็ตามใจชอบเลย นี่เป็นตัวอย่างจากของพี่ ให้ดูเป็นไอเดียนะ:

5. มาทดสอบระบบกัน
แค่นี้แหละจบ!
ถึงเวลาที่จะไปที่แดชบอร์ด Arduino Cloud ของเราแล้ว ดูการเปลี่ยนแปลงของอุณหภูมิ และทำสิ่งที่เราตั้งใจไว้ได้เลย ห้ามช็อตนะตัวนี้!
ทิ้งท้าย
ถ้ามีปัญหา
ให้เช็ค Log ดูว่าโหนดต่างๆ ทำงานปกติมั้ย
