BLYNK_WRITE(Vx)
ใช้เมื่อ: แอป/เซิร์ฟเวอร์ → ส่งข้อมูล → เข้าอุปกรณ์ (ESP32/ESP8266)
เกิดขึ้นเมื่อ Widget เช่น Text Input, Button, Slider, Menu, Terminal ส่งค่ามา
ตัวอย่าง:
BLYNK_WRITE(V100) // รับค่า server จากแอป
{
String newServer = param.asString();
if (newServer.length() > 0) {
newServer.toCharArray(configblynk, STRING_LEN);
Blynk.virtualWrite(V100, newServer);
}
}
แปลว่า: เมื่อผู้ใช้ป้อนข้อความที่ Widget V100 → โค้ดนี้ทำงานทันที
BLYNK_READ(Vx)
ใช้เมื่อ: แอปเรียกขอข้อมูลจากอุปกรณ์ → อุปกรณ์ตอบกลับ
Widget ที่ผูกกับ Virtual pin นี้ต้องตั้งค่า “Reading Rate” เอาไว้ (เช่น 1 วินาที, 5 วินาที, 1 นาที)
ตัวอย่าง:
BLYNK_READ(V36) // แอปเป็นคนเรียก
{
float dailyConsumption = energy - dailyStartEnergy;
Blynk.virtualWrite(V36, dailyConsumption); // ส่งกลับไปแอป
}
แปลว่า: แอป/Widget มาขอดึงข้อมูล → จากนั้นอุปกรณ์คำนวณแล้วส่งกลับด้วย virtualWrite
Blynk.virtualWrite(Vx, value) (ไม่มี BLYNK_READ/WRITE)
คือการ “ส่งข้อมูลออกจากบอร์ดไปยังแอปเอง” ไม่ต้องรอให้ widget มาขอ
ใช้ใน loop, timer, event, interrupt ได้เลย
ตัวอย่าง:
timer.setInterval(2000L, sendEnergy);
void sendEnergy(){
float dailyConsumption = energy - dailyStartEnergy;
Blynk.virtualWrite(V36, dailyConsumption); // push data อัตโนมัติ
}
เปรียบเทียบแบบเห็นภาพ
โครงสร้าง ทิศทางข้อมูล ใครเริ่มก่อน เหมาะกับ
BLYNK_WRITE(Vx) แอป ➜ บอร์ด แอปส่งให้ก่อน รับค่าจากผู้ใช้ เช่น ปุ่ม, ตั้งค่า
BLYNK_READ(Vx) แอป ⟵ บอร์ด แอปเรียกก่อน Widget ขอข้อมูลมาแสดง
Blynk.virtualWrite(Vx, …) บอร์ด ➜ แอป บอร์ดส่งเอง รายงาน sensor, ค่าแจ้งเตือน, timer