คอนโทรล Event
บทความนี้จะเป็นการคอนโทรล Event สำหรับ emit ฟังก์ชั่นบนบอร์ด เช่น ต้องการให้กดปุ่มแล้ว เปิดไฟ LED เริ่มจับเวลา ให้เริ่มอ่านค่าเซนเซอร์ หรืออะไรก็ได้ตามที่ต้องการ
หน้า Dashboard
เลือก edit และเลือก yes

จากนั้น add widget ใหม่ เลือกเป็น Control ซึ่งจะแบ่งเป็น Control และ Event Control


จากนั้นจะมี control widget ใหม่ ให้เลือก Add or Edit

จากนั้นเพิ่มชื่อ Event ที่ต้องการที่ Add Event ด้านล่าง ซึ่งชื่อ Event สามารถตั้งชื่ออะไรก็ได้ เป็นภาษาอังกฤษเท่านั้น แนะนำใช้คำสั้นๆ ในตัวอย่างนี้ใช้ชื่อ Event ว่า "led" ซึ่งเมื่อกดแล้วจะไปสั่ง led บนบอร์ด esp32 s2 mini ผ่านโค้ดอีกที แล้วกด + แล้วกด OK

จากนั้นจะมี Event ชื่อ "led" สามารถเลือกโหมดได้
- switch จะมีค่า HIGH กับ LOW ซึ่งค่าที่รับบนบอร์ดจะเป็นเลข 1 และ 0
- slide จะมีค่าเป็นเลขจำนวนเต็ม สามารถเลือกค่า min และ max ได้

เมื่อตั้งค่าเสร็จแล้ว ให้กด save
โค้ดบนบอร์ด
สามารถดูโค้ดชื่อ event ได้ที่ไลบรารี่ เมื่อมีการควบคุม Event จะมีฟังก์ชั่น callback ที่จะรับค่า Event ซึ่งในตัวอย่างจะอยู่ที่ฟังก์ชั่น handleEvent(String event, String value) ซึ่งคล้ายกับ BLYNK_WRITE(V1) ของ Blynk นั่นเอง แต่จะแยกด้วยชื่อ Event ที่อิสระกว่า
Cynoiot iot;
void setup()
{
iot.setEventCallback(handleEvent);
}
void handleEvent(String event, String value)
{
Serial.println("Event: " + event);
Serial.println("Value: " + value);
if (event == "led") // led event
{
ledState = value.toInt(); // แปลงค่า value เป็น int แล้วเก็บไว้ใน ledState
digitalWrite(LED, ledState); // เปิด/ปิด LED จากค่า value
}
// ถ้ามีหลาย event ให้เพิ่ม else if ตามต้องการได้เลย
}
อัพเดทค่าจากบอร์ดไปยัง CynoIoT
กรณีที่ได้เปลี่ยนค่า Event ในโค้ด arduino ide แล้ว เช่น กดเปิดไฟ LED ผ่านหน้าเว็บ หลังจากนั้นในโค้ดมีการให้สั่งปิด LED ให้ใช้ฟังก์ชั่น eventUpdate(Event name, Event value); เพื่ออัพเดทค่าขึ้นหน้าเว็บด้วยว่า LED ตอนนี้มีสถานะอะไรอยู่
#define LED D4
Cynoiot iot;
ledState = !digitalRead(LED); // สลับสถานะ LED
digitalWrite(LED, ledState); // เปิด/ปิด LED
iot.eventUpdate("led", ledState); // อัพเดท Event ไปยัง server
// "led" คือ ชื่อ Event
// ledState คือ สถานะเป็นเลขจำนวนเต็มตามที่ตั้งบนหน้าเว็บ
สามารถดูตัวอย่างได้จากตัวอย่าง event จากตัวอย่างในไลบรารี่