คอนโทรล Event
บทความนี้จะสอนการใช้ Event Control เพื่อสั่งงานฟังก์ชันบนบอร์ด เช่น กดปุ่มแล้วเปิดไฟ LED, เริ่มจับเวลา หรืออ่านค่าเซนเซอร์
1. การตั้งค่าบน Dashboard 🖥️
กดปุ่ม Edit (มุมขวาบน) > เลือก Yes

edit dashboard กด Add Widget > เลือก Control


เลือก Add or Edit ที่ Widget ใหม่ที่เพิ่มขึ้นมา

add or edit ที่ส่วน Add Event (ด้านล่าง) ให้ตั้งชื่อ Event เป็นภาษาอังกฤษ (เช่น
led) แล้วกดปุ่ม + > กด OK
select event จะมีรายการ Event ชื่อ
ledปรากฏขึ้นมา ให้กดปุ่ม Edit ✏️
set event ตั้งค่ารายละเอียดดังนี้:
- Event: ชื่อ Event ที่ต้องตรงกับในโค้ด (เช่น
led) - ชื่อ: ชื่อที่แสดงบน Dashboard (เช่น
ไฟ) - โหมด: เลือกรูปแบบการควบคุม
- Switch: เปิด/ปิด (ส่งค่า
1หรือ0) - Slide: เลื่อนปรับค่า (จำนวนเต็ม Min-Max)
- Select Button: ตัวเลือกปุ่มกด
- Timer: ส่งค่าเวลา
- Switch: เปิด/ปิด (ส่งค่า
- ค่าปัจจุบัน: แสดงสถานะปัจจุบัน
- คำแนะนำ: ข้อความอธิบายเพิ่มเติม
เมื่อเสร็จแล้วกด บันทึกการตั้งค่า

set event - Event: ชื่อ Event ที่ต้องตรงกับในโค้ด (เช่น
กด Save เพื่อบันทึก Dashboard
save dashboard
2. การเขียนโค้ด (Arduino IDE) 💻
เมื่อมีการสั่งงานผ่าน Event บอร์ดจะเรียกใช้ฟังก์ชัน handleEvent(String event, String value) (คล้ายกับ BLYNK_WRITE ของ Blynk แต่ยืดหยุ่นกว่าด้วยชื่อ Event)
Cynoiot iot;
void setup()
{
// กำหนดฟังก์ชันสำหรับรับค่า Event
iot.setEventCallback(handleEvent);
}
void handleEvent(String event, String value)
{
Serial.println("Event: " + event);
Serial.println("Value: " + value);
// ตรวจสอบชื่อ Event
if (event == "led")
{
int ledState = value.toInt(); // แปลงค่าเป็นตัวเลข
digitalWrite(LED, ledState); // สั่งงาน LED
}
// เพิ่ม else if สำหรับ Event อื่นๆ ได้ตามต้องการ
}3. การอัปเดตสถานะกลับไปยัง Server ☁️
หากมีการเปลี่ยนแปลงสถานะจากฝั่งบอร์ด (เช่น กดปุ่มจริง) และต้องการให้หน้าเว็บแสดงสถานะล่าสุด ให้ใช้คำสั่ง eventUpdate(Event name, Event value)
#define LED D4
Cynoiot iot;
// ตัวอย่าง: สลับสถานะ LED และส่งค่ากลับ
int ledState = !digitalRead(LED);
digitalWrite(LED, ledState);
// อัปเดตสถานะกลับไปยัง Server
iot.eventUpdate("led", String(ledState));Tip: สามารถดูตัวอย่างโค้ดฉบับเต็มได้ที่เมนู Examples ของไลบรารี Cynoiot