หน้าแรกคู่มือIoTส่งข้อมูลเข้า Google Sheets ด้วย IoT HMI
IoTปานกลาง · Intermediate20 นาที

ส่งข้อมูลเข้า Google Sheets ด้วย IoT HMI

ให้ HMI Samkoon ส่งข้อมูลจาก PLC ขึ้น Google Sheets โดยตรงด้วย HTTP POST และ JSON ผ่าน Google Apps Script แบบ Web App ทำ Data Logging อัตโนมัติโดยไม่ต้องใช้ USB Drive

HMI ที่ต่อ Internet ได้ส่งข้อมูลจาก PLC เป็น JSON ด้วย HTTP POST ไปที่ Google Apps Script ซึ่ง Deploy เป็น Web App แล้วสคริปต์จะต่อแถวใหม่ลง Google Sheets พร้อมเวลาบันทึก — ในคลิปส่งสถานะ Y0 กับค่า D5 ทุกครั้งที่กดปุ่มที่ผูกกับ LB0

อัพเดทล่าสุด: 26 ตุลาคม 2569

ชุดอุปกรณ์สำหรับการทำระบบ Google Sheets

ราคาชุดอุปกรณ์

฿8,740

ทำไมต้องส่งข้อมูลขึ้น Google Sheets

การทำ Data Logging บน HMI แบบเดิมคือ HMI ดึงข้อมูลจาก PLC เก็บไว้ แล้วให้พนักงานเอา USB Thumb Drive มาเสียบดึงไฟล์ Excel หรือ CSV ไปเก็บที่คอมพิวเตอร์หรือ Server วิธีนี้ใช้ได้ แต่ต้องมีคนมาทำทุกวัน

HMI รุ่นใหม่ที่รองรับ HTTP และต่อ Internet ได้ สามารถส่งข้อมูลที่สนใจไปที่ Google Sheets ได้โดยตรง ไม่ต้องพึ่งการเสียบ USB Drive เลย

อุปกรณ์ในคลิป

  • HMI SK-070QE-G + WiFi Module
  • PLC FAT-16MT-DC-E (HMI สื่อสารกับ PLC ผ่าน COM2)

ผลลัพธ์ที่ได้: กดปุ่มบน HMI แล้วจะมีแถวใหม่ใน Google Sheets ประกอบด้วยสถานะเครื่องจักร จำนวนชิ้นงาน และเวลาที่บันทึก

1. โปรแกรม PLC

ในตัวอย่างสนใจข้อมูล 2 อย่าง

  • Y0 — สถานะเครื่องจักร (ติด = ทำงาน ดับ = ไม่ได้ทำงาน) คุมด้วย M0 ที่เป็น Coil ช่วยไปสั่ง Y0
  • D5 — ค่าตัวเลขแทนจำนวนชิ้นงาน ในคลิปจำลองด้วยคำสั่ง TRD D0 (ใช้ M8151 ให้ทำงานตลอด) ซึ่งเขียนวันเวลาจาก RTC ลง D0 เป็นต้นไป ค่า D5 จึงเปลี่ยนไปเรื่อยๆ

2. หน้าจอใน SKTool

สร้าง Component เหล่านี้

ComponentAddressหน้าที่
Bit Button (Set ON)LB0ปุ่ม Send Data — สั่งยิงข้อมูลไป Google Sheets
Numeric EntryD5แสดงและแก้ค่าตัวเลข (16-Bit Unsigned Int)
Bit ButtonM0สลับสถานะ M0 เพื่อเปลี่ยน Y0
Function Button—ตั้งค่า Wi-Fi หรือ Network ของ HMI

LB คือ Local Bit ซึ่งเป็น Address ภายใน HMI ไม่ใช่ใน PLC

3. พื้นฐาน HTTP และ JSON

HTTP

HTTP (Hypertext Transfer Protocol) คือโปรโตคอลที่เว็บไซต์ใช้รับส่งข้อมูลกัน มีฝั่ง Client (ผู้ใช้งาน) ส่ง Request ไปที่ Server แล้ว Server ส่ง Response กลับมา เช่นพิมพ์ URL ของเว็บไซต์ก็คือส่ง Request แล้วได้ไฟล์ HTML กลับมา

  • GET — ขอข้อมูลเฉยๆ
  • POST — Request ที่แนบข้อมูลไปด้วย เช่นส่งฟอร์ม ซึ่งตรงกับงานนี้ที่ส่งข้อมูลไปเก็บใน Sheet

Response มี Status Code เช่น 200 = ทุกอย่างโอเค, 404 = Not Found (สิ่งที่ขอไม่มีอยู่), 500 = Server พัง

JSON

JSON (JavaScript Object Notation) คือรูปแบบข้อมูลที่ HMI ต้องส่งไปให้ฝั่ง Google ไม่อย่างนั้นจะประมวลผลไม่ได้ ข้างในปีกกามีคู่ Key : Value คั่นด้วยคอมมา

{
  "partsCount": 42,
  "machineStatus": true
}

ชนิดข้อมูลหลักของ JSON คือ String, Number (จำนวนเต็มหรือทศนิยม เช่น 42, 36.9), Boolean (true / false), Null, Object และ Array — ตัวอย่างนี้ใช้แค่ Number กับ Boolean

4. สร้าง Google Sheets

  1. สร้าง Google Sheet ใหม่ใน Google Account ตั้งชื่อ เช่น hmi-database
  2. พิมพ์หัวคอลัมน์ไว้ดูเอง: machine-status, parts-count, timestamp
  3. เปลี่ยนชื่อ Sheet (แท็บด้านล่าง) เป็น data

5. เขียน Google Apps Script

Apps Script เป็นภาษาคล้าย JavaScript ไว้ Automate งานใน Google Workspace

  1. ที่เมนู Extensions เลือก Apps Script
  2. ตั้งชื่อโปรเจกต์ เช่น hmi-google-sheets
  3. ใส่โค้ดนี้ใน Code.gs โดยชื่อใน getSheetByName ต้องตรงกับชื่อ Sheet (data)
function doPost(e) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("data");
  var data = JSON.parse(e.postData.contents);

  /*
    {
      "Y0": true,
      "D5": 123
    }
  */

  var y0 = data.Y0; // true
  var d5 = data.D5; // 123
  var timestamp = new Date();

  sheet.appendRow([y0, d5, timestamp]);

  return ContentService.createTextOutput(JSON.stringify({"result": "success", "timestamp": timestamp}))
    .setMimeType(ContentService.MimeType.JSON);
}
  • JSON.parse(e.postData.contents) อ่าน JSON ที่ HMI ส่งมากับ POST Request
  • data.Y0 และ data.D5 ดึงค่าตาม Key ของ JSON
  • new Date() คือเวลาปัจจุบัน
  • sheet.appendRow([...]) ต่อแถวใหม่ท้าย Sheet ด้วย 3 ค่านี้

จะ Copy โค้ดไปใช้เลยก็ได้ หรือถ้าอยากเข้าใจมากขึ้นก็ไปศึกษาพื้นฐาน Programming เพิ่ม

6. Deploy เป็น Web App

  1. กด Deploy → New deployment
  2. Select type เลือก Web app
  3. Execute as: Me (บัญชีของเรา)
  4. Who has access: Anyone — เพราะ HMI ต้องเรียกสคริปต์นี้ได้
  5. กด Deploy แล้วกด Authorize access เลือกบัญชี แล้วกด Allow
  6. Copy URL ของ Web app (ขึ้นต้นด้วย script.google.com)

7. ตั้งค่า HTTP ใน SKTool

  1. ที่เมนูทางซ้ายดับเบิลคลิก HTTP ติ๊ก Use แล้วกด New
  2. แท็บ General ตั้งค่าดังนี้
ช่องค่าในคลิป
Namehmi-google-sheets (ตั้งอะไรก็ได้)
WebsiteURL ของ Web app ที่ Copy มา
ModePOST
Time out2000 ms
Headercontent-type:application/json
FormatJson (Advance)
Send modeBit trigger — Address LB0, OFF->ON
Automatic resetติ๊ก (ยิงเสร็จแล้ว Reset LB0 ให้เอง)
  1. แท็บ Send Json กด Add Value เพิ่มค่า 2 ตัว
NameData typeDataAddress
Y0boolAddressY0 ของ PLC (COM2)
D516-Bit Unsigned IntAddressD5 ของ PLC (COM2)

Name ต้องตรงกับ Key ที่สคริปต์อ่าน (data.Y0, data.D5)

8. ทดสอบ

  1. ต่อสาย USB-C เข้า HMI แล้ว Download โปรแกรมใหม่เพื่ออัปเดต HTTP Request ในเครื่อง
  2. กด Function Button เข้าหน้าตั้งค่า Network แล้วต่อ Wi-Fi
  3. เปลี่ยนสถานะ Y0 และค่า D5 ตามต้องการ แล้วกดปุ่ม Send Data (LB0)
  4. ถ้าเขียนโค้ดถูกและต่อ Wi-Fi แล้ว แถวใหม่จะขึ้นใน Google Sheets ทันที เช่น TRUE | 22 | 2/26/2024 15:03

ข้อมูลดิบใน Sheet นำไปประมวลผลต่อได้เลย

สรุป

HMI ที่ต่อ Internet ได้ส่งข้อมูลจาก PLC ขึ้น Google Sheets ได้เองด้วย HTTP POST + JSON โดยมี Google Apps Script ที่ Deploy เป็น Web App คอยรับข้อมูลและต่อแถวใหม่ ทำ Data Logging อัตโนมัติได้โดยไม่ต้องให้พนักงานมาดึงไฟล์ด้วย USB Drive ทุกวัน

บทถัดไป

MQTT Protocol กับ HMI: สร้างระบบ IoT สื่อสารไร้สาย

22 นาทีเริ่มต้น · Beginner